前言:
本部分主要记录下我对MobileNets以及EfficientNet的个人理解(如果没有了解过EfficientNet,这部分可以忽略)。
在读MobileNets论文的过程中,发现文中很大一部分与我之前读的EfficientNet(可能我阅读的顺序有点问题)有相似之处。首先,共同点两者都研究了网络的width(即输出的channel)以及分辨率(resolution)对网络性能的影响(包括参数量、计算量、准确率);不同点在于:(1)EfficientNet还深入研究了网络深度(depth)对网络性能影响,MobileNets只是在实验部分简单对比了更浅的网络和channel更窄的网络在参数量相同时哪个效果更好;(2)两者本质的目的不同:EfficientNet是在算力规定的前提下去寻找最优的深度、宽度以及分辨率优化网络的准确率;MobileNets是通过引入参数缩减因子来压缩模型,使得模型尽可能小同时保证输出效果变化不大,从而能够部署到一些嵌入式设备中。
目录
一、摘要
作者提出了一种能够部署在设备上的网络结构MobileNets,这种网络使用了depthwise卷积,同时引入了两个超参数来权衡准确率和延迟。之后作者通过大量实验说明了MobileNets的有效性。
二、MobileNets网络结构
MobileNets网络结构如上图所示,需要注意的是depthwise Conv结构中输入channel=输出channel,并且每个滤波器的channel都为1。
MobileNets将传统的卷积分成了两步,首先通过Depthwise卷积对特征进行提取,输出的每个Feature map是原始图像单个channel的特征,之后通过1*1的卷积将各个channel的特征进行拼接(每个1*1的卷积核的channel等于Depthwise输出的Feature map的数量)。这一过程可以用下图
进行表示:
Depthwise Conv
传统卷积中每个滤波器的channel与输入特征图的channel相同,这种情况下参数量为×
×M×N,计算量为
×
× M× N ×
×
,(M为输入channel,DK为卷积核的尺寸,N为卷积核的个数,DF为输出特征图的尺寸);Depthwise Conv的参数量为DK ×DK ×M,计算量为
×
× M ×
×
,之后紧接着1 x 1卷积的参数量为1 x 1 x M x N,计算量为1 x 1 x M x N x
x
,这样采用两步卷积的方式总计算量为
×
× M ×
×
+M x N x
x
,相对传统卷积来说,计算量为原来的
(即若Depthwise Conv卷积核尺寸为3 x3时候,计算量为原来的1/9)。
三、缩放因子
作者引入了两个参数缩放因子、
(均为小于等于1的数),分别来缩小网络的宽度(即channel,输入输出channel均要缩小)以及减小图片分辨率(resolution)。
当单独对width进行缩小时,计算量变为 ×
×
M ×
×
+
M x
N x
x
;当单独对resolution进行缩小时, 计算量变为 ×
×
M ×
×
+
M x
N x
x
。可以看出,通过引入这两个参数极大减少了计算量(参数量减少了,但网络的性能会不会变差很大,接下来就是实验验证)。
四、实验验证
内部验证(与MobileNet自身相比)
实验一(验证Depthwise的可行性):
作者对比了使用Depthwise 卷积与使用传统卷积的效果(参数量大约变为原来的1/8,但准确率却仅仅减少了1个点)。
实验二(对比了channel和网络深度depth对准确率的影响):
作者在参数个数类似的情况下,对比了channel和网络深度depth的影响,结果表明channel更窄的网络性能要比层数更浅的网络性能更好(即减小网络的深度对性能影响较大)。
实验三(对比了不同width缩放因子对准确率的影响)
可以看出,当取0.5、0.75时候,MobileNets在ImageNet数据集上准确率下降较为平滑,而取0.25时候,效果较差。
实验四(对比了不同分辨率对准确率的影响)
外部验证(与别的网络作比较)