轻量级网络汇总:Inception,Xception,SqueezeNet,MobileNet v123Next,ShuffleNet v12,SENet,MNASNet,GhostNet,FBNet

  • Post author:
  • Post category:其他



轻量级网络汇总:


Inception,Xception,SqueezeNet,MobileNet v123Next,ShuffleNet v12,SENet,MNASNet,GhostNet,FBNet


Inception

提出卷积的时候,通道卷积和空间卷积是没关系的,最好分开搞,不要一起搞(没有理论证明,只是实验发现)

网络结构就是1×1, 1×1->3×3, avgPool->3×3, 1×1->3×3->3×3,这4路分开过然后concat

Xception, google.

Extreme的Inception, 在InceptionV3 上进行改进,他的结构是先统一过1×1,然后分开分别过3×3,跟depth-wise conv 不同的是,depth-wise conv是先分通道卷积,然后1×1,这里是1×1,然后分通道卷积。


SqueezeNet, ICLR2017,


伯克利,斯坦福

再Alexnet的基础上,把3×3换成1×1,减少channel数,把降采样后移。

使用的是Fire模块,就是先1×1卷积作为squeeze,然后1×1和3×3 结果cancatnate作为expand

虽然减少参数,减少计算量,但是加深深度,实际速度也很慢,参数减少一方面是换卷积核,另一方面是他们自己的模型压缩工作。


Mobilenet v1, CVPR2017, google

采用深度可分卷积(可分卷积还有空间可分卷积,类似FM,深度可分卷积是14年由一个博士论文提出来的,不是mobilenet),普通卷积先深度卷积(相当于分组卷积,组数等于channel数)然后1x1point卷积。普通卷积计算量为FFKKMN, 深度可分卷积计算量为FFKKM + FFMN, 计算量下降1/N + 1/(K*K)。但是在GPU上有时候加速不明显,因为GPU对于depth width卷积优化不明显。

Mobilenet block结构为3×3 depthwise conv->BN->ReLU6->1×1 conv->BN->ReLU, 普通卷积block结构为3×3 conv->BN->ReLU。其中ReLU6在低精度设备中效果更好ReLU(6)=min(max(0, x), 6)。


ShuffleNet v1, CVPR2017, Face++

使用group  convolution和channel shuffle。其中group convolution不是原创,从AlexNet就有,shuffle是。

用shuffle替换掉mobileNet中的1×1卷积,同样为了达到channel之间的交互目的,但是减少了1×1卷积的计算量。在shuffle的时候,把原来每组feature有序重组,而不是完全随机,如123,456,789重组为147,258,369.

同时shuffleNet的bottlenetck的特征降采样了, 主路用的是1x1GConv->shuffle->3×3 stride=2->1x1GConv,旁路是3x3AVGPool stride=2, 最后不用加而是concat。

提到小型网络要多使用通道


ShuffleNet V2,  2018

指出模型的实际速度,与FLOPs, 内存访问时间都有关。实验分析了,通道数,group操作数,网络模型分支数和Elementwise操作数对模型速度的影响。有以下结论:

卷积层的输入和输出特征通道数相同时MAC(内存访问损失时间)最小

过多的Group操作会增大MAC

模型中的分支数量越少,模型速度越快

Elementwise操作的时间消耗比FLOPs上体现的要多

通过这几个结论,设计了新的网络结构,然后对比试验,相同FLOPs数量,更高精度,速度更快。


MoblileNet v2, 2018, google

引入inverted residuals和linear bottlenecks。使用了skip connection

原始残差模块为 1×1降维->3×3 conv->1×1升维,这样可以减少3×3的计算量。但是inverted residuals是先升维在depthwise卷积在降维,1×1升维->3×3 depthwith conv->1×1降维,提前升维,提取更多高维信息。

还发现ReLU对低维信号损失很大,所以把降维后也就是最后一个激活层换成线性激活(之前的不用,因为之前的是高维)。


SENet, cvpr2018, Momenta


中科院大学

普通卷积之后,再channel上用Global Average Pooling,得到一个1x1xC的向量,这个过程叫Squeeze,然后过两层全连接层,叫做Excitation,然后用sigmoid,然后结果乘回去。其实就是一种attention


MobileNet v3, 2019, google

使用NAS搜索

最后几层减少,提前进入avg-pooling.

使用h-switc作为激活函数

引入SE模块,作为轻量级attention模块


FBNet CVPR2019

Differentiable NAS, 使用Gumbel Softmax将候选操作使用softmax函数进行混合,将搜索空间变成连续函数,目标函数变成可谓函数,然后直接提度下降, loss由准确率和速度loss组成。


MNASNet CVPR2019, google

使用强化学习思路的NAS


MobileNext, ECCV2020,


依图

倒残差结构使得优化过程中梯度回传抖动

skip connection影响梯度回传

更宽的网络可以解决梯度混淆问题

提出sandglass block, 实际是嵌套了两个depth width的ResNet,也就是input->1×1 降维 ->depth width 3×3 + ReLU6->1×1 降维 + Linear->1×1升维 + ReLU6 ->depth width 3×3 + linear->1×1升维->output,中间两个skipconnection, 输入输出一个,第一个1×1和最后一个1×1中间一个。并且在skipconnection的时候仅使用一半通道进行,这样不会有精度损失。


GhostNet, CVPR2020,


华为

卷积神经网络中特征有冗余(观察特征图,发现有的很像),提出用一部分特征图用深度可分卷积去生成另一部分特征图。而不是生成全部特征图。



版权声明:本文为yimingsilence原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。