CNN_Mode(ILSVRC)汇总LeNet-5,AlexNet,ZFNet,GoogLeNet,VGGNet,ResNet,SENet

本文回顾了从LeNet-5到SENet的CNN模型发展历程,包括AlexNet、ZFNet、GoogLeNet、VGGNet和ResNet等,它们在ILSVRC挑战中的表现,以及如何通过增加深度、优化结构来提升模型性能和效率。
摘要由CSDN通过智能技术生成


卷积神经网络在图像领域独领风骚,在ILSVRC 挑战赛中涌现出了许多非常优秀的网络结构,本文将一一介绍,在以后的相关研究中,我们可以使用这些网络的卷积层用来提取特征,加快研究进程。

LeNet-5(1998)

​LeNet-5 架构也许是最广为人知的CNN架构。它是由 Yann LeCun 于 1998 年创建的,广泛用于手写数字识别(MNIST)。下图是它的结构

需要注意的是:

  • MNIST 图像是28×28像素,但是它们被零填充到32×32像素,并且在被输入到网络之前被归一化。 网络的其余部分不使用任何填充,这就是为什么随着图像在网络中的进展,大小不断缩小。
  • 平均池化层比平常稍微复杂一些:每个神经元计算输入的平均值,然后将结果乘以一个可学习的系数(每个特征映射一个),并添加一个可学习的偏差项(每个特征映射一个),然后最后应用激活函数。
  • C3 图中的大多数神经元仅在三个或四个 S2 图(而不是全部六个 S2 图)中连接到神经元。有关详细信息,请参阅原始论文。
  • 输出层有点特殊:每个神经元不是计算输入和权向量的点积,而是输出其输入向量和其权向量之间的欧几里德距离的平方。 每个输出测量图像属于特定数字类别的多少。 交叉熵损失函数现在是首选,因为它更多地惩罚不好的预测,产生更大的梯度,从而更快地收敛。
    Yann LeCun的网站(“LENET”部分)展示了 LeNet-5 分类数字的很好的演示。

AlexNet(2012)

AlexNet CNN架构赢得了2012年的ImageNet ILSVRC挑战赛:它达到了 17% 的 top-5 的错误率,而第二名错误率为26%!它由Alex Krizhevsky(因此而得名),Ilya Sutskever 和 Geoffrey Hinton 开发。它与 LeNet-5 非常相似,只是更大更深,它是第一个将卷积层直接堆叠在一起,而不是在每个卷积层顶部堆叠一个池化层。 下图介绍了这种架构。

Padding为填充方式,有两种:SAME使用0填充;VALID不使用0填充。
​为了减少过拟合,作者使用了前几篇博客中讨论的两种正则化技术:首先他们在训练期间将丢失率(dropout 率为 50%)应用于层 F8 和 F9 (全连接层)的输出。其次,他们通过随机对训练图像进行各种偏移,水平翻转和改变照明条件来进行数据增强。

​AlexNet 还在层 C1 和 C3 的 ReLU 步骤之后立即使用竞争标准化步骤,称为局部响应标准化(local response normalization)。 这种标准化形式使得在相同的位置的神经元被最强烈的激活,但是在相邻的特征映射中抑制神经元(在生物神经元中观察到了这种竞争激活)。 这鼓励不同的特征映射特殊化,迫使它们分开,并让他们探索更广泛的特征,最终提升泛化能力。 公式 13-2 显示了如何应用 LRN。
在这里插入图片描述

  • b i b_i bi是神经元i的标准化输出
  • a i a_i ai is the activation of that neuron after the ReLU step, but before normalization.(原文是这样的,看不明白)
  • k,α,β和r是超参数。 k称为偏置,r称为深度半径。
  • f n f_n fn是特征映射的数量。

​例如,如果r = 2且神经元具有强激活,则将抑制位于其上下的特征映射中的神经元的激活。

​在 AlexNet 中,超参数设置如下:r = 2,α= 0.00002,β= 0.75,k = 1。这个步骤可以使用 TensorFlow 的local_response_normalization()操作来实现。

ZFNet(2013)

​AlexNet 的一个名为 ZF Net 的变体由 Matthew Zeiler 和 Rob Fergus 开发,赢得了 2013 年 ILSVRC 的挑战。它基本上是AlexNet 的一些调整的超参数(特征映射的数量,内核大小,步幅等)。待续。。

