1. MobileNet v1
MobileNet v1就是把VGG中的卷积都换成了深度可分离卷积 ,还有一个不同是采用的是ReLU6,在x为6的时候有一个边界上限,论文中提到说这样“可以在低精度计算下具有更强的鲁棒性”。 创新点:
深度可分离卷积(Depthwise Separable Convolutions) 将卷积分为深度卷积(Depthwise Convolution)与逐点卷积层(Pointwise Convolution)。深度卷积每个卷积核只处理1个输入特征通道 ,而不是M个输入特征通道,这样大大减少了运算量。然而这里面有个问题,也就是通道与通道之间的联系被切断了 ,所以后面需要再用 1x1 大小的逐点卷积层来处理M个特征通道之间的信息。可以减少8—9倍的参数量。
2. MobileNet v2
不少学者发现在深度卷积 中,不少卷积核是空的,这也就说明有不少没有参与运算。而v2的作者认为,这种情况主要是因为ReLU的原因。也解释了ReLU在低维特征空间运算中会损失很多信息,而在高维空间中会保留很多有用信息。因此就提出了the inverted residual with linear bottleneck 。
Linear Bottleneck(图中Linear):就是把PW的ReLU6都换成了线性函数。 因为在激活函数之前,已经使用1*1卷积对特征图进行了压缩,而ReLu激活函数对于负的输入值,输出为0,会进一步造成信息的损失,所以使用Linear激活函数。 Expansion layer(图中DW前的1*1):为了让DW(depthwise Conv)在高维空间上工作,保留有用信息,因此在DW之前加了一个PW(pointwise Conv d=6)用来扩张 通道。 (1) 因为MobileNet 网络结构的核心就是DW conv,此卷积方式可以减少计算量和参数量。而为了引入shortcut结构,若参照Resnet中先压缩特征图的方式,将使输入给Depth-wise的特征图大小太小,接下来可提取的特征信息少,所以在MobileNet V2中采用先扩张后压缩的策略。 (2) 激活函数的使用会对低维特征造成大量损失,因此在扩张通道数之后,对高维特征造成的损失较小。 Inverted residuals:在深度可分离卷积中又加入了一个shortcut。 普通残差是两头channel多,中间少,目的是减小计算量。倒残差结构是中间大,两头少,目的是减小信息损失。维度小时使用非线性激活函数会损失信息,而维度越大越不容易损失。因此使用倒残差结构,在维度较大的中间部分使用ReLU6激活函数,减少信息损失。
3. Mobilenet v3
使用了NAS(神经网络架构搜索) 引入基于squeeze and excitation结构的轻量级注意力模型(SE) 加入h-swish激活函数代替Relu。 网络首尾做了些细节上的创新,用了5*5的卷积
4. ShuffleNet
认为1*1卷积的计算复杂度过高,为了降低复杂度提出组卷积 ,每个组内进行卷积,并进行通道Shuffle来进行通道间信息的交换。
Ref
[1] https://www.likecs.com/show-203328580.html [2] https://blog.csdn.net/shayinzzh/article/details/124249968