与VGG网络比较:
深度可分离卷积
由深度卷积(depthwise convolution)和逐点卷积(pointwise convolution)组成。
如:输入通道M、输出通道N、卷积核K*K、输入特征图大小F*F ,(输出通道是卷积核个数)
标准卷积计算量:M*N*K*K*F*F
深度卷积计算量:M*K*K*F*F (输出通道=输入通道=卷积核个数)
逐点卷积计算量: N*M*1*1*F*F (正常卷积,卷积核为1)
深度可分离卷积计算量:K*K*M*F*F+M*N*F*F
计算比率:标准/深度分离
(K*K*M*F*F+M*N*F*F)/(K*K*M*N*F*F)=(K*K+N)/(K*K*N)=1/N+1/(K*K)
若卷积核K=3,则计算量降低9倍左右。
与VGG直筒型结构类似(将深度分离卷积模块替换为标准卷积)。
与mobilenetV1比较:
倒残差结构:Inverted Residuals
对比残差块,倒残差体现在中间深度分离层维度比较宽。先1*1卷积提升通道数,再深度分离卷积,最后1*1降低通道。使用 ReLU6 激活函数和线性激活函数。
网络结构:
1、加入SE模块
在倒残差结构中加入SE结构
SE结构:
输入特征图H*W*C,分别对每一通道做全局池化得到1*1*C个值,经过第一个全连接层(压缩r)得到1*1*C/r,经过第二个全连接层恢复1*1*C,再乘以原有的对应通道得到H*W*C。
2、更新激活函数
MobileNetV3-large:
MobileNetV3-small
主要思路是使用Group convolution和Channel shuffle改进ResNet。
下图(a)就是加入Depthwise的ResNet bottleneck结构,而(b)和(c)是加入Group convolution和Channel Shuffle的ShuffleNet的结构
Group convolution( 组卷积):将输入通道划分为G组再卷积运算,计算量降低。
输入通道M,输出通道N,特征图大小H*W,卷积核K*K
标准计算量:M*N*H*W*K*K
分组计算量:M*(N/G)*H*W*K*K
缺点:组与组之间没有信息交换,影响模型的表示能力。
Channel Shuffle(通道洗牌):打乱通道顺序,提升组间信息交换。
假设分为g组,每组通道数n=M/g
输入:W*H*M=g*n*H*W
经H*W平铺s,g*n*s沿着g和n轴转置,恢复。
对比V1,V2中添加了通道分离,其主要实现网络提速功能。
(a) ShuffleNet v1 ,(b)ShuffleNet v1 降采样, (c)ShuffleNet v2,(d)ShuffleNet v2 降采样
(c)中ShuffleNet v2 模块先使用Channel Split操作分割通道。
ShuffleNet v2网络中未使用GConv组卷积操作。
fire module:由squeeze 层和expand 层构成。
squeeze层:采用1*1卷积核,对输入通道数进行压缩。
expand层:由1*1和3*3的卷积层,对特征图融合。
s1:表示squeeze 层中 1x1卷积核的数目。
e1:表示expand 层中 1x1卷积核的数目。
e3:则表示expand 层中 3x3卷积核的数目。
在每个fire module内部s1要远小于e1 + e3,它们满足s1= SR * (e1+ e3)。而SR称为缩减系数,在这里只有0.375=s1/(e1+e3)=3/(4+4)。
Xception是对Inception v3的改进,主要是采用depthwise separable convolution来替换原来Inception v3中的卷积操作。
论文地址: https://arxiv.org/abs/1911.11907
https://github.com/huawei-noah/ghostnet.
GhostNet是使用一些计算量更低(Cheap Operations)的操作去生成这些冗余的特征图,保证精度的情况下,减少模型的参数量与提高模型的执行速度。
Ghost Module:identity+线性运算Φ(指深度可分离卷积操作)。
特点:Ghost Module输出特征图数(b)=普通卷积输出(a),且计算量低。
首先使用少量卷积核(正常卷积核数的一半)运算获得的输出,然后分为两步操作:
identity:上一步卷积输出。
线性运算:上一步卷积输出的特征图,进行逐个深度分离卷积。
最后两部分合并输出。
假设有1个identity和s-1个ghost特征图(1个特征图有s-1个冗余),则FLOPs减少s倍。
Bottlenecks
将Ghost Module替换为Conv就是残差结构,类似于MobileNetV2。
第一个Ghost Module增加通道数,第二个Ghost Module减少通道数。
网络结构:
#exp表示expansion size,#out表示输出通道数,SE表示是否使用SE模块。
MobilenetV1、V2、V3系列详解_Turned_MZ的博客-CSDN博客_mobilenetv1,v2,v3
MobileNetV1,V2,V3_David-Chow的博客-CSDN博客
《MobileNetV2: Inverted Residuals and Linear Bottlenecks》_胖胖大海的博客-CSDN博客
轻量化网络ShuffleNet MobileNet v1/v2/v3( MobileNet)学习笔记_just-solo的博客-CSDN博客_mobilenet shufflenet
ShuffNet v1 和 ShuffleNet v2 - 知乎
这就是神经网络 5:轻量化神经网络--MobileNet V1、MobileNet V2、ShuffleNet V1、ShuffleNet V2_yuanlulu的博客-CSDN博客_轻量化神经网络
轻量化网络ShuffleNet MobileNet v1/v2/v3( MobileNet)学习笔记_just-solo的博客-CSDN博客_mobilenet shufflenet
深度解读SqueezeNet网络结构_东城青年的博客-CSDN博客_squeezenet网络结构
超级详细易懂的GhostNet解析_猴子请来的救兵�的博客-CSDN博客_ghostnet