GoogLeNet(2014)

GoogLeNet 架构是由 Christian Szegedy 等人开发的。 来自 Google Research,通过低于 7% 的 top-5 错误率,赢得了 ILSVRC 2014 的挑战赛。 这个伟大的表现很大程度上因为它比以前的 CNN 网络更深(见图 13-11)。 这是通过称为初始模块(inception modules)的子网络实现的,这使得 GoogLeNet 比以前的架构更有效地使用参数:实际上,GoogLeNet 的参数比 AlexNet 少了 10 倍(约 600 万而不是 6000 万)。

​初始模块的架构如图 13-10 所示。 符号3×3 + 2(S)表示该层使用3×3卷积核,步幅 2 和SAME填充。 输入信号首先被复制并馈送到四个不同的层。 所有卷积层都使用 ReLU 激活功能。

注意,第二组卷积层使用不同的内核大小(1×1,3×3和5×5),允许它们以不同的比例捕获图案。 还要注意,每一层都使用了跨度为1和SAME填充的(即使是最大的池化层),所以它们的输出全都具有与其输入相同的高度和宽度。这使得将所有输出在最后的深度连接层(depth concat layer)上沿着深度方向堆叠成为可能(即,堆叠来自所有四个顶部卷积层的特征映射)。 这个连接层可以在 TensorFlow 中使用concat()操作实现,其中axis = 3(轴 3 是深度)。

初始模块具有1×1卷积核(Network in Network, NIN)的卷积层有两个目的:

​首先,它们被配置为输出比输入少得多的Feature Map(深度学习里面有一些概念很难直译,所以就不译),所以它们作为瓶颈层,意味着它们降低了维度。 在3×3和5×5卷积之前,这是特别有用的,因为这些在计算上是非常耗费内存的层。

