Mobilenets是Google针对手机的智能型嵌入式设备提出的一种轻量级深度卷积神经网络,该网络的核心为深度可分离卷积,该卷积可以分解为深层卷积(depthwise conv)和点对点卷积(Point conv)。Mobilenets一共有两个版本:MobilenetsV1,MobilenetV2。论文地址和论文代码如下:
MobileNetsV1论文地址: https://arxiv.org/abs/1704.04861
MobileNetsV2论文地址:https://arxiv.org/abs/1801.04381
MobileNetsV1/V2代码地址(caffe):https://github.com/shicai/MobileNet-Caffe
MobileNetsV1代码地址(TensorFlow):https://github.com/Zehaos/MobileNet
MobileNetsV2代码地址(Keras):https://github.com/xiaochus/MobileNetV2
1.MobileNet V1
(1)网络结构
MobileNet V1论文总体结构图如下,其核心就是由深层卷积(depthwise conv)和点对点卷积(Point conv)组成的深度可分离卷积。正是这种结构实现了在不降低网络性能的前提下减少网络参数和计算量。
(2)Depthwised卷积
接下来通过图文并茂的策略来阐述depthwise结构是如何实现的。下图所示为标准卷积核depthwise卷积的实现对比,我们可以发现两种卷积对于同样的输入图片,最后的输出是一致的。
最终卷积的参数量也得到了大大的减少,标准卷积的参数量为3*3*3*16。而depthwise卷积的参数量为3*3*1+1*1*3*16。下图把论文中的原图附上。
(3)实验结论
标准卷积与Depthwise卷积结果对比,从下图中我们可以发现Depthwise策略在不明显损失精度的情况下,其参数为标准卷积策略的1/7。
作者在论文中提出了两个超参数:宽度乘数和分辨率乘数 。宽度乘数用于改变输入输出通道数,减少特征图数量,让网络变瘦。分辨率乘数用于改变输入图片分辨率,同样也能减少参数。(下边图中MobileNet左边的系数就是各个通道的乘数)。
深瘦型网络与浅胖型网络结果对比,从下图中我们可以发现在相同量级的参数下深瘦型网络要比浅胖型网络效果好。
网络越瘦或网络输入分辨率越小,与之对应的结果也越差。
最终Mobilenet网络与Goognet以及VGG16的结果对比,我们可以发现Mobilenet有很好的性能。
2.MobileNet V2
MobileNet V2保留了MobileNet V1中提出的Depthwise卷积,并结合ResNet网络做出了两点改进:Inverted Residual Block;Linear Bottleneck。下图所示为MobileNet V2的网络结构,下面我们将着重介绍网络中的bottleneck,所述的改进也在此结构中。
改进一:Inverted Residual Block
如下图所示,ResNet的block先降维 (1/4倍)、卷积、再升维回到原始维度,而 MobileNet V2 则是先升维 (6倍)、卷积、再降维回到原始维度。两者正好相反。因此作者将MobileNet V2block称为称为 Inverted Residual Block。
改进二:Linear Bottleneck
作者认为激活函数在高维空间能够有效的增加非线性,而在低维空间时则会破坏特征,不如线性的效果好。而我们常用的激活函数ReLU正是非线性的。因此作者ReLU对不同维度输入的信息丢失做了对比。最终发现,当把原始输入维度增加到15或30后再作为ReLU的输入,输出恢复到原始维度后基本不会丢失太多的输入信息;相比之下如果原始输入维度只增加到2或3后再作为ReLU的输入,输出恢复到原始维度后信息丢失较多。因此在MobileNet V2中,执行降维的卷积层后面不会接类似ReLU这样的非线性激活层,也就是linear bottleneck的含义。
最终MobileNet V2的结果如下图所示,体现了上述改进的优越性。
网友评论