卷积神经网络从lenet到DPN发展历程

先发一张图(不全),以后再补


一,LeNet5

1998 Yann LeCun LeNet5


最早的卷积网络,已经有了卷积层,池化层和全连接层。

二,AlexNet

2012,ImageNet Classification with DeepConvolutional Neural Networks

ImageNet Top5错误率:16.4%,而两年前非深度学习的方法的最好错误率是28.2%

AlexNet总体结构和LeNet相似,但是有极大改进:

·        由五层卷积和三层全连接组成,输入图像为三通道224x224大小,网络规模远大于LeNet

·        使用了ReLU激活函数

·        使用了Dropout,可以作为正则项防止过拟合,提升模型鲁棒性

·        一些很好的训练技巧,包括数据增广、学习率策略、weight decay

  • AlexNet使用3GB显存的GTX 580显卡,所以如上图所示将模型分为两部分放到了两块显卡上并行运算。虽然在当时这仅仅是单块显卡资源有限时的做法,但是这种做法会减小参数数量,加快计算速度。(group convolution)对以后网络的加速方向提供了一种方法。如shufflenet,resnext都采用了这种group convolution的方式。

三,VGG

2014,Very deep convolutionalnetworks for large-scale image recognition

在AlexNet之后,另一个提升很大的网络是VGG系列,ImageNet上Top5错误率减小到7.3%。

具体结构:

主要改进:采取更深的网络结构,以尺寸为3x3的小卷积核来代替大的卷积核。抛弃了

Alexnet中5x5与11x11的卷积核。这样做的好处是让参数数量更少,速度更快,更能防止过拟合。举个例子来说:如果输入为256x256x3的图像,第一层要输出256x256x64特征图,如果以3x3的卷积尺寸进行卷积则参数数量为(3x3x3+1)x64=1792,而如果以11x11的卷积尺寸进行卷积的话,参数数量为)(3x11x11+1)x64=23296,增加了13倍。

 

 

四,GoogLeNet

Inception v1(GoogLeNet):2015,Going deeper with convolutions

ImageNet Top5错误率6.7%

Vgg让网络更深,GoogLeNet不仅深而且宽。GoogLeNet 加入了inception的模块如下(其实就是多个并行的卷积操作)。


1.     inception v1(第一个版本)。如果单独5x5的卷积核,参数数量会很大,但是引入1x1的卷积核来对特征图降维(特征图的厚度)会大大减小参数的数量(后续的很多卷积神经网络都采用了1x1的卷积尺寸),例如输入256x256x64,输出256x256x128,如果单独采用5x5的卷积核则参数数量为(64x5x5+1)x128=204928,如果加上1x1的卷积操作则可以有中间过渡过程,输入256x256x64,过渡256x256x16,输出256x256x128,参数数量为(64x1x1+1)x16+(16x5x5+1)x128=52368,差不多只有25.6%的参数数量。

 

2.     inception v2

一方面了加入了BN层(规范化层),使每一层的输出都规范化到一个N(0, 1)的高斯分布; 另外一方面学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算;


 

3.     inception v3

