深度学习·神经网络·计算机视觉深度学习-推荐系统-CV-NLP深度学习

MobileNets论文解析

2019-03-23  本文已影响1人  rock4you

论文全称:

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

下载地址:
https://arxiv.org/pdf/1704.04861.pdf

论文核心思想:

本文对我们常见的卷积操作进行了改进,使得计算量得到了降低。

设:
输入图片F的大小是Df * Df * M,Df表示宽、高,M表示通道数。
stride为1,padding取使得输出图片的宽、高均等于输入图片的宽、高的值。
输出图片G的大小是Df * Df * N,Df表示宽、高,N表示通道数。

常规卷积操作的示意图:


常规卷积

设常规卷积中,卷积核G的大小是Dk * Dk * M * N,Dk表示宽、高,M表示通道数,N表示卷积核个数。
则常规卷积的操作需要执行的计算量为:
乘法次数:Dk * Dk * M * N * Df * Df,加法次数:Dk * Dk * M * N * Df * Df - 1
由于乘法更加耗时,所以重点考察乘法次数,则 Cost A= Dk * Dk * M * N * Df * Df
其中,Dk * Dk * M表示每个卷积核每滑动到一个位置需要执行的乘法的次数;Df * Df表示每个卷积核需要卷积的次数。前者等于每个卷积核的大小,后者等于输出图片的宽*高。

MobileNets论文提出的深度可分离卷积(Depthwise separable convolutions)由两部分组成:

第1部分:在深度上进行卷积(Depthwise convolution),即:在每一个通道的二维矩阵上进行卷积。

在这个部分中的卷积核是2维的,即卷积核的深度为1,输入图片的深度是多少,卷积核就有多少个。

depthwise convolution 示意图:


在深度上卷积

第2部分:在点上进行卷积(Pointwise convolution ),即:在二维矩阵每一个点上对所有的通道进行卷积。

在这个部分中的卷积核虽然是3维,但是宽和高均为1,输入图片的面积(宽*高的值)是多少,就有多少个卷积核。

pointwise convolution 示意图:


在点上卷积

最后,用一张图来描述完整的深度可分离卷积:


完整示意图

设深度可分离卷积中,第1步的卷积核K1大小是Dk* Dk * M,Dk表示宽、高,M表示通道数。
卷积核K1的每个通道分别与图片的每个通道进行卷积,得到输出图片的每个通道。
第1步的乘法次数为:Dk * Dk * M * Df * Df,其中Dk*Dk为卷积核每个通道的大小,Df * Df为每个卷积核需要遍历的位置数。

第2步的卷积核K2大小是1 * 1 * M * N,1表示宽、高,M表示通道数,N表示卷积核个数。
卷积核K2与上层输出图片中每个点对应的M个通道进行卷积。
第2步的乘法次数为:Df * Df * M * N,其中Df * Df为图片大小。

累计乘法次数为Dk * Dk * M * Df * Df + Df * Df * M * N
因此,Cost B = Dk * Dk * M * Df * Df + Df * Df * M * N

Cost A / Cost B = 1/N + 1/(Dk * Dk)

所以,论文提出的卷积方法的计算量小于常规卷积的计算量。

由上式可见,性能的提升主要与卷积核的个数和卷积核的宽、高有关,这3个参数越大,性能提升越明显。

如有问题,欢迎交流。

文中图片来自网络:
https://eli.thegreenplace.net/2018/depthwise-separable-convolutions-for-machine-learning/
侵删。

欢迎关注公众号
上一篇下一篇

猜你喜欢

热点阅读