整理备忘
目录
https://arxiv.org/abs/1704.04861
MobileNets基于流线型架构,使用深度可分离卷积来构建轻量级的深度神经网络。
以深度可分离卷积为组件,构建的网络结构如下:
Figure3是深度可分离网络组件Conv dw,Table1是MobileNetV1网络结构。前五次通过Conv dw进行下采样,最后一次通过Avg Pool下采样变成1x1x1024,再接分类层,网络结构简单。
?图片来源:轻量级神经网络“巡礼”(二)—— MobileNet,从V1到V3 - 知乎
普通卷积:使用大小为5x5x3的卷积,去和12x12x3特征图点乘求和,得到8x8的特征图,有256个卷积去卷积,就得到8x8x256的特征图:
深度可分类卷积:将普通卷积(核大小5x5x3)拆分成深度卷积(核大小5x5x1),逐点卷积(核大小1x1x3),过程如下图。
(1)深度卷积,逐个通道去卷积,一个卷积(核大小5x5x1)去卷12x12x3,得到8x8x3特征图
(2)逐点卷积(就是1x1的卷积),逐个点去卷积,一个卷积(核大小1x1x3)去卷8x8x3,得到8x8x1特征图
256个卷积去卷,就得到8x8x256特征图
(1)普通卷积的计算量:
?D_k是卷积核大小,M,N分别是输入通道数,输出通道数;D_F是特征图大小。
(2)深度卷积的计算量:
(3)两者比例,输出通道数N和卷积核大小D_k越大,深度可分离卷积计算量相对就越小:
卷积核大小是3x3,计算量下降到原来的1/9到1/8.?
将普通卷积换成深度可分离卷积后,实验效果,计算量下降了很多,但是精度没有下降多少。
不仅计算量下降了很多,总参数数量也下降了。
(1)普通卷积:
对于一个普通的卷积层,假设输入通道数为M,输出通道数为N,卷积核大小为(D_K, D_K, M),那么参数数量可以为,一个卷积核的参数量是M*D_K*D_K,有N个卷积核:
(2)深度可分离卷积:
深度卷积:对每个输入通道进行单独的卷积(核大小是5x5x1),只有一个深度卷积核,所以
逐点卷积:在深度卷积之后,应用1×1的卷积(核大小是1x1xM)来组合输出通道,有N个逐点卷积核,所以参数数量为:
?深度可分离卷积,总参数量是:
(1)MobileNetV2引入了残差连接,有助于梯度的流动,提高了网络的训练效率;
(3)MobileNetV2通过调整超参数,如宽度乘数(Width Multiplier)和分辨率乘数(Resolution Multiplier),提供了更大的灵活性,可以根据应用场景进行调整。
https://arxiv.org/abs/1801.04381
(1)同样是5次下采样,最后是一次AvgPooling接分类层。
(2)不同的是组件不再是一种深度可分离卷积,而是水桶型结构:先1x1卷积通道升维,再深度卷积,再接1x1卷积(也就是逐点卷积)降维,这里与Resnet刚好相反(所以叫Inverted Residuals),ResNet 先降维(0.25倍)、卷积、再升维,是沙漏型结构。
(3)步长为1时,再接一个跳层连接。
其中t是扩展通道的倍数。
为何要升维度呢?因为深度卷积没有升维度的能力,如果输入特征通道很少,则深度卷积只能在低维度上工作。所以先1x1卷积进行升维度。
左图分类,右图分割任务。参数量更少,速度更快,准确率更高(实际哪个好要自己试)。?
?Searching for MobileNetV3
https://arxiv.org/abs/1905.02244
(1)提出一种新的激活函数Hard Swish;
(2)引入了通道注意力机制(Channel Attention),以便网络能够更好地关注对特定任务重要的通道,从而提高了模型的性能。
(3)通过NAS,提供了两个不同的版本MobileNetV3,Large和Small,以适应不同的应用场景。MobileNetV3-Large在准确性上更为注重,而MobileNetV3-Small则更注重轻量化和快速推理。
去掉V2最后几层卷积(黄色区域),然后后面接一个Avg-pooling再接分类层。
其中网络组件搞得更加复杂,V2和V3对比。
网络结构:?
图像分割任务,V3-Small在cpu下,1024x2048图片用时1.21s,512x1024用时0.327s.
?