概述
MobileNet V1的问题
MobileNet V1的结构非常简单,是类似VGG一样的直筒型。这种结构的性价比不高,后续一系列的ResNet,DenseNet等结构证明了通过特征复用可以极大的提高网络的性价比。Depthwise Conv确实大大减少了我们的计算量。在实际使用的时候,我们发现Depthwise部分的kernel比较容易训练废掉,训练之后发现Depthwise训练出来的kernel有不少都是空的。因为Depthwise每个kernel dim相对于普通Conv要小的多,过于小的kernel dim加上ReLU的激活影响下,使得神经元输出很容易变为0,所以就学废了。ReLU对于0的输出的梯度维0,所以一旦陷入0输出,就没法恢复了。我们还发现,这个问题在定点化低精度训练的时候会进一步放大。
结构特点
主要架构还是将MobileNet V1和残差网络ResNet的残差单元结合起来,用Depthwise Convolution代替残差单元的bottleneck,最重要的是和residual block相反,通常的residual block先是经过1 * 1卷积,降低特征图通道数,任何再进行3 * 3卷积,最后重新经过1 * 1卷积将特征图的通道数扩张回去。MobileNet V2中间的3 * 3卷积变成Depthwise,计算量很少,所以先经过一个1 * 1的卷积层把特征通道数进行扩张,目的为了提升通道数,获取更多的特征,再进行3 * 3深度卷积,再使用1 * 1卷积进行通道压缩。而且为了避免ReLU对特征的破坏,用线性层替换通道数较少层后的ReLU非线性激活。