MobileNet V1

2018-12-16  本文已影响0人  妖皇裂天

    对应论文是“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 sizeD_{k} 的联系而降低了计算复杂度。

    假设对维度是[D_{f} ,D_{f} ,M]的特征图处理后得到[D_{f} ,D_{f} ,N]的新特征图,卷积核对应的维度是[D_{k} ,D_{k} ],那么传统卷积操作的计算量是D_{k}*D_{k}*M*N*D_{f}*D_{f}  ,但是depthwise separable convolution的计算量是D_{k}*D_{k}*M*D_{f}*D_{f}+1*1*M*N*D_{f}*D_{f},其中,第一部分D_{k}*D_{k}*M*D_{f}*D_{f}是filter过程的计算量,第二部分1*1*D_{f}*D_{f}*M*N是combine过程的计算量。现在模型中卷积核的大小一般是3,所以depthwise separable convolution的计算量主要在于第二部分。

    而\frac{D_{k}*D_{k}*M*D_{f}*D_{f}+D_{f}*D_{f}*M*N }{D_{k}*D_{k}*M*N*D_{f}*D_{f}  } =\frac{1}{N}+\frac{1}{x_{k}^2}  ,由于N一般比较大,所以主要是x_{k}^2起主要作用。如果卷积核维度设置为[3,3],则可以将计算量减少8~9倍。

    图对比:

2种卷积方式的流程对比

    在提出Base MobileNet后,为了进一步降低模型的内存和计算量,作者提出了两个用于调节模型大小的参数——Width multiplier(宽度因子)和Resolution Multiplier(分辨率因子)。

    宽度因子\alpha :用于改变每一层特征图的channel数量,将输入channel数M和输出channel数N分别改为\alpha M\alpha N,这样计算量公式就变为D_{k}*D_{k}*\alpha M*D_{f}*D_{f}+\alpha M*\alpha N*D_{f}*D_{f} ,那么计算量和参数量也就减少了大概\alpha ^2 倍。

    分辨率因子\rho :用于改变输入图片的分辨率。其实设置不同的图片输入分辨率就隐含了设置不同\rho 这一操作。同样,此时计算量公式变为D_{k}*D_{k}*M*\rho D_{f}*\rho D_{f}+1*1*M*N*\rho D_{f}*\rho D_{f},计算量上减少了大概\rho ^2倍。

上一篇 下一篇

猜你喜欢

热点阅读