v3一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算(多余的计算能力可以用来加深网络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,还有值得注意的地方是网络输入从224x224变为了299x299,更加精细设计了35x35/17x17/8x8的模块。

4.     inception v4

v4研究了Inception模块结合Residual Connection能不能有改进?发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inceptionv4模型,能达到与Inception-ResNet v2相媲美的性能。

5.     Xception

2016,Xception: Deep Learning withDepthwise Separable Convolutions

标准的卷积方式如下图:

Xception则把group convolution的思想发挥到了极致,每一个通道单独分为一组。叫做deepwise separable convolution,如下图所示:

 

其实就是把标准卷积分成两步,第一步叫deepwise convolution,就是单独对每个特征图进行卷积,第二步叫pointwise convolution,其实就是标准卷积,只是卷积核尺寸为1x1。这样分成两步会大大减少参数数量。列如输入256x256x64,输出256x256x128

标准卷积(如果·3x3的尺寸)的参数数量为(64x3x3+1)128=73856,另一种为(64x3

X3)+(64x1x1+1)x128=8896,相当于只有12%的参数数量。

 

 

五,ResNet

2016,Deep residual learning for imagerecognition

Vgg和inception都增加了网络的深度,但是随着网络的不断加深,可能会出现梯度消失(梯度接近于0)的问题(为什么,之后我会写个详细的文章来分析这个问题和梯度下降法,不然写太多了),由于卷积神经网络是依靠梯度下降法来寻优的,一旦梯度消失则无法更新参数,ResNet通过引入shortcut直连来解决这个问题:

     

对于shortcut的方式,作者提出了三个选项:

A. 使用恒等映射,如果residualblock的输入输出维度不一致,对增加的维度用0来填充;

B. 在block输入输出维度一致时使用恒等映射,不一致时使用线性投影以保证维度一致;

C. 对于所有的block均使用线性投影。

对这三个选项都进行了实验,发现虽然C的效果好于B的效果好于A的效果,但是差距很小,因此线性投影并不是必需的,而使用0填充时,可以保证模型的复杂度最低,这对于更深的网络是更加有利的。

在进一步的优化过程中引入1x1的卷积。减少了参数数量。

 

ResNet一个主流分支,基于残差结构发展出许多优秀的网络包括DenseNet、DPN、ResNeXt等。

1.     DenseNet

既然残差结构这么好用,为什么不多用,于是·DenseNet将residualconnection发挥到极致,每一层输出都直连到后面的所有层,可以更好地复用特征,每一层都比较浅,融合了来自前面所有层的所有特征,并且很容易训练。但是不是resnet那样基于对应的特征图相加add,而是特征图的拼接concate。拼接的缺点是网络到后面特征图会很多(相当于之前特征图数量的累加(注意是数量上的累加)),所以使用一个叫做“增长率”(k)的超参数防止网络变得过宽,还用了一个1*1的卷积瓶颈层(又是它)在3*3卷积前减少特征映射的数量。缺点是显存占用更大并且反向传播计算更复杂一点。网络结构如下所示:

2.     ResNeXt:

2017,Aggregated ResidualTransformations for Deep Neural Networks

结构图如下:

左边为普通的resnet结构,而右边为ResNeXt提出的结构,有点像inception+resnet

但是inception最后是拼接,而这里是加,各个通道也是一模一样的(很方便之后特征图相加)。这种方式利用1卷积和groupconvolution,看起来结构复杂了很多,其实参数数量并没有增加。

3.     DPN

duall path networks

DPN可以说是融合了ResNeXt和DenseNet的核心思想,这里为什么不说是融合了ResNet和DenseNet,因为作者也用了group操作,而ResNeXt和ResNet的主要区别就在于group操作。

分成左右两个部分,第一部分类似DenseNet(因为加入了分组卷积,所以说是类似),第二部分是ResNeXt,对与中间的shortcut部分,由左右两部分的特征图经过1x1卷积相加,然后经过3x3卷积,和1x1的卷积(这就是resnet的shortcut部分),然后对获取的特征图分成两部分,一部分和左边类DenseNet对应特征图拼接,另一部分与右边ResNeXt的特征图进行相加(注意左右是不一样的操作

六,移动端的网络

1.     MobileNet

MobileNet v1:2017,MobileNets:Efficient Convolutional Neural Networks for Mobile Vision Applications

和Xception类似,通过depthwiseseparable convolution来减少计算量,设计了一个适用于移动端的,取得性能和效率间很好平衡的一个网络。

MobileNet v2:2018,Inverted Residuals and Linear Bottlenecks: Mobile Networks forClassification, Detection and Segmentation

使用了ReLU6(即对ReLU输出的结果进行Clip,使得输出的最大值为6)适配移动设备更好量化,然后提出了一种新的Inverted Residuals and Linear Bottleneck,即ResNet基本结构中间使用了depthwise卷积,一个通道一个卷积核,减少计算量,中间的通道数比两头还多(ResNet像漏斗,MobileNet v2像柳叶),并且全去掉了最后输出的ReLU。

2.     ShuffleNet

2017,ShuffleNet: An ExtremelyEfficient Convolutional Neural Network for Mobile Devices

Xception已经做得很好了,但是1x1那里太耗时间了成了计算的瓶颈,那就分组group convolution减少参数数量,但是分组了,组和组之间信息隔离了,那就重排shuffle一下,强行让信息流动。具体的网络结构如上图左侧所示。channelshuffle就是对通道进行重排,将每组卷积的输出分配到下一次卷积的不同的组去:

上图的a是没有shuffle,效果很差,b则像Alexnet一样把特征进行融合然后与后面的层进行全连接,但是这样会导致参数量剧增,要知道卷积神经·网络大部分参数都集中与全连接层。ShuffleNe如c中一样采取重排的方式来解决这个问题。没有引入额外的参数。同时ShuffleNet也采用了Xception中的deepwise convolution 减少了参数数量。ShuffleNet可以达到和AlexNet相同的精度,并且实际速度快13倍(理论上快18倍)。

 

 

 

 

未完待续

如果有什么错误,疑问,请加QQ:643421232探讨


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值