轻量化卷积网络: Efficient Convolutional Neural Networks for MobileVision Applications(MobileNet)

MobileNet使用了一种称之为depth-wise的卷积方式来替代原有的传统卷积,减少了卷积核的冗余表达。在计算量和参数数量明显下降之后,卷积网络可以应用在更多的移动端平台。在论文中作者有做定量计算使用depth-wise带来的计算量的下降,而且还提出了两个简单的超参数,可以灵活地进行模型性能和inference时间进行trade-off。

Depthwise Separable Conv

MobileNet的基本单元是深度级可分离卷积(depthwise separable convolution)。深度级可分离卷积其实是一种可分解卷积操作(factorized convolutions),其可以分解为两个更小的操作:depthwise convolution 和pointwise convolution。假设输入的feature maps的大小为$MD_FD_F$,$D_F$表示输入的宽和高,$M$表示输入的通道数。卷积核大小为$D_k*D_k$,输出通道数为N,则传统(标准)卷积计算量为:


depthwise Convolution:即逐通道进行卷积,一个卷积核负责一个通道,一个通道只被一个卷积核滤波;同样,其中M是输入通道,$D_k$ 是卷积核的尺寸,则有


Pointwise Convolution:将上一步得到的depthwise Convolution得到的feature map再[串]起来,其实就是要做到输出的每一个feature map中都要包含输入的feature map的信息。实现方式就是使用$1*1$卷积。同样可以得到这步的计算量,输出通道数为N:


可以得到使用这种卷积方式的总的计算量

因此,将传统卷积分解为depth-wise方式的卷积操作,可以计算出理论的计算效率的提升比例为:

举一个具体的例子,给定输入图像的为3通道的224x224的图像,VGG16网络的第3个卷积层conv2_1输入的是尺寸为112的特征图,通道数为64,卷积核尺寸为3,卷积核个数为128,传统卷积运算量就是

而使用depth-wise方式的卷积,计算量为:

在这一层里,MobileNet所采用卷积方式的计算量与传统卷积计算量的比例为:

网络结构


MobileNet的卷积单元如上图所示,左边是标准的卷积,右边是depth-wise方式的卷积,每个卷积操作后都接着一个BN操作和ReLU操作。在MobileNet中,由于3x3卷积核只应用在depthwise convolution中,因此95%的计算量都集中在pointwise convolution 中的1x1卷积中。而对于caffe等采用矩阵运算GEMM实现卷积的深度学习框架,1x1卷积无需进行im2col操作,因此可以直接利用矩阵运算加速库进行快速计算,从而提升了计算效率。