为什么MobileNet v2比v1深度更深,但是参数量和速度反而减少

MobileNet v2基础结构中增加的升维PW卷积,可以将通道数扩大到较高的维度。
在卷积的计算过程中,参数量计算公式为CinKhKw*Cout,可以看出在卷积核固定的情况下,通道数越多,参数量也就越大。
MobileNet v1使用的可分离卷积,将Cin和Cout的乘法分离为两个较小因子乘法的和,因此减少了参数量,但其基于VGG16的网络结构,在深层512(包括重复5次的卷积层)以及1024通道的运算仍然具有很大的参数量。
为什么MobileNet v2比v1深度更深,但是参数量和速度反而减少_第1张图片
MobileNet v2带来的改进是纺锤形Block,将一个卷积操作继续分解为三个乘法的和,这样一来使得每个Block之间可以以较小的通道数[24 32 64-96 160-320]进行传递,二来在Block中升维[144 192 384-576 960-1920]可以学习到更多特征。将CONV1x1层的参数数量和计算量直接减小若干倍(论文中6倍),轻微增加DWCONV3x3的通道数以保证的网络容量。
二者详细的参数量计算比较如下:

MobileNet v1:

为什么MobileNet v2比v1深度更深,但是参数量和速度反而减少_第2张图片

每一层的参数(只计算卷积核和全连接神经元):

输入尺寸 参数量 备注
3x3x3x32 224,224,3 864 ----
dw 3x3x32 112,112,32 288 ----
pw 1x1x32x64 112,112,32 2048 ----
dw 3x3x64 112,112,64 576 ----
pw 1x1x64x128 56,56,64 8192 ----
dw 3x3x128 56,56,128 1152 ----
pw 1x1x128x128 56,56,128 16384 ----
dw 3x3x128 56,56,128 1152 ----
pw 1x1x128x256 28,28,128 32768 ----
dw 3x3x256 28,128,256 2304 ----
pw 1x1x256x256 28,28,256 65536 ----
dw 3x3x256 28,28,256 2304 ----
pw 1x1x256x512 14,14,256 131072 ----
dw 3x3x512 14,14,512 4608 x5
pw 1x1x512x512 14,14,512 262144 x5
dw 3x3x512 14,14,512 4608 ----
pw 1x1x512x1024 7,7,512 524288 ----
dw 3x3x1024 7,7,1024 9216 ----
pw 1x1x1024x1024 7,7,1024 1048576 ----
fc 1024x1000 1,1,1024 1024000 ----
All \ 4209088 4.2M

MobileNet v2:

为什么MobileNet v2比v1深度更深,但是参数量和速度反而减少_第3张图片

每一层的参数(只计算卷积核和全连接神经元):

输入尺寸 参数量 备注
3x3x3x32 224,224,3 864 ----
dw 3x3x32 112,112,32 288 ----
pw 1x1x32x16 112,112,32 512 ----
pw 1x1x16x(16x6) 112,112,16 1536 x2
dw 3x3x(16x6) 112,112,(16x6) 864 x2
pw 1x1x(16x6)x24 56,56,(16x6) 2304 x2
pw 1x1x24x(24x6) 56,56,24 3456 x3
dw 3x3x(24x6) 28,28,(24x6) 1296 x3
pw 1x1x(24x6)x32 28,28,(24x6) 4608 x3
pw 1x1x32x(32x6) 28,28,32 6144 x4
dw 3x3x(32x6) 28,28,(32x6) 1728 x4
pw 1x1x(32x6)x64 28,28,(32x6) 12288 x4
pw 1x1x64x(64x6) 28,28,64 24576 x3
dw 3x3x(64x6) 14,14,(64x6) 3456 x3
pw 1x1x(64x6)x96 14,14,(64x6) 36864 x3
pw 1x1x96x(96x6) 14,14,96 55296 x3
dw 3x3x(96x6) 7,7,(96x6) 5184 x3
pw 1x1x(96x6)x160 7,7,(96x6) 92160 x3
pw 1x1x160x(160x6) 7,7,160 153600 x1
dw 3x3x(160x6) 7,7,(160x6) 8640 x1
pw 1x1x(160x6)x320 7,7,(160x6) 307200 x1
1x1x320x1280 1,1,320 409600 ----
1x1x1280x1000 1,1,1280 1280000 ----
All \ 2958440 2.96M

由于只计算了卷积层参数,和论文3.4M的参数量有所出入(怀疑论文是把最后一个Block算了两遍?还是计入了BN等层参数?)

把v1和v2重复量最多的结构和尺寸相同的结构拿出来比较:

输入尺寸 参数量 备注
v1 dw 3x3x512 14,14,512 4608 x5
v1 pw 1x1x512x512 14,14,512 262144 x5
v2 pw 1x1x32x(32x6) 28,28,32 6144 x4
v2 dw 3x3x(32x6) 28,28,(32x6) 1728 x4
v2 pw 1x1x(32x6)x64 28,28,(32x6) 12288 x4
v2 dw 3x3x(64x6) 14,14,(64x6) 3456 x3
v2 pw 1x1x(64x6)x96 14,14,(64x6) 36864 x3
v2 pw 1x1x96x(96x6) 14,14,96 55296 x3

可以看到v2其实是把每个block固定成纺锤形的同时也变瘦了,通道数没有扩展到v1的大尺度,而且由于分离1x1卷积的存在,参数量都比v1要小。

你可能感兴趣的:(为什么MobileNet v2比v1深度更深,但是参数量和速度反而减少)