论文笔记——MobileNets(Efficient Convolutional Neural Networks for Mobile Vision Applications)

论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applicationsgit

  • MobileNet由Google提出的一种新的卷积计算方法,旨在加速卷积计算过程。
  • 为了减少网络模型大小,提出了两种比较暴力的裁剪方法。

(1) 直接对channel进行裁剪,这种随机砍掉一些channel,也太暴力了吧,砍多了效果确定很差,想一想都知道。github

(2) 减小输入图像的分辨率,也就是减少输入的尺寸大小。网络

  • 咱们仍是关注新的卷积计算方法,要作压缩的话,仍是另辟蹊径。

1. Full convolution VS. Depthwise separable convolution

1.1 Full convolution

  • M表示输入的channel, N表示输出的channel,Dk表示kernel size.
  • 咱们能够看到输出的每个channel,都跟全部的输入channel有关,也就是说,对于输出的一个channel,都是M个kernel与M个channel卷积之后的求和结果。
  • 差异就在这里!在depthwise separable中,每个输出的channel,只和一个输入的channel有关。

1.2 Depthwise separable convolution

  • 输入M个channel,那么输出也是M个channel,每个channel都是由一个kernel在一个channel卷积之后获得的结果,不在是和全部的输入相关了。这也就是为何名字叫作depthwise separable(深度级的分离,channel的分离)。google

  • 可是咱们发现输出只有M个channel,而咱们想要输出N个channel,这个时候咱们应该想到1*1的convolution,这个时候的卷积就是full convolution。这个时候输出的每个channel都和输入有关了,至关于输入的加权求和。因此1x1的卷积有联合(combine)的做用。3d

2. 计算量对比

  • 只要理解了两个的差异,不难算出计算直接的差异。

  • Dk表示kernel size, M表示输入的channel,也就是feature map的个数,N表示输出的channel。Df表示feature map的大小,也就是width和height, 上面这个式子再一次验证了咱们上面说的,输出的每个channel都和输入的全部channel有关。

  • 求和的左半部分,表示depthwise separable的计算量,能够看到输出为M个channel,每一个输出channel只和一个channel有关。blog

  • 求和的有半部分,表示1x1 pointwise convolution,能够看到每个输出channel,都和M个输入有关(M个输入的加权求和)。ci

  • 计算量较少比例get

3. 模型压缩

上面公式能够看到直接对输入的M个channel进行的压缩(随机采样)it

上面公式能够看到对不只对输出的channel进行了采样,对输入图像的分辨率也进行了减少。io

4. 对比实验

4.1 参数量的对比

4.2 实验结果

5. 实现

6. 总结

  • 根据实践经验的总结,这种新的卷积计算方式,对运算速度的改进仍是比较明显的,精度影响不是很大,至于文中说的两个裁剪方法,我以为仍是慎重使用比较好。
  • 如今市面上已经有不少裁剪方法了,不必用这么暴力的进行裁剪来压缩模型大小。
相关文章
相关标签/搜索