对应论文是“MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications”。
MobileNet V1的关键在于提出了Depthwise Separable Convolution(深度可分卷积)来代替传统的卷积。传统卷积对特征图的处理是one step,但是depthwise separable convolution将one layer拆分为two layers。第1层对每个channel的特征图进行filter操作,第2层利用1*1卷积核将不同channel的信息进行整合,调整输出的维度。这样切成两步后由于打破了输出channel数量N和kernel size的联系而降低了计算复杂度。
假设对维度是[,
,
]的特征图处理后得到[
,
,
]的新特征图,卷积核对应的维度是[
,
],那么传统卷积操作的计算量是
,但是depthwise separable convolution的计算量是
,其中,第一部分
是filter过程的计算量,第二部分
是combine过程的计算量。现在模型中卷积核的大小一般是3,所以depthwise separable convolution的计算量主要在于第二部分。
而,由于N一般比较大,所以主要是
起主要作用。如果卷积核维度设置为[3,3],则可以将计算量减少8~9倍。
图对比:

在提出Base MobileNet后,为了进一步降低模型的内存和计算量,作者提出了两个用于调节模型大小的参数——Width multiplier(宽度因子)和Resolution Multiplier(分辨率因子)。
宽度因子:用于改变每一层特征图的channel数量,将输入channel数
和输出channel数
分别改为
和
,这样计算量公式就变为
,那么计算量和参数量也就减少了大概
倍。
分辨率因子:用于改变输入图片的分辨率。其实设置不同的图片输入分辨率就隐含了设置不同
这一操作。同样,此时计算量公式变为
,计算量上减少了大概
倍。
网友评论