其次,每一个卷积层对([1 × 1, 3 × 3]和[1 × 1, 5 × 5]表现地像一个强大的卷积层,可以捕捉到更多的复杂的模式。事实上,这一对卷积层不是在图像上扫过一个简单的线性分类器(就像单个卷积层一样),而是在图像上扫描一个双层神经网络。

​现在让我们来看看 GoogLeNet CNN 的架构(上图)。 它包括九个初始模块(带有旋转顶端的框),每个模块实际上包含三层。每个卷积层和池化层输出的Feature Map的数量显示在卷积核大小前。初始模块(inception modules)中的六个数字表示模块中每个卷积层输出的特征映射的数量(与图 13-10 中的顺序相同)。 所有的卷积层都使用 ReLU 激活函数。

这个网络从结构上作出了改进,比较复杂,再过一下整个网络:

  • 前两层将图像的高度和宽度除以 4(使其面积除以 16),以减少计算负担。
  • 然后,局部响应标准化层确保前面的层学习各种各样的功能(如前所述)
  • 接下来是两个卷积层,其中第一个像瓶颈层一样。 正如前面所解释的,你可以把这一对看作是一个单一的更智能的卷积层。
  • 再次,局部响应标准化层确保了先前的层捕捉各种各样的模式。
  • 接下来,最大池化层将图像高度和宽度减少 2,再次加快计算速度。
  • 然后是九个初始模块的堆叠,与几个最大池层交织,以降低维度并加速网络。
  • 接下来,平均池化层使用具有VALID填充的特征映射的大小的内核,输出1×1特征映射:这种令人惊讶的策略被称为全局平均池化。 它有效地强制以前的图层产生特征映射,这些特征映射实际上是每个目标类的置信图(因为其他类型的功能将被平均步骤破坏)。 这样在 CNN 的顶部就不必有有几个全连接层(如 AlexNet),大大减少了网络中的参数数量,并减少了了过度拟合的风险。
  • 最后一层是不言自明的:正则化 drop out,然后是具有 softmax 激活函数的完全连接层来输出估计类的概率。

VGGNet (2014亚军)

待续

ResNet(2015)

2015 年 ILSVRC 挑战赛的赢家 Kaiming He(大神是中国人,RCNN系列都有他的参与) 等人开发的 Residual Network(或 ResNet),该网络的 top-5 误率低到惊人的 3.6%,它使用了一个非常深的 CNN,由 152 层组成(论文提出了好几种结构)。 能够训练如此深的网络的关键是使用跳过连接(skip connection,也称为快捷连接):一个层的输入信号也被添加到位于下一层的输出。

​当训练一个神经网络时,目标是使其模拟一个目标函数 h ( x ) h(x) h(x)。 如果将输入 x x x添加到网络的输出中(即添加跳过连接),那么网络将被迫模拟 f ( x ) = h ( x ) − x f(x)= h(x) - x f(x)=h(x)x而不是 h ( x ) h(x) h(x)(可以有效防止前面博客提到的梯度消失现象)。

​当我们初始化一个普通的神经网络时,它的权重接近于零,所以网络输出也接近零。 如果添加跳过连接,则生成的网络只输出其输入的副本; 换句话说,它最初对身份函数(identity function,这是没法翻译这个词)进行建模。 如果目标函数与身份函数非常接近(常常是这种情况),这将大大加快训练速度。

如果添加了许多跳转连接,即使几个层还没有开始学习,网络也可以开始进行。由于跳过连接,信号可以很容易地通过整个网络。 深度剩余网络可以看作是一堆剩余单位,其中每个剩余单位是一个有跳过连接的小型神经网络。

​现在让我们看看 ResNet 的架构(见图 13-14)。它的开始和结束与GoogLeNet完全一样(除了没有 dropout 层),而在两者之间只是一堆很简单的残差单位。 每个残差单元由两个卷积层组成,使用3×3的内核和保存空间维度(步幅为 1,SAME填充),批量归一化(BN)和 ReLU 激活。

​需要注意的是Feature Map的数量每隔几个残差单位会加倍,同时它们的高度和宽度减半(使用步幅 2 卷积层)。发生这种情况时,输入不能直接添加到剩余单元的输出中,因为它们不具有相同的形状(例如,此问题影响图 13-14 中的虚线箭头表示的跳过连接)。为了解决这个问题,输入通过一个1×1卷积层,步长2和正确数量的输出Feature Map(见图 13-15)。

​ResNet-34 是具有 34 个层(仅计算卷积层和完全连接层)的 ResNet,包含 3 个残差单元输出 64 个特征映射,4 个残差单元输出 128 个Feature Map,6 个残差单元输出 256 个Feature Map,3 个残差单元输出 512 个Feature Map。

​ResNet-152 更深,使用稍微不同的残差单位。 他们使用三个卷积层,而不是两个 256 个Feature Map的3×3的卷积层,它们使用三个卷积层:第一个卷积层只有 64 个Feature Map(少 4 倍),这是一个瓶颈层(已经讨论过) ,然后是具有 64 个Feature Map的3×3层,最后是具有 256 个Feature Map(4×64)的另一个1×1卷积层,以恢复原始深度。ResNet-152 包含三个这样的残差单位,输出 256 个Feature Map,然后是 8 个残差单位,输出 512 个Feature Map,高达 36 个残差单位,输出 1024 个Feature Map,最后是 3 个残差单位,输出 2048 个Feature Map。

GBD-Net(2016)

2016的ILSVRC竞赛是由中国的CUImage(熵汤科技和香港中文)提出的GBD-Net拿下,出错率惊人的缩减到 2.99%。GBD-Net是基于ResNet-269进行扩充修改,虽然是2016的狀元,但由于仅仅较前一年的ResNet提升了2.2%,且也无值得称颂的创新亮点,因此GBD-Net无法如同历届其它model一样成为经典之作。

SENet(2017)

待续

可以看出CNN模型层次越来越深,需要的参数越来越少,在相关的任务研究中,我们可以使用这些网络。

另外由于深度学习技术的日益发展,使得机器视觉在ILSVRC的比赛成绩屡创佳绩,其错误率已经远低于人类视觉,若再继续举办类似的比赛已无意义,是故大家对机器视觉技术的期待由相当成熟的图像识别image identification转向尚待开发的图像理解image understanding。2018年起,将由苏黎世联邦理工(ETH),谷歌研究,卡耐基梅隆大学(CMU)等组织所支持WebVision竞赛(Challenge on Visual Understanding by Learning from Web Data,通过网络数据学习对视觉理解的挑战)来接棒。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值