ImageNet Classification with Deep Convolutional Neural Networks笔记

本笔记是20140912的周报,参考了以下文章和论文,对论文和文章作者表示感谢:

 

本文训练了一个深度卷积神经网络(下文称CNNs)来将ILSVRC-2010中1.2M(注:本文中M和K均代表 百万/千 个数量)的高分辨率图像(注:ImageNet目前共包含大约22000类,15兆左右的标定图像,ILSVRC-2010为其中一个常用的数据集)数据分为1000类。测试结果,Top-1和Top-5的错误率分别为37.5%和17%,优于当时最优的水平。

后来作者利用该种模型的变体参与了ILSVRC-2012(ImageNet Large Scale Visual Recognition Challenge)比赛,以Top-5错误率15.3%遥遥领先亚军的26.2%。最后文章发表于NIPS 2012(Neural Information Processing Systems),目的是Hinton与其学生为了回应别人对于deep learning的质疑而将deep learning用于ImageNet(图像识别目前最大的数据库)上。

该神经网络包含60M参数和650K神经元,用5个卷积层(其中某些层与亚采样层连接)、三个全连接层(包括一个1K门的输出层)。为使训练更快,文章采用非饱和神经元,并利用了一个高效的GPU应用进行卷积运算。在全连接层中,为避免过拟合,文章采用了一种叫做“dropout”的方法。

 介绍

现在物体识别的方法都运用了机器识别的方法。为了提高他们的表现,可以收集更大的数据集,学习更多的模型,利用更好的技术来防止过拟合。但直到现在,与数以万计的带标签图像数据集需求相比,带标签图像的数据集仍然很小。如果进行带标签的转化来增广数据集,这种规模能胜任简单的图像识别。譬如 MNIST数据集数字识别的最小错误率已经小于0.3%,接近人类的水平。但现实世界的物体识别表现却相当不同,这种识别需要更大的训练集。事实上,人们早已经认识到小数据集的缺点,只是最近,收集更大的数据集才变成可能。新的大数据集包括LabelMe和ImageNet,分别包含了数十万张全分割图像,和已经分成22K类的15M张高分辨率带标签图像。

为了从数以百万计的图像中找出数千种分类,需要设计一个能够容许大量学习的模型。然而,物体识别的巨大复杂性意味着,即使在ImageNet这样大小的数据集也不能完成任务。所以该种模型具有许多先验知识来弥补不足。CNNs衍生成了各种模型,他们的容量取决于他们的深度和宽度,通常他们都能在自然图像的数据下取得有较强鲁棒性并正确率高的判别。因此,与传统的层大小相似的前馈神经网络(Feedforward Neural Network)相比,CNNs有更少的链接和参数,更加容易训练,而他们理论上最佳表现却相差无几。

尽管CNNs具有高性能,高效率,但它在大规模计算高分辨率图像时仍然消耗过大。而应用高度优化的二维卷积运算的GPU,能有效帮助CNNs的大规模训练。而且像ImageNet这样包含大量带标签图像的数据集,能够训练出不包含重度过拟合的模型。

