Depthwise Separable Convolution
分为
Depthwise(DW)卷积PointWise(PW)卷积,参考Google的Xception。用于提取特征,相较于常规卷积操作,其参数量和运算成本较低。
常规卷积计算公式:
Depthwise Convolution:一个卷积核负责一个通道,即一个通道只被一个卷积核卷积。如:输入是5x5x3的RGB图像,DW Conv完全是在二维平面内进行,卷积核的数量与输入的通道数相同(输入通道数==输出通道数),故经过运算后得到三个feature map。其
Pointwise Convolution:卷积核尺寸为1x1xM,M为上一层通道数。该步骤的卷积运算会将上一步的feature map在深度方向进行加权组合,最终得到新的feature map。其

MobileNet-V1 将VGG中的卷积替换成深度可分离卷积,及ReLu6(优点?)。
DW-Conv大大降低计算量,并且K*K DepthWise + 1*1 PointWise结构性能上也接近K*K Conv,但实际训练后发现Depthwise的部分kernel是空的(why?)。MobileNet-V2 轻量化卷积神经网络。
Inverted Residual。ResNet中的Residual Block先经过1*1的Conv、将feature map通道数“压”下来,再经过3*3的Conv目的是特征提取,最后再经过1*1的Conv,将feature map通道数再“扩张”回去。即先“压缩”,再“扩张”。而Inverted Residual就是先“扩张”,再“压缩”。扩张的目的是提升通道数以获取更多的特征。Linear Bottleneck。为了避免Relu对特征的破坏,最后一层的Conv不再采用Relu而是Linear。

MobileNet-V1 and MobileNet-V2:
DW Conv前增加了1*1 Conv的“扩张”层,目的是提升通道数以获取更多特征;- 使用
Linear替换ReLU6,目的是防止ReLu破坏特征(由于其对于负输入,输出全是0,而本来的特征已经被“压缩”,再经过Relu的话又会“损失一部分”特征,故采用Linear); - MobileNet-V1采用
DepthWise Separable Convolution减少运算量及参数量,未采用shortcut的方式。而ResNet、DenseNet均采用shortcut模块,证明该模块的有效性,故MObileNet-V2也采用shortcut模块。 - 整个网络除去最后的
avgpool,而是采用stride=2来进行下采用,此做法已经成为主流(why?)。

Bottlenck结构

注:stride=2时,不采用shortcut。
注:t表示通道“扩张”倍数,c表示输出通道数,n表示重复次数,s表示步长。
问题:第五行,stide=2,但输出分辨率未改变;只有17个bottleneck而不是19个。
