详解CNN五大经典模型:Lenet,Alexnet,Googlenet,VGG,DRL

35 篇文章 443 订阅 ¥9.90 ¥99.00
本文详细介绍了卷积神经网络(CNN)的五个经典模型:Lenet、Alexnet、Googlenet、VGG和ResNet。每个模型的历史背景、结构特点以及对深度学习领域的影响进行了阐述,包括它们的层结构、参数数量和计算特点,如Lenet的简单结构、Alexnet的LRN层、Googlenet的Inception模块、VGG的深度堆叠和ResNet的残差学习。这些模型展示了深度学习在图像识别领域的不断发展和优化。
摘要由CSDN通过智能技术生成

关于卷积神经网络CNN,网络和文献中有非常多的资料,我在工作/研究中也用了好一段时间各种常见的model了,就想着简单整理一下,以备查阅之需。

  1. Lenet,1986年

  2. Alexnet,2012年

  3. GoogleNet,2014年

  4. VGG,2014年

  5. Deep Residual Learning,2015年

Lenet

就从Lenet说起,可以看下caffe中lenet的配置文件(1),可以试着理解每一层的大小,和各种参数。由两个卷积层,两个池化层,以及两个全连接层组成。 卷积都是5*5的模板,stride=1,池化都是MAX。下图是一个类似的结构,可以帮助理解层次结构(和caffe不完全一致,不过基本上差不多)

(1)网址:https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_train_test.prototxt

 

 

Alexnet

2012年,Imagenet比赛冠军的model——Alexnet [2](以第一作者alex命名)。caffe的model文件在(2)。说实话,这个model的意义比后面那些model都大很多,首先它证明了CNN在复杂模型下的有效性,然后GPU实现使得训练在可接受的时间范围内得到结果,确实让CNN和GPU都大火了一把,顺便推动了有监督DL的发展。

(2)https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/deploy.prototxt

模型结构见下图,别看只有寥寥八层(不算input层),但是它有60M以上的参数总量,事实上在参数量上比后面的网络都大。

这个图有点点特殊的地方是卷积部分都是画成上下两块,意思是说吧这一层计算出来的feature map分开,但是前一层用到的数据要看连接的虚线,如图中input层之后的第一层第二层之间的虚线是分开的,是说二层上面的128map是由一层上面的48map计算的,下面同理;而第三层前面的虚线是完全交叉的,就是说每一个192map都是由前面的128+128=256map同时计算得到的。

Alexnet有一个特殊的计算层,LRN层,做的事是对当前层的输出结果做平滑处理。下面是我画的示意图:

前后几层(对应位置的点)对中间这一层做一下平滑约束,计算方法是:

具体打开Alexnet的每一阶段(含一次卷积主要计算)来看[2][3]:

(1)con - relu - pooling - LRN

具体计算都在图里面写了,要注意的是input层是227*227,而不是paper里面的224*224,这里可以算一下,主要是227可以整除后面的conv1计算,224不整除。如果一定要用224可以通过自动补边实现,不过在input就补边感觉没有意义,补得也是0。

(2)conv - relu - pool - LRN

和上面基本一样,唯独需要注意的是group=2,这个属性强行把前面结果的feature map分开,卷积部分分成两部分做。

(3)conv - relu

(4)conv-relu

(5)conv - relu - pool

(6)fc - relu - dropout

这里有一层特殊的dropout层,在alexnet中是说在训练的以1/2概率使得隐藏层的某些neuron的输出为0,这样就丢到了一半节点的输出,BP的时候也不更新这些节点。

(7) fc - relu - dropout

(8)fc - softmax

以上图借用[3],感谢。

 

 

GoogleNet

GoogLeNet网络是由Christian Szegedy在Google Research中发展起来的,该网络赢得2014年ILSVRC的冠军,成功的把top-5的错误率降到了7%,很大一个原因就是因为这个网络比之前介绍的CNN有更深的层。虽然层数更深,但是权重参数却是更少,比前面学的AlexNet网络要少上10倍。为什么呢?

一. Inception Module

那是因为该网络中有很大一部分的子网络是由如下图的Inception Module组成,我们来看一下下面的这个Inception Module:

 