本文的突出贡献在于:

  • 基于ILSVRC-2010和ILSVRC-2012的子集训练了一个最大的CNNs模型并达到了该数据集中的当前最优结果。
  • 写了一个在GPU中高度优化的二维卷积的实现以及其他一些固有的CNNs的训练操作(代码:http://code.google.com/p/cuda-convnet/)。
  • 网络中包括了大量不常见和新的特征来提升性能,减少训练时间。(详见:三 结构)
  • 文章网络的大小导致过拟合成为一个严重的问题,所以文章采取了一些有效的技术来预防过拟合。(详见:四 降低过拟合)
  • 最终网络包含5层卷积层和3层全连接层。而这个层深度很重要,因为移除任何一个卷积层,将会导致更差的结果。

最终网络大小主要受限于GPU的内存和训练时间。实验证明,本网络在有两个GTX 580 3GB GPU的机器上训练了5-6天。实验结果显示,如果GPU更快或数据集更大,实验结果将会更好。

二 数据集

ImageNet有22K种共15M张高分辨率带标签图像,图像全被收集于网络,通过Amazon Mechanical Turk来人工标记。ILSVRC比赛开始于2010,是Pascal Visual Object Challenge的一部分,数据集采用ImageNet的子集,共包含1K个类别,每个类别大约1K幅图左右。总共有1.2M训练集,5K确认图像和150K测试集。

因为只有ILSVRC-2010的测试集的标签是公开的,所以实验大部分在该数据集完成。本模型也拿来参加了ILSVRC-2012,会在第六部分列出结果。ImageNet通常使用Top-1和Top-5的错误率,Top-5的错误率指图像的标签不在模型输出的前5个里。

因为ImageNet包含不同分辨率的图像,而模型需要固定的输入维度,所以文章将这些图像通过采样的方式修正为256*256分辨率的图像。具体方法是:先将图像的短边缩放到256大小,然后裁出最中央256*256的区域。除此之外,图像未经过任何预处理,直接在每个像素的原始RGB值上训练。

三 结构

图1给出了整个网络的的结构:

QQ截图20140911124920图1 本文基于CNNs算法的结构模型

共包含8层学习层,其中前5层是卷积层,后面3层是全连接的网络,其中最后一层是softmax组成的输出决策层。

具体的实现上,这篇文章在结构上面的一些改进在于:

改进一 ReLU非线性特征 

传统的输出激活函数一般都是f (x) = tanh(x)或者f (x) = (1 + e-x)-1,在梯度下降训练时间上,饱和的非线性特性比非饱和非线性特性f (x) = max(0,x)更慢。于是文中用了Hinton 2010在ICML(Rectified Linear Units Improve Restricted Boltzmann Machines,Vinod Nair,Geoffrey E. Hinton)中论文中提到的修正线性单元(ReLU)。CNNs在利用ReLU进行训练几次之后明显比传统的tanh更快。图2中表示的在CIFAR-10数据集(注:CIFAR-10 数据集包括60000 32×32 彩图,共10 类, 每类6000。50000训练集,10000测试集)上使用4个卷积层将错误率降低到25%所需要的迭代次数。图中表明,在该规模下,传统的饱和神经元模型无法将其收敛。

QQ截图20140911154959图2 在CIFAR-10数据集上需要的迭代次数

文章并不是第一个考虑在CNNs中寻找传统神经模型的替代品。Jarrett等考虑过|tanh x|,在Caltech-101数据集表现良好。但本数据集中最关心的是避免过拟合,所以他们关注的效果与实际我们用ReLU的训练集拟合的目的不同。更快的学习速度对于在大数据集上的表现有着显著的影响。

改进二 在多GPU上训练

由于单GTX 580只有3GB的内存,从而限制了网络的大小,所以文章使用了两个GPU。现在的GPU都能很好的进行相互之间的读写,不需要经过中介。文章在每个GPU上放1/2的神经元,但只有某些层才能进行GPU间的通信。这就意味着,可能L3层的输入为L2的所有特征图,而L4的输入只是L3中在同一GPU上的特征图。在交叉验证时,选择连接的模式是一个问题,而这个也恰好允许通过精确的调整通信的数量使计算数量变成一个良好的值。

最终的结构有点像Ciresan等使用的列状CNN,但我们的列不是独立的。这种组合让我们的Top-1和Top-5错误率分别下降了1.7%和1.2%。在与每层卷积规模只有我们一半大小的网络在单GPU中训练的比较中,我们的2GPU网络比其花费的时间都要略少。

改进三 局部响应标准化

在ReLU中,只要有一些训练数据能够产生输入,则神经元就能得到训练。然而,文章还发现了下面的局部标准化调度帮助泛化性能。

此段等待后续……,没怎么看懂,衰

 

改进四 重叠采样

CNNs的Max-Pooling层(即LeCun的下采样层,只是这里使用的降采样,即将每个Kernel的最大值作为此次降采样的值,暂称为降采样层)是不会从上一层重复采样的。但是如果将上一层看做一个网格,每个网格相同边的距离为s,而每一次进行降采样将从网格中心为中心,采样z*z个像素。如果s=z,则与传统方法相同,而如果s<z,则会进行重复采样。本文章将s=2,z=3,成功的将Top-1和Top-5的错误率分别降低了0.4%和0.3%(与s=2,z=2相比)。而且,在实验中发现,采用重叠采样将会略微更难产生过拟合。

全部架构

QQ截图20140911124920图1 本文基于CNNs算法的结构模型

全部架构图仍然见图1。网络包括八个有权值的层(即不包含最左端的输入层)。前五层是卷积层,剩下的三层是全连接的。最后一个全连接层是输出层,包含1000种路径,即1000个标签。本网络将多项式线性回归的结果最大化,也就是将训练集预测正确的标签的对数概率最大化。

第二、四、五个卷积层只与上层在同一个GPU上的Kernel Map(下文称特征图)连接,第三个卷积层与第二个卷积层的所有特征图连接。全连接层的神经元与上一层的所有神经元连接(即改进二)。响应标准化层在第一和第二个卷积层之后(改进三),降采样层在响应标准化层和第五个卷积层之后(改进四)。而ReLU非线性公式在每个卷积层和全连接层都有应用(改进一)。

第一个卷积层用96个大小为11*11*3的卷积核对224*224*3的图像进行步幅为4的卷积。第二个卷积层将前一层降采样层的输出作为输入,做256个卷积核为55*55*48的卷积。第三四五个卷积层都直接连接上一层,没有经过降采样和标准化。第三卷积层有384个3*3*256的卷积核,第四卷积层有256个3*3*192个卷积层,第五卷积层有256个3*3*192的卷积核。全连接层每个有4096个神经元。

四 降低过拟合

该神经网络会产生60M参数。虽然ILSVRC的1000种类别让每个训练样本利用10bit的数据就可以将图像映射到标签上,但没有大量的过拟合,是不够学习这么多参数的。为了降低过拟合,文章又提出了下面两种主要的方法。

数据

降低过拟合最简单的方法就是进行数据增强。由于数据增强只需要对图像进行简单运算,所以不需要将运算后的结果存入硬盘。文章利用GPU在处理元数据的时间,在CPU并行进行数据增强计算,所以不会消耗多余的时间进行增强。

数据增强可通过普通的图像转换和水平翻转。从图像中随机抽取224*224像素和他们的水平翻转,将训练数据增加为原来的2048倍,但也会导致训练数据相互依赖。但如果不这样做,我们的网络将会遇到过拟合而不得不使用更小的网络。测试中,网络通过提取图片的5个224*224切片(中间和四角)和它们的水平翻转来做出预测,预测结果为十次预测的平均值。

第二种数据增强的方式为改变训练图像RGB通道的强度,此机制使得top5错误率降低1%。

此段等待后续……

Dropout

结合各个不同模型的预测结果可以有效降低错误率,但对于需要数天进行训练的神经网络来说太奢侈。然而,有一种非常有效的模型结合方法,只需要原先两倍的训练时间,叫做dropout,它将某些层隐藏,按照50%的概率输出0。这些隐藏的神经元不会参加CNN的forward过程,也不会参加back propagation过程。所以每次有输入时,该网络采样一个随机结构,但所有不同网络结构的相同层的权值相等。因为每个神经元不能依赖于其他神经元的存在,该模型也减少了神经元的相互作用,迫使神经元与其他神经元共同学习更多更有用的特征。

测试中,我们在前两个全连接层使用了该方法,利用他们所有的神经元,但其输出都乘以了0.5。没有dropout,我们的网络将会产生严重的过拟合。但dropout也使达到收敛的迭代次数增加了一倍。

五 学习细节

在模型中,0.9倍动量,权值衰减为0.0005,虽然权值衰减值很小,但是对于学习很重要,它减小了模型了训练错误概率,w的更新规则为:

QQ截图20140912114850

i是迭代次数,ω是动量变量,ε是学习率。

初始时,每一层的权值为均值为0,标准差为0.01的高斯分布。第二、四、五卷积层和全连接的隐藏层的神经元偏置设为1。这样,能加快ReLU的学习。剩下的层偏置设为0。

在所有层中,学习率相同。

此段等待后续……

六 结果

最后在ILSVRC-2010的测试结果如表1,最终Top-1和Top-5的错误率分别为37.5%和17.0%。而当时比赛最好成绩为47.1%和28.2%,而之后文章得到的最好结果45.7%和25.7%。

QQ截图20140912143551表1 本方法与两个最优方法的对比

在ILSVRC-2012测试中的表现与其他方法的对比如表2。由于2012的测试集标签未公开,在下文中我们将交叉的使用错误率和验证率,事实上在试验中,它们也不会超过0.1%的误差。

本文提供的CNNs方法Top-5错误率为18.2%,而5种相似CNN结构平均结果的Top-5的错误率为16.4%。而经过在最后一个采样层上增加第六个卷积层,使用ImageNet 2011的数据进行预处理后,再经过调整,在本数据集中的错误率为16.6%。将两个预处理后的CNN和上述5CNN平均后的结果进行平均化最后得到的错误率为15.3%。而当时第二的队伍利用SIFT+FVs的错误率为26.2%。

QQ截图20140912143648表2 本方法自身与ILSVRC-2012第二的对比

最后,我们也在ImageNet 2009的数据库上进行了测试,该数据集包含10184种共8.9M个图像。该数据集一半为测试集,一半为数据集,最终利用上述的1CNN*(也就是在最后一个采样层上增加第六个卷积层,使用ImageNet 2011的数据进行预处理后,再经过调整)Top-1和Top-5的错误率分别为67.4%和40.9%,而目前为止利用该数据集得到的最优结果为78.1%和60.9%。

性能评估

QQ截图20140912111944图3 两个数据连接层学习的卷积核

图3展示了网络的两个数据连接层学习的卷积核(从输入层到第一个卷积层)。GPU1上的卷积核大部分对颜色不敏感,而GPU2对颜色非常敏感。这种特性的出现不伴随运行的次数和权值初始化的随机而改变。

 QQ截图20140912165430

图4 部分测试图

在图4中,像左(1,1)的的图像,螨虫即使只占很少的区域,但还是能够分类成功。但是,像左(2,1)和(2,3)这种指代不明的,就容易出错。

在最后一个pooling层中,如果两个图像的特征激活向量越接近(欧氏距离),则认为该网络认为他们越像。图4的右图中,第1列是测试集,第2—6列是网络在训练集中找出的认为最相近的6幅图,可以看出,即使像狗和象这种姿态动作完全不一样的,也可以检测出。

向量的实值是没用的,有用的是它们之间的欧氏距离。

七 讨论

结果显示,大规模、低深度的CNN在监督学习下能够达到破纪录的好结果。而本文章的模型的层数不能随意变动,实验证明,每移走一层中间的层,Top-1的错误率将会增高2%。

虽然如果我们能够有更好的计算性能来增大网络规模,却不增加标签数据,可能会提高最后的正确率,但为了简化实验,文章没有使用任何无监督学习。如果那样,那么在更大规模的网络和更长时间训练的情况下,我们得结果就能得到提高。但我们仍然有很多需求来进行时空下视觉系统的研究。最终我们就能用很大很深的深度卷积网络来处理视频序列,以得到静态图片可能会忽视的信息。

最后由刘 冠君编辑于2014年9月15日下午5:00

 

 

PrintEvernoteQQFacebookTwitterGoogle+分享