太仓建设银行网站,佛山网上推广,网站建设hengfengera,静安集团网站建设1.概述
图像分类是根据图像的语义信息对不同类别图像进行区分#xff0c;是计算机视觉的核心#xff0c;是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像分类在许多领域都有着广泛的应用#xff0c;如#xff1a;安防领域的人脸识别…1.概述
图像分类是根据图像的语义信息对不同类别图像进行区分是计算机视觉的核心是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。图像分类在许多领域都有着广泛的应用如安防领域的人脸识别和智能视频分析等交通领域的交通场景识别互联网领域基于内容的图像检索和相册自动归类医学领域的图像识别等。
这里对图像分类领域的经典卷积神经网络进行剖析介绍如何应用这些基础模块构建卷积神经网络解决图像分类问题。按照被提出的时间顺序涵盖如下卷积神经网络 LeNetYan LeCun等人于1998年第一次将卷积神经网络应用到图像分类任务上[1]在手写数字识别任务上取得了巨大成功。 AlexNetAlex Krizhevsky等人在2012年提出了AlexNet[2], 并应用在大尺寸图片数据集ImageNet上获得了2012年ImageNet比赛冠军(ImageNet Large Scale Visual Recognition ChallengeILSVRC。 VGGSimonyan和Zisserman于2014年提出了VGG网络结构[3]是当前最流行的卷积神经网络之一由于其结构简单、应用性极强而深受广大研究者欢迎。 GoogLeNetChristian Szegedy等人在2014提出了GoogLeNet[4]并取得了2014年ImageNet比赛冠军。 ResNetKaiming He等人在2015年提出了ResNet[5]通过引入残差模块加深网络层数在ImagNet数据集上的错误率降低到3.6%超越了人眼识别水平。ResNet的设计思想深刻地影响了后来的深度神经网络的设计。
图像分类处理基本流程先使用卷积神经网络提取图像特征然后再用这些特征预测分类概率根据训练样本标签建立起分类损失函数开启端到端的训练如下图所示。
2.LeNet卷积神经网络
LeNet是最早的卷积神经网络之一。1998年Yann LeCun第一次将LeNet卷积神经网络应用到图像分类上在手写数字识别任务中取得了巨大成功。LeNet通过连续使用卷积和池化层的组合提取图像特征其架构如图1所示这里展示的是用于MNIST手写体数字识别任务中的LeNet-5模型 第一模块包含5×5的6通道卷积和2×2的池化。卷积提取图像中包含的特征模式激活函数使用Sigmoid图像尺寸从28减小到24。经过池化层可以降低输出特征图对空间位置的敏感性图像尺寸减到12。第二模块和第一模块尺寸相同通道数由6增加为16。卷积操作使图像尺寸减小到8经过池化后变成4。第三模块包含4×4的120通道卷积。卷积之后的图像尺寸减小到1但是通道数增加为120。将经过第3次卷积提取到的特征图输入到全连接层。第一个全连接层的输出神经元的个数是64第二个全连接层的输出神经元个数是分类标签的类别数对于手写数字识别的类别数是10。然后使用Softmax激活函数即可计算出每个类别的预测概率。 卷积层的输出特征图如何当作全连接层的输入使用呢 卷积层的输出数据格式是[N,C,H,W]在输入全连接层的时候会自动将数据拉平也就是对每个样本自动将其转化为长度为K的向量其中KC×H×W一个mini-batch的数据维度变成了N×K的二维向量。 3.AlexNet卷积神经网络
自从1998年LeNet问世以来接下来十几年的时间里神经网络并没有在计算机视觉领域取得很好的结果反而一度被其它算法所超越。原因主要有两方面一是神经网络的计算比较复杂对当时计算机的算力来说训练神经网络是件非常耗时的事情另一方面当时还没有专门针对神经网络做算法和训练技巧的优化神经网络的收敛是件非常困难的事情。
随着技术的进步和发展计算机的算力越来越强大尤其是在GPU并行计算能力的推动下复杂神经网络的计算也变得更加容易实施。另一方面互联网上涌现出越来越多的数据极大的丰富了数据库。同时也有越来越多的研究人员开始专门针对神经网络做算法和模型的优化Alex Krizhevsky等人提出的AlexNet以很大优势获得了2012年ImageNet比赛的冠军。
AlexNet与LeNet相比具有更深的网络结构包含5层卷积和3层全连接同时使用了如下三种方法改进模型的训练过程 数据增广深度学习中常用的一种处理方式通过对训练随机加一些变化比如平移、缩放、裁剪、旋转、翻转或者增减亮度等产生一系列跟原始图片相似但又不完全相同的样本从而扩大训练数据集。通过这种方式可以随机改变训练样本避免模型过度依赖于某些属性能从一定程度上抑制过拟合。 使用Dropout抑制过拟合。 使用ReLU激活函数减少梯度消失现象。 4.VGG卷积神经网络
VGG是当前最流行的CNN模型之一2014年由Simonyan和Zisserman提出其命名来源于论文作者所在的实验室Visual Geometry Group。AlexNet模型通过构造多层网络取得了较好的效果但是并没有给出深度神经网络设计的方向。VGG通过使用一系列大小为3x3的小尺寸卷积核和池化层构造深度卷积神经网络并取得了较好的效果。VGG模型因为结构简单、应用性极强而广受研究者欢迎尤其是它的网络结构设计方法为构建深度神经网络提供了方向。
图3是VGG-16的网络结构示意图有13层卷积和3层全连接层。VGG网络的设计严格使用3×3的卷积层和池化层来提取特征并在网络的最后面使用三层全连接层将最后一层全连接层的输出作为分类的预测。 在VGG中每层卷积将使用ReLU作为激活函数在全连接层之后添加dropout来抑制过拟合。使用小的卷积核能够有效地减少参数的个数使得训练和测试变得更加有效。比如使用两层3×3卷积层可以得到感受野为5的特征图而比使用5×5的卷积层需要更少的参数。由于卷积核比较小可以堆叠更多的卷积层加深网络的深度这对于图像分类任务来说是有利的。VGG模型的成功证明了增加网络的深度可以更好的学习图像中的特征模式。 5.GoogLeNet卷积神经网络
GoogLeNet是2014年ImageNet比赛的冠军它的主要特点是网络不仅有深度还在横向上具有“宽度”。由于图像信息在空间尺寸上的巨大差异如何选择合适的卷积核来提取特征就显得比较困难了。空间分布范围更广的图像信息适合用较大的卷积核来提取其特征而空间分布范围较小的图像信息则适合用较小的卷积核来提取其特征。为了解决这个问题GoogLeNet提出了一种被称为Inception模块的方案如图4所示。 图4(a)是Inception模块的设计思想使用3个不同大小的卷积核对输入图片进行卷积操作并附加最大池化将这4个操作的输出沿着通道这一维度进行拼接构成的输出特征图将会包含经过不同大小的卷积核提取出来的特征从而达到捕捉不同尺度信息的效果。Inception模块采用多通路(multi-path)的设计形式每个支路使用不同大小的卷积核最终输出特征图的通道数是每个支路输出通道数的总和这将会导致输出通道数变得很大尤其是使用多个Inception模块串联操作的时候模型参数量会变得非常大。为了减小参数量Inception模块使用了图(b)中的设计方式在每个3x3和5x5的卷积层之前增加1x1的卷积层来控制输出通道数在最大池化层后面增加1x1卷积层减小输出通道数。基于这一设计思想形成了上图(b)中所示的结构。
GoogLeNet的架构如图5所示在主体卷积部分中使用5个模块block每个模块之间使用步幅为2的3 ×3最大池化层来减小输出高宽。
第一模块使用一个64通道的7 × 7卷积层。第二模块使用2个卷积层:首先是64通道的1 × 1卷积层然后是将通道增大3倍的3 × 3卷积层。第三模块串联2个完整的Inception块。第四模块串联了5个Inception块。第五模块串联了2 个Inception块。第五模块的后面紧跟输出层使用全局平均池化层来将每个通道的高和宽变成1最后接上一个输出个数为标签类别数的全连接层。 说明 在原作者的论文中添加了图中所示的softmax1和softmax2两个辅助分类器如下图所示训练时将三个分类器的损失函数进行加权求和以缓解梯度消失现象。这里的程序作了简化没有加入辅助分类器。 图5GoogLeNet模型网络结构示意图
6.ResNet卷积神经网络
ResNet是2015年ImageNet比赛的冠军将识别错误率降低到了3.6%这个结果甚至超出了正常人眼识别的精度。
通过前面几个经典模型学习我们可以发现随着深度学习的不断发展模型的层数越来越多网络结构也越来越复杂。那么是否加深网络结构就一定会得到更好的效果呢从理论上来说假设新增加的层都是恒等映射只要原有的层学出跟原模型一样的参数那么深模型结构就能达到原模型结构的效果。换句话说原模型的解只是新模型的解的子空间在新模型解的空间里应该能找到比原模型解对应的子空间更好的结果。但是实践表明增加网络的层数之后训练误差往往不降反升。
Kaiming He等人提出了残差网络ResNet来解决上述问题其基本思想如图6所示。 图6(a)表示增加网络的时候将x映射成y F(x)输出。图6(b)对图6(a)作了改进输出y F(x)x。这时不是直接学习输出特征 y 的表示而是学习y−x。 如果想学习出原模型的表示只需将F(x)的参数全部设置为0则yx是恒等映射。F(x)y−x也叫做残差项如果x→y的映射接近恒等映射图6(b)中通过学习残差项也比图6(a)学习完整映射形式更加容易。 图6(b)的结构是残差网络的基础这种结构也叫做残差块Residual block。输入x通过跨层连接能更快的向前传播数据或者向后传播梯度。
通俗的比喻如“传声筒”的游戏。我们常常会发现刚开始的嘉宾往往表演出最多的信息类似于Loss而随着表演的传递有效的表演信息越来越少类似于梯度弥散。类似的由于ResNet每层都存在直连的旁路相当于每一层都和最终的损失有“直接对话”的机会自然可以更好的解决梯度弥散的问题。
残差块的具体设计方案如图7所示这种设计方案也常称作瓶颈结构BottleNeck。1*1的卷积核可以非常方便的调整中间层的通道数在进入3*3的卷积层之前减少通道数256-64经过该卷积层后再恢复通道数(64-256)可以显著减少网络的参数量。这个结构256-64-256像一个中间细两头粗的瓶颈所以被称为“BottleNeck”。 图7残差块结构示意图
下图表示出了ResNet-50的结构一共包含49层卷积和1层全连接所以被称为ResNet-50。