其中表示“3x3+1(S)”表示该层的卷积核大小为3x3,stride为1,S means SAME padding。从上面的网络可以看出,首先输入信号被copy并输入到四个不同的层中,所有的卷积层都用ReLU激活函数。注意到上面的卷积层用的分别用1x1, 3x3, 5x5的卷积核,这样有助于捕捉到不同尺度的pattern。还有每个层都用了SAME padding,这就意味着,输入图像的宽高和输出的宽高是一致的,这就能够使得最终的Depth Concat能够实现(不同size的图像无法叠加)。在TensorFlow中,Depth Concat的实现是由concat()函数实现的,将其中的参数axis设为3.

我们可能已经发现,为什么会有一些卷积核的size是1x1呢?由于只有一颗像素,所以这些卷积层其实是无法获取任何特征的。事实上,这种层有两个目的:

首先就是降维,这些层的作用是使得输出的深度比输入的低,所以又称为瓶颈层,这样就达到一个降维的目的。这个效果在3x3和5x5的卷积层之前就特别有效,大大降低了训练权重的数量。

还有就是每一对([1x1,3x3]和[1x1,5x5])的卷积层,像一个强大的卷积层,能够捕获更为复杂的pattern.事实上确实如此,一个单层的卷积层就像是一个简单的线性分类器滑过图像,而该组合相当于是两层神经网络滑过图像。

每一个卷积层中卷积核的数量都是一个超参数,这就意味着一个Inception Module就有6个超参数需要调节。

二. GoogLeNet 构成

来我们一起看下GoogLeNet的构成,如下图。图中包含有9个inception module(图中带有螺旋形的标识)。inception module上的6个数字分别对应上图中每一个卷积层的输出个数。并且图中所有的卷积层都使用ReLU激活函数。

 

我们来一起看下这个网络:

为了降低计算负载,前两层的stride=2,意味着将图像的宽高分别除以4,面积缩小到之前的1/16。

为了使前面的层能够学到更多的特征,接着用了局部响应正则化(上期一起学过的)。

再接下来就是两个卷积层,类似一个瓶颈层,可以看做是一个智能卷积层。

下面又是一个局部响应正则化的层,来保证能够学到更多的特征。

接着用一个stride为2的最大值池化层来降低计算负载。

接着就是9个inception module,中间插了两个最大值池化层,来降维加速 。

接下来用了一个均值池化层,并且VALID padding。输出图像的size为1x1,这种策略称为全局均值池化。该策略能够很好的强迫之前的层输出更为有效的特征,因为其他特征将会被均值被过滤掉。这样就使得后面的全连接层比较少,没有必要像AlexNet那样有好几个全连接层。

最后就不说了,一个Dropout正则化,一个全连接层和softmax激活函数来获取输出结果。

上面的这个图相对来说更简单一些,原始的GoogLeNet在第三个和第六个inception module顶端还包含了两个辅助的分类器,他们都是由一个均值池化层,一个卷积层,两个全连接层和一个softmax激活层组成。在训练期间,他们损失的70%被加到网络整体损失中,这样做是为了防止梯度消失,并且正则化网络。然而,效果却相对较小。

 

googlenet[4][5],14年比赛冠军的model,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构。(当然,它并没有证明浅的层次不能达到这样的效果)

这个model基本上构成部件和alexnet差不多,不过中间有好几个inception的结构:

是说一分四,然后做一些不同大小的卷积,之后再堆叠feature map。

计算量如下图,可以看到参数总量并不大,但是计算次数是非常大的。

VGG

VGG有很多个版本,也算是比较稳定和经典的model。它的特点也是连续conv多,计算量巨大(比前面几个都大很多)。具体的model结构可以参考[6],这里给一个简图。基本上组成构建就是前面alexnet用到的。

下面是几个model的具体结构,可以查阅,很容易看懂。

Deep Residual Learning

这个model是2015年底最新给出的,也是15年的imagenet比赛冠军。可以说是进一步将conv进行到底,其特殊之处在于设计了“bottleneck”形式的block(有跨越几层的直连)。最深的model采用的152层!!下面是一个34层的例子,更深的model见表格。

其实这个model构成上更加简单,连LRN这样的layer都没有了。

block的构成见下图:

总结

OK,到这里把常见的最新的几个model都介绍完了,可以看到,目前cnn model的设计思路基本上朝着深度的网络以及更多的卷积计算方向发展。虽然有点暴力,但是效果上确实是提升了。当然,我认为以后会出现更优秀的model,方向应该不是更深,而是简化。是时候动一动卷积计算的形式了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值