1、SqueezeNet:AlexNet-level accuracy with 50x fewer parameters and <0.5MB

发表于ICLR-2016,作者分别来自Berkeley和Stanford

论文链接:http://arxiv.org/abs/1602.07360 <http://arxiv.org/abs/1602.07360> 

代码链接:https://github.com/DeepScale/SqueezeNet
<https://github.com/DeepScale/SqueezeNet>


结论:它在ImageNet上实现了和AlexNet相同的正确率,但是只使用了1/50的参数。更进一步,使用模型压缩技术,可以将SqueezeNet压缩到0.5MB,这是AlexNet的1/510。

创新点:fire module(类似于inception思想)。fire
module包含两部分:squeeze层+expand层。squeeze层通过1*1的卷积核减少输入通道的数量;expand层中,把1*1 和3*3
得到的feature map进行concat,以得到不同尺寸的卷积特征,如下图1、2所示。图2中,必须保证S1<e1+e3。



                                                                             
                               图1 



                                                                             
                 图2

2、(1)mobilenet-v1:MobileNets:Efficient Convolutional Neural Networks for
Mobile Vision Applications

来自CVPR2017,由Google团队提出

论文链接:https://arxiv.org/pdf/1704.04861.pdf

代码链接:https://github.com/Zehaos/MobileNet


创新点:假设输入为Df*Df*M,卷积核为Dk*Dk*N,传统卷积计算量为Df*Df*M*Dk*Dk*N。mobilenet采用深度可分离卷积(depthwise
separable
concolution),将其分为深度卷积和1*1的卷积,深度卷积的卷积核个数与输入的通道数相同,1*1卷积核用来改变输出通道数,计算量分别为Dk*Dk*M*DF*DF和M*N*DF*DF,实现了spatial与channels间的解耦,减少了计算量。



(2)mobilenet-v2:Inverted Residuals and Linear Bottlenecks: Mobile Networks for
Classification, Detection and Segmentation

论文链接:https://arxiv.org/abs/1801.04381

代码链接:https://github.com/miraclewkf/MobileNetV2-PyTorch
<https://github.com/miraclewkf/MobileNetV2-PyTorch>

https://github.com/suzhenghang/MobileNetv2/tree/master/.gitignore
<https://github.com/suzhenghang/MobileNetv2/tree/master/.gitignore> 

https://github.com/austingg/MobileNet-v2-caffe
<https://github.com/austingg/MobileNet-v2-caffe>


创新点:(1)相比v1卷积层提取的特征受限于通道数,先用1*1的卷积核扩张通道数,先扩张后压缩。(2)最后1*1卷积后不再用ReLU,避免ReLU对特征的破坏。



3、shufflenet:An Extremely Efficient Convolutional Neural Network for Mobile
Devices

论文链接:https://arxiv.org/pdf/1707.01083.pdf

代码链接:https://github.com/MG2033/ShuffleNet
<https://github.com/MG2033/ShuffleNet>

https://github.com/farmingyard/ShuffleNet

CVPR 2017, Face ++ 团队

创新点:(1)pointwise group convolutions(逐点组卷积),作者认为1*1卷积的计算量不可忽略,所以用1*1的group
convolutions代替原先1*1的convolutions。假设feature
map数为N,Filter数为M,分成g个group,则每组N/g个feature map与M/g个Filter做卷积。(2) channel
shuffle(通道混洗),每个输出channel都来自输入channel的一小部分,特征会很局限,因此采用混洗策略。




混洗的具体实现:(1)分成g个group,输出为g*n;(2)reshape成(g,n);(3)转置成(n,g);(4)flatten,分回g个group作为下一层输入。如图所示:



如下图,采用channel shuffle、pointwise group convolutions和depthwise separable
convolution来修改原来的ResNet单元(在辅分支加入步长为2的3*3平均池化;原本做元素相加的操作转为了通道级联,这扩大了通道维度,增加的计算成本却很少)。



4、(1)IGCV1:Interleaved Group Convolutions For Deep Neural Networks

由微软亚洲研究院张婷提出,ICCV 2017

论文链接:https://arxiv.org/pdf/1707.02725v2.pdf

代码链接:https://github.com/zlmzju/fusenet <https://github.com/zlmzju/fusenet>


结论:(1)组卷积间不存在交互,因此采用两次组卷积,每组的输入通道来自第一次组卷积过程中的不同组。结果在准确率、复杂度上均有提升。(2)经过实验发现,组卷积中每组分配两个通道的情况会得到最佳的精度。



(2) IGCV2:Interleaved Structured Sparse Convolutional Neural Networks

CVPR2018

论文链接:https://arxiv.org/pdf/1804.06202.pdf

代码链接:https://github.com/hellozting/interleavedGroupConvolutons
<https://github.com/hellozting/interleavedGroupConvolutons>


创新点:在IGCV1的模型中第一次组卷积是只是将所有通道均分成两组,而每一组仍然是一个非常dense、非常耗时的操作。于是他们用交错组卷积的方式将这部分也进行替换,得到了IGCV
2,即每层都用交错组卷积。



(3)IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural
Networks

ICCV3 2018

原文链接:https://arxiv.org/abs/1806.00178

代码链接(部分,还未发布):https://github.com/homles11/IGCV3

创新点:(1) 采用低精确度的核,
该方法将卷积核内的权重值由浮点型数据,转变为采用更少bit位表示的数据类型,如采用二进制表示权重,使得权重值仅为-1或+1,这样在网络计算时,就减少了存储空间的使用。



(2)采用稀疏或低秩核。稀疏核主要是通过采用L1或L2正则化来增加核的稀疏性,稀疏核中只有通过将部分权重值设为0,从而减少计算量。





5、Densenet:Densely Connected Convolutional Networks

CVPR 2017最佳论文,作者是康奈尔大学博士后黄高博士、清华大学本科生刘壮、Facebook 人工智能研究院研究科学家 Laurens van der
Maaten 及康奈尔大学计算机系教授 Kilian Q. Weinberger 

原文链接:https://arxiv.org/pdf/1608.06993.pdf
<https://arxiv.org/pdf/1608.06993.pdf> 

代码链接:https://github.com/liuzhuang13/DenseNet
<https://github.com/liuzhuang13/DenseNet> 

https://github.com/miraclewkf/DenseNet <https://github.com/miraclewkf/DenseNet>


创新点:(1)采用DenseBlock的结构。如图,将网络中所有层都连起来,每一层的输入来自前面所有层的输出,保证网络中信息的最大传递,和RNN的感觉类似。这样,一
减轻了vanishing-gradient(梯度消失)(梯度消失的原因是由于梯度信息在很多层之间传递所以丢失),二加强了feature的传递 ,三
更有效地利用了feature ,四每一层的通道数更窄(小于100),一定程度上较少了参数数量,因此过拟合现象也会减轻。



每个Densenet由多个dense block组成,每个dense block的feature map的size一样,便于concat。



(2)DenseBlock的输入开始,频繁使用Bottleneck Layer先进行降维,以减少feature map的层数。在两个Dense
Block中间,使用transition layer,通过设置参数reduction(范围是0到1),用1*1的卷积核以一定比例进行降维。

(3)Densenet在concat过程会重新开辟内存,因此很占显存,可以通过共享内存的方式去优化部署。