ImageNet调查报告

本篇内容是在网络中收集汇总

1. ILSVRC介绍:

ImageNet大规模视觉识别挑战赛即“ILSVRC”(ImageNet Large Scale Visual Recognition Challenge),它是基于ImageNet图像数据库的国际计算机视觉识别竞赛。ILSVRC从2010年开始举办,并逐渐发展为国际计算机视觉领域受关注度最大、水平最高、竞争最激烈的竞赛。2017年是这场竞赛的最后一年。短短7年内,优胜者的识别率就从71.8%提升到97.3%,超过了人类,并证明了更庞大的数据可以带来更好的决策。

ILSVRC使用的数据都来自ImageNet,ImageNet项目于2007年由斯坦福大学华人教授李飞飞创办,目标是收集大量带有标注信息的图片数据供计算机视觉模型训练。ImageNet拥有1500万张标注过的高清图片,总共拥有22000类,其中约有100万张标注了图片中主要物体的定位边框。

首届ImageNet的两年后,也就是2012年,发生的一件大事情,如果可以将如今人工智能领域的繁荣归功于某项比赛,那么肯定当属2012年ImageNet挑战赛宣布研究成果的那一刻。

那一年,多伦多大学的Geoffrey Hinton、Ilya Sutskever和Alex Krizhevsky提出了一种深度卷积神经网络结构:AlexNet,夺得了ImageNet冠军,成绩远远领先于当时的第二名。

2. 比赛指标:

从 2010 年以来,每年的 ILSVRC 都主要包括以下 3 项,后来逐渐增多:

图像分类:算法产生图像中存在的对象类别列表;

单物体定位:算法生成一个图像中含有的物体类别的列表,以及轴对齐的边框,边框指示每个物体类别的每个实例的位置和比例;

物体检测:算法生成图像中含有的物体类别的列表,以及每个物体类别中每个实例的边框,边框表示这些实例的位置和比例。

ILSVRC2016 分为五大部分,包括:目标检测、目标定位、视频中目标物体检测、场景分类、场景分析。

3. 主流算法

自从Alex和他的导师Hinton在2012年的ImageNet大规模图像识别竞赛(ILSVRC2012)中以超过第二名10个百分点的成绩(83.6%的Top5精度)碾压第二名(74.2%,使用传统的计算机视觉方法)后,深度学习真正开始火热,卷积神经网络(CNN)开始成为家喻户晓的名字;

虽然AlexNet并不是CNN的开创,但是从此开始CNN开始受到人们的强烈关注,并在ImageNet的比赛中大放异彩,2012年的AlexNet成为了研究热点从传统视觉方法到卷积神经网络的分水岭;

从12年的AlexNet(83.6%),到2013年ImageNet 大规模图像识别竞赛冠军的88.8%,再到2014年VGG的92.7%和同年的GoogLeNet的93.3%,终于,到了2015年,在1000类的图像识别中,微软提出的残差网(ResNet)以96.43%的Top5正确率,达到了超过人类的水平(人类的正确率也只有94.9%)。

以下为四种经典的卷积神经网络:

Name

Rank

Top-5

Lays

AlexNet

ILSVRC 2012年冠军

16.4%

8层

VGGNet

ILSVRC 2014年亚军

7.3%

19层

Google Inception Net

ILSVRC 2014年冠军

6.7%

22层

ResNet

ILSVRC 2015年冠军

3.57%

152层

3.1 算法学习——卷积神经网络CNN:

3.1.1 卷积神经网络(CNN)概况:

如图为神经网络示意图,图中结点表示神经元,仅有相邻层间结点有连接,同层或跨层间均无连接,分层结构,左侧输入层,右侧输出层,中间为隐藏层,隐藏层比较多(大于2)的神经网络叫做深度神经网络。

卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的,即局部感知野的方法,每个神经元没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息; 另一方面为参数共享,即可以从一个大尺寸图像中选取 一个小样本,并从该样本中学习到一些特征,然后可以把从这个样本中学习到的特征作为探测器,应用到这个图像的任意地方中去,而且可以用从样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。

卷积神经网络大致就是Convolutional Layer(卷积层)、pooling Layer(池化层)、ReLU Layer(修正线性单元层)、fully-connected layer(全连接层)的组合。

3.1.2 卷积层(负责特征抓取):

如图选中左上角区域的红色框叫做filter(过滤器,有时候也被称为神经元(neuron)或核(kernel)),被选中的区域被称为感受野(receptive field)。过滤器同样也是一个数组(其中的数字被称作权重或参数)。且过滤器的深度必须与输入内容的深度相同(这样才能确保可以进行数学运算),如图为大小为2 x 2的过滤器;

第二层的节点0的数值就是局部区域的线性组合,即被圈中节点的数值乘以对应的权重后相加(线性组合后,也会和前馈神经网络一样,加上一个偏移量)。

然后向后移动过滤器扫描全图,因此每个输出结点并非与全部的输入结点相连,为了不丢失图片的平面结构信息,仍采用矩阵存储输出信息。

三维下过滤器变为(对应RGB),对应的线性组合计算为

 

 

可见,在输入depth为时,2x2x个输入节点连接到1个输出节点上。示意图如下:

 

3.1.2.1 Zero padding

可以看到,每次卷积操作完图片大小都会被压缩,为了避免若干层卷积后图片越来越小的问题,也避免边缘信息被一步步舍弃的问题,采用Zero padding的方法,即在图片周围填充一圈0(或两圈),根据采用过滤器的大小来决定,以便在卷积之后,得到的Feature Map大小不变。

3.1.2.2 形状、概念抓取

首先,明确不同的形状都可由细小的“零件”组合而成的,而且卷积的每个filter可以探测特定的形状;

又由于Feature Map保持了抓取后的空间结构;

因此若将探测到细小图形的Feature Map作为新的输入再次卷积后,则可以由此探测到“更大”的形状概念。因而经过层层的卷积后,所能够探测的形状、概念也变得越来越抽象和复杂。

2.3、filter内的权重矩阵W是网络根据数据学习得到的,也就是说,我们让神经网络自己学习以什么样的方式去观察图片。

3.1.2.3 多filters

每个filter可以抓取探测特定的形状的存在。因此我们自然而然的会选择用多个不同的filters对同一个图片进行多次抓取。每增加一个filter,就意味着你想让网络多抓取一个特征。

每增加一个filter,就多得到一个Feature Map,多个输出堆积,这样卷积层的输出也不再是depth为1的平面,将不同filters所卷积得到的Feature Maps按顺序堆叠后,就得到了一个卷积层的最终输出。。

这样卷积后输出的长方体可以作为新的输入送入另一个卷积层中处理。

3.1.2.4 加入非线性(ReLU变换)

和前馈神经网络一样,经过线性组合和偏移后,会加入非线性增强模型的拟合能力。

3.1.3 池化层:

它把输入信号分割成不重叠的区域,对于每个区域通过池化(下采样)运算来降低网络的空间分辨率,比如最大值池化是选择区域内的最大值,均值池化是计算区域内的平均值。通过该运算来消除信号的偏移和扭曲。如下为Max Pooling示意图:

Max pooling的主要功能是down sampling,却不会损坏识别结果。这就意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息,事实上,为了探测某个特定形状的存在,用一个filter对整个图片进行扫描,但只有出现了该特定形状的区域卷积获得的输出才是有用的,其他区域得到的数值对该形状是否存在的判定影响较小。

3.1.4 完全连接层:

全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间,通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。

4 相关论文:

4.1 AlexNet

参赛论文“ImageNet Classification with Deep Convolutional Networks”:https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

4.1.1 体系结构

该团队训练了一个大型的深度卷积神经网络,有6000万个参数和650,000个神经元,由五个卷积层,以及某些卷积层后跟着的max-pooling层,和三个全连接层,还有排在最后的1000-way的soft max层组成。

以下为论文中提及的该网络体系结构的一些新颖独特的功能:

ReLU非线性

在多个GPU上训练

局部响应归一化

重叠Pooling

总体结构:

“如图2所示,该网络包括八个带权层;前五层是卷积层,剩下三层是全连接层。最后一个全连接层的输出被送到一个1000-way的softmax层,其产生一个覆盖1000类标签的分布。我们的网络使得多分类的Logistic回归目标最大化,这相当于最大化了预测分布下训练样本中正确标签的对数概率平均值。”

论文中采用了两种减少过拟合的方法,分别是数据增强和Dropout;

数据增强:减少图像数据过拟合最简单最常用的方法,是使用标签-保留转换,人为地扩大数据集,“我们使用数据增强的两种不同形式,这两种形式都允许转换图像用很少的计算量从原始图像中产生,所以转换图像不需要存储在磁盘上。”

“数据增强的第一种形式由生成图像转化和水平反射组成。”

“数据增强的第二种形式包含改变训练图像中RGB通道的强度。”“该方案将top-1误差率减少了1%以上。”

Dropout:“我们在图2中前两个全连接层使用dropout。如果没有dropout,我们的网络会表现出大量的过拟合。dropout使收敛所需的迭代次数大致增加了一倍。”

 

4.1.2 论文细节摘录

(按论文中顺序)

向量化:

虽然ILSVRC是高清图片,但仍然按惯例被压到256x256使用。说明目前的方法和计算能力,还不足以处理更大规模的输入,另外,向量化的过程也是信息丢失的过程,但这个环节无法回避。

被压缩后的图片又减去了训练集的平均值,即,做了mean normalization。这个预处理的意义在于加速初期的学习,但论文中并未进行分析,更没有像其他的处理那样给出量化的影响,看来这都是处理的惯例了。

ReLU:

ReLU的引入,主要目的是为了提高学习速度。作者发现,如果使用ReLU作为激活函数,对于CNN学习图片分类的任务,学习速度远远超过传统的饱和非线性的激活函数,如tanh、sigmoid。对一个用来跑CIFAR-10的四层卷积,LeRU的学习速度是tanh的6倍。至于原因,文中并未进一步解释。或许是由于饱和非线性函数在边缘区域导数越来越小、反向传播时的衰减;或许是由于对于识别型的分类任务,更适合一个稀疏的网络,依赖少量激活的神经元完成任务。这些原因都是猜想,不容易验证。

多GPU训练:

因为神经网络的规模太大,超过单GPU内存(3G),两个GPU分别学习模型的一半。而且,模型的两部分仅在3/6/7/8层会使用对方的数据。多用一个GPU对训练时间影响并不明显,但使top 1/5错误率下降了1.7/1.2%。

Local Response Normalization:

加入这个机制的最初目的是,模仿真实神经元的侧抑制机制(lateral inhibition),提高网络的泛化能力。实际上,此机制能使top 1/5错误率下降了1.4/1.2%。我理解,这个机制在抑制相邻神经元的同时,其实也对本神经元的输出进行修正。饱和非线性函数在边缘区域衰减的特性还是必要的,经过此机制修正后,ReLU的正数部分也有类似于饱和非线性函数的曲线。ReLU+Local Response Normalization的输出,类似于真实神经元的电位发放的表现。

Overlapping Pooling:

Max Polling是为了进行信息压缩。我觉得,Overlapping Pooling的出发点是,认为传统的Polling丢失了过多的信息,而部分重叠的输入可以降低信息压缩的比例,从而减少信息丢失。此处理使top 1/5错误率下降了0.4/0.3%。

整体架构:

个人感觉,Alex的网络主要是为了够深、容量够大,还是有一些很奇怪的细节的,不过无伤大雅。比如输入是从256x256中裁了224x224像素,后边接的是核11x11、步长4、55x55的卷积层,224像素这个偶数相当奇怪,既然已经是裁过的结果,不如裁成227像素(11+54*4),后面的卷积层就不用补边了(Caffe里的AlexNet也是这么修改的)。论文中说第一层的神经元数量为253440,这应该是一个笔误,48*48*55*2=253440,作者原意应该是55*55*48*2=290400。

Data Augmentation:

对于这种规模(60M参数)的网络,如果数据不够多,必然学出来的都是过拟合。作者用了两个方法来增大数据集。方法一是裁剪,从256x256中裁出随机位置的224x224像素并加上水平翻转,这将数据扩大至原有的2178倍(33*33*2,论文原文中为2048倍),当然,为了避免测试集把关键内容裁掉,测试时还是4边+中心+翻转的10张图取平均值的。这基本上都是惯例做法了,所以作者没有多加解释。

方法二是加全局调整,对整个训练集做PCA来取得RGB值的主要特征,然后对输入进行主要特征的σ=0.1的高斯扰动。实际上相当于对图片的强度进行小范围调整。此处理使top 1错误率下降了1%。(此处没搞清楚为什么一定要根据整个训练集来做PCA,如果只是为了让学到的特征更稳定,单纯地调整图片亮度都可以达到同样目的)

Dropout:

Dropout的大概思路是,对于已有的神经网络,每次只训练其中一部分,以得到更稳定的特征,推迟过拟合的出现。Dropout虽然增加了训练时间,但大大推迟了过拟合。

训练过程:

mini-batch stochastic gradient descent,batch=128、momentum=0.9、weight decay=0.0005。每次验证集上不再提高时,将学习速度降低一个数量级继续训练。

结论&分析

1. 对于每一个改进,作者都能将前因后果说的很清楚,并将其效果量化,这种习惯值得学习。由此,我们可以反推出对最终正确率最关键的因素:网络深度(减一层2%、加一层1.7%)> 单层容量(双GPU约1.7%)> LRN(1.4%)> PCA干扰(1%)> 重叠Polling(0.4%)。即,虽然其他的Trick也有明显效果,但决定性的,还是尽可能保持一个足够深、足够大规模的网络。

2. 对于学习结果的分析。深度神经网络并不像一些基于统计的方法,有健全的理论支持。这种情况下,了解对学习结果,了解网络到底学到了什么东西,对加深我们的理解就至关重要。另一方面,由于对分数的提升太过恐怖(top5错误率接近腰斩),为了让大家信服,也需要对结果的充分展示以体现模型确实是在学习物体特征,而不是在通过某种方式hack标签数据。文中除了常规的case展示,还把倒数第二层的欧氏距离用于衡量图片是否相似,展示了很多图片查询的例子。这其实同时证明了倒数第二层是相当好的图片特征,这一层的用法有很大的想象空间。

3. 额外收获。作者对第一个卷积层的可视化非常有意思。第一个卷积层是直接对应到原图的局部信息,人能直接看明白。而这一层的可视化则说明了网络很依赖图片中的明暗边缘(很像Gabor Filter)、颜色变化、纹理,这是直观可以理解的。但很有趣的是,两块GPU由于前两个卷积层是相互独立的,学习中,两块GPU的第一个卷积层形成了自发的分工(而且实验是可重复的),一个GPU的第一层更倾向于检测略缓和的明暗变化,很少用到颜色信息,而另一个GPU的第一层更倾向于检测颜色变化、同时检测更急剧的明暗变化和纹理。其实一个单纯分类图片的神经网络能有这样的演化已经超出很多人的想象能力了。估计网络的第三层应该也有类似的分工,只是不如第一层容易展示出来。

 

4.2 ResNet

https://arxiv.org/pdf/1512.03385.pdf 论文地址

ResNet——MSRA何凯明团队的Residual Networks,在2015年ImageNet上大放异彩,在ImageNet的classification、detection、localization以及COCO的detection和segmentation上均斩获了第一名的成绩,而且Deep Residual Learning for Image Recognition也获得了CVPR2016的best paper,实在是实至名归。就让我们来观摩大神的这篇上乘之作。

 

ResNet最根本的动机就是所谓的“退化”问题,即当模型的层次加深时,错误率却提高了,如下图:

但是模型的深度加深,学习能力增强,因此更深的模型不应当产生比它更浅的模型更高的错误率。而这个“退化”问题产生的原因归结于优化难题,当模型变复杂时,SGD的优化变得更加困难,导致了模型达不到好的学习效果。

针对这个问题,作者提出了一个Residual的结构:

即增加一个identity mapping(恒等映射),将原始所需要学的函数H(x)转换成F(x)+x,而作者认为这两种表达的效果相同,但是优化的难度却并不相同,作者假设F(x)的优化 会比H(x)简单的多。这一想法也是源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。

这个Residual block通过shortcut connection实现,通过shortcut将这个block的输入和输出进行一个element-wise的加叠,这个简单的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。

接下来,作者就设计实验来证明自己的观点。

首先构建了一个18层和一个34层的plain网络,即将所有层进行简单的铺叠,然后构建了一个18层和一个34层的residual网络,仅仅是在plain上插入了shortcut,而且这两个网络的参数量、计算量相同,并且和之前有很好效果的VGG-19相比,计算量要小很多。(36亿FLOPs VS 196亿FLOPs,FLOPs即每秒浮点运算次数。)这也是作者反复强调的地方,也是这个模型最大的优势所在。

 

模型构建好后进行实验,在plain上观测到明显的退化现象,而且ResNet上不仅没有退化,34层网络的效果反而比18层的更好,而且不仅如此,ResNet的收敛速度比plain的要快得多。

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

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

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

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

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

进一步实验,作者又提出了deeper的residual block:

这相当于对于相同数量的层又减少了参数量,因此可以拓展成更深的模型。于是作者提出了50、101、152层的ResNet,而且不仅没有出现退化问题,错误率也大大降低,同时计算复杂度也保持在很低的程度。

这个时候ResNet的错误率已经把其他网络落下几条街了,但是似乎还并不满足,于是又搭建了更加变态的1202层的网络,对于这么深的网络,优化依然并不困难,但是出现了过拟合的问题,这是很正常的,作者也说了以后会对这个1202层的模型进行进一步的改进.

4.3 GoogleNet

4.3.1 GoogLeNet相关论文及下载地址

[v1] Going Deeper withConvolutions, 6.67% test error,2014.9

论文地址:http://arxiv.org/abs/1409.4842

[v2] Batch Normalization:Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error,2015.2

论文地址:http://arxiv.org/abs/1502.03167

[v3] Rethinking theInception Architecture for Computer Vision, 3.5%test error,2015.12

论文地址:http://arxiv.org/abs/1512.00567

[v4] Inception-v4,Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error,2016.2

论文地址:http://arxiv.org/abs/1602.07261

4.3.2 GoogLeNet发展历程

1. Inception v1的网络,打破了常规的卷积层串联的模式,将1x1,3x3,5x5的卷积层和3x3的pooling池化层并联组合后concatenate组装在一起的设计思路;

2. Inception v2的网络在Inception v1的基础上,进行了改进,一方面了加入了BN层,减少了Internal Covariate Shift(内部神经元分布的改变),使每一层的输出都规范化到一个N(0, 1)的高斯,还去除了Dropout、LRN等结构;另外一方面学习VGG用2个3x3的卷积替代inception模块中的5x5卷积,既降低了参数数量,又加速计算;

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

4. Inception v4结合了微软的ResNet,发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inception v4模型,能达到与Inception-ResNet v2相媲美的性能。

4.3.3 Inception V1

4.3.3.1 概述

Google Inception Net首次出现在ILSVRC 2014的比赛中,以较大优势取得了第一名。那届比赛中的Inception Net通常被称为Inception V1,它最大的特点是控制了计算量和参数量的同时,获得了非常好的分类性能——top-5错误率6.67%,只有AlexNet的一半不到。Inception V1有22层深,比AlexNet的8层或者VGGNet的19层还要更深。但其计算量只有15亿次浮点运算,同时只有500万的参数量,仅为AlexNet参数量(6000万)的1/12,却可以达到远胜于AlexNet的准确率,可以说是非常优秀并且非常实用的模型。Inception V1降低参数量的目的有两点,第一,参数越多模型越庞大,需要供模型学习的数据量就越大,而目前高质量的数据非常昂贵;第二,参数越多,耗费的计算资源也会更大。Inception V1参数少但效果好的原因除了模型层数更深、表达能力更强外,还有两点:一是去除了最后的全连接层,用全局平均池化层(即将图片尺寸变为1*1)来取代它。全连接层几乎占据了AlexNet或VGGNet中90%的参数量,而且会引起过拟合,去除全连接层后模型训练更快并且减轻了过拟合。用全局平均池化层取代全连接层的做法借鉴了NetworkIn Network(以下简称NIN)论文。二是Inception V1中精心设计的InceptionModule提高了参数的利用效率,其结构如图1所示。这一部分也借鉴了NIN的思想,形象的解释就是Inception Module本身如同大网络中的一个小网络,其结构可以反复堆叠在一起形成大网络。不过Inception V1比NIN更进一步的是增加了分支网络,NIN则主要是级联的卷积层和MLPConv层。一般来说卷积层要提升表达能力,主要依靠增加输出通道数,但副作用是计算量增大和过拟合。每一个输出通道对应一个滤波器,同一个滤波器共享参数,只能提取一类特征,因此一个输出通道只能做一种特征处理。而NIN中的MLPConv则拥有更强大的能力,允许在输出通道之间组合信息,因此效果明显。可以说,MLPConv基本等效于普通卷积层后再连接1*1的卷积和ReLU激活函数。

图1 Inception Module

4.3.3.2 InceptionModule

Inception Module的基本结构如图1,有4个分支:第一个分支对输入进行1*1的卷积,这其实也是NIN中提出的一个重要结构。1*1的卷积是一个非常优秀的结构,它可以跨通道组织信息,提高网络的表达能力,同时可以对输出通道升维和降维。可以看到Inception Module的4个分支都用到了1*1卷积,来进行低成本(计算量比3*3小很多)的跨通道的特征变换。第二个分支先使用了1*1卷积,然后连接3*3卷积,相当于进行了两次特征变换。第三个分支类似,先是1*1的卷积,然后连接5*5卷积。最后一个分支则是3*3最大池化后直接使用1*1卷积。有的分支只使用1*1卷积,有的分支使用了其他尺寸的卷积时也会再使用1*1卷积,这是因为1*1卷积的性价比很高,用很小的计算量就能增加一层特征变换和非线性化。Inception Module的4个分支在最后通过一个聚合操作合并(在输出通道数这个维度上聚合)。Inception Module中包含了3种不同尺寸的卷积和1个最大池化,增加了网络对不同尺度的适应性,这一部分和Multi-Scale的思想类似。早期计算机视觉的研究中,受灵长类神经视觉系统的启发,Serre使用不同尺寸的Gabor滤波器处理不同尺寸的图片,Inception V1借鉴了这种思想。Inception V1的论文中指出,InceptionModule可以让网络的深度和宽度高效率地扩充,提升准确率且不致于过拟合。

稀疏结构是非常适合神经网络的一种结构,尤其是对非常大型、非常深的神经网络,可以减轻过拟合并降低计算量,例如卷积神经网络就是稀疏的连接。Inception Net的主要目标就是找到最优的稀疏结构单元Inception Module,论文中提到其稀疏结构基于Hebbian原理,这里简单解释一下Hebbian原理:神经反射活动的持续与重复会导致神经元连接稳定性的持久提升,当两个神经元细胞A和B距离很近,并且A参与了对B重复、持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。总结一下即“一起发射的神经元会连在一起”(Cells that fire together, wire together),学习过程中的刺激会使神经元间的突触强度增加。受Hebbian原理启发,另一篇文章Provable Bounds for Learning Some Deep Representations提出,如果数据集的概率分布可以被一个很大很稀疏的神经网络所表达,那么构筑这个网络的最佳方法是逐层构筑网络:将上一层高度相关的节点聚类,并将聚类出来的每一个小簇(cluster)连接到一起,如图2所示。这个相关性高的节点应该被连接在一起的结论,即是从神经网络的角度对Hebbian原理有效性的证明。

图2将高度相关的节点连接在一起,形成稀疏网络

因此一个“好”的稀疏结构,应该是符合Hebbian原理的,我们应该把相关性高的一簇神经元节点连接在一起。在图片数据中,天然的就是临近区域的数据相关性高,因此相邻的像素点被卷积操作连接在一起。而我们可能有多个卷积核,在同一空间位置但在不同通道的卷积核的输出结果相关性极高。因此,一个1*1的卷积就可以很自然地把这些相关性很高的、在同一个空间位置但是不同通道的特征连接在一起,这就是为什么1*1卷积这么频繁地被应用到Inception Net中的原因。1*1卷积所连接的节点的相关性是最高的,而稍微大一点尺寸的卷积,比如3*3、5*5的卷积所连接的节点相关性也很高,因此也可以适当地使用一些大尺寸的卷积,增加多样性(diversity)。Inception Module通过4个分支中不同尺寸的1*1、3*3、5*5等小型卷积将相关性很高的节点连接在一起,就完成了其设计初衷,构建出了很高效的符合Hebbian原理的稀疏结构。

4.3.3.3 InceptionNet网络结构

在Inception Module中,通常1*1卷积的比例(输出通道数占比)最高,3*3卷积和5*5卷积稍低。而在整个网络中,会有多个堆叠的Inception Module,我们希望靠后的InceptionModule可以捕捉更高阶的抽象特征,因此靠后的Inception Module的卷积的空间集中度应该逐渐降低,这样可以捕获更大面积的特征。因此,越靠后的InceptionModule中,3*3和5*5这两个大面积的卷积核的占比(输出通道数)应该更多。

Inception Net有22层深,除了最后一层的输出,其中间节点的分类效果也很好。因此在Inception Net中,还使用到了辅助分类节点(auxiliary classifiers),即将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中。这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个Inception Net的训练很有裨益。Inception V1也使用了Multi-Scale、Multi-Crop等数据增强方法,并在不同的采样数据上训练了7个模型进行融合,得到了最后的ILSVRC 2014的比赛成绩——top-5错误率6.67%。

对上图做如下说明:

1. 显然GoogLeNet采用了模块化的结构,方便增添和修改;

2. 网络最后采用了average pooling来代替全连接层,想法来自NIN,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune;

3. 虽然移除了全连接,但是网络中依然使用了Dropout ;

4. 为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。文章中说这两个辅助的分类器的loss应该加一个衰减系数,但看caffe中的model也没有加任何衰减。此外,实际测试的时候,这两个额外的softmax会被去掉。

下图是清晰图。

4.3.4 Inception V2

Inception V2学习了VGGNet,用两个3*3的卷积代替5*5的大卷积(用以降低参数量并减轻过拟合),还提出了著名的BatchNormalization(以下简称BN)方法。BN是一个非常有效的正则化方法,可以让大型卷积网络的训练速度加快很多倍,同时收敛后的分类准确率也可以得到大幅提高。BN在用于神经网络某层时,会对每一个mini-batch数据的内部进行标准化(normalization)处理,使输出规范化到N(0,1)的正态分布,减少了InternalCovariate Shift(内部神经元分布的改变)。BN的论文指出,传统的深度神经网络在训练时,每一层的输入的分布都在变化,导致训练变得困难,我们只能使用一个很小的学习速率解决这个问题。而对每一层使用BN之后,我们就可以有效地解决这个问题,学习速率可以增大很多倍,达到之前的准确率所需要的迭代次数只有1/14,训练时间大大缩短。而达到之前的准确率后,可以继续训练,并最终取得远超于Inception V1模型的性能——top-5错误率4.8%,已经优于人眼水平。因为BN某种意义上还起到了正则化的作用,所以可以减少或者取消Dropout,简化网络结构。

只是单纯地使用BN获得的增益还不明显,还需要一些相应的调整:增大学习速率并加快学习衰减速度以适用BN规范化后的数据;去除Dropout并减轻L2正则(因BN已起到正则化的作用);去除LRN;更彻底地对训练样本进行shuffle;减少数据增强过程中对数据的光学畸变(因为BN训练更快,每个样本被训练的次数更少,因此更真实的样本对训练更有帮助)。在使用了这些措施后,Inception V2在训练达到Inception V1的准确率时快了14倍,并且模型在收敛时的准确率上限更高。

4.3.5 Inception V3

Inception V3网络则主要有两方面的改造:一是引入了Factorization into smallconvolutions的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将7*7卷积拆成1*7卷积和7*1卷积,或者将3*3卷积拆成1*3卷积和3*1卷积,如图3所示。一方面节约了大量参数,加速运算并减轻了过拟合(比将7*7卷积拆成1*7卷积和7*1卷积,比拆成3个3*3卷积更节约参数),同时增加了一层非线性扩展模型表达能力。论文中指出,这种非对称的卷积结构拆分,其结果比对称地拆为几个相同的小卷积核效果更明显,可以处理更多、更丰富的空间特征,增加特征多样性。

图 3将一个3*3卷积拆成1*3卷积和3*1卷积

Inception V3优化了Inception Module的结构,现在Inception Module有35*35、17*17和8*8三种不同结构,如图4所示。这些Inception Module只在网络的后部出现,前部还是普通的卷积层。并且Inception V3除了在Inception Module中使用分支,还在分支中使用了分支(8*8的结构中),可以说是Network In Network In Network。

图4Inception V3中三种结构的InceptionModule

(1) 图4左是GoogLeNetV1中使用的Inception结构;

(2) 图5中是用3x3卷积序列来代替大卷积核;

(3) 图6右是用nx1卷积来代替大卷积核,这里设定n=7来应对17x17大小的feature map。该结构被正式用在GoogLeNet V2中。

图5Inception V3的网络结构

4.3.6 Inception V4

Inception V4相比V3主要是结合了微软的ResNet。

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

 

4.4 VGGNet

https://arxiv.org/pdf/1409.1556.pdf

VGG Net是ILSCVRC2014 classification的第二名,localization的第一名,网络结构上比其他网络都要来得复杂(实验过程中卷积层最多有16个),但是文章中对如何构造复杂网络和训练网络的描述非常详尽,相信对research会有很多帮助

4.4.1 Training

网络的training借鉴了AlexNet在训练中使用的方法,同样是momentum SGD+dropout,处理图像尺寸的方法相同,做数据增量的方法也相同,但是由于一共有5个网络需要训练,且网络深度依次递增,因此在参数初始化时作者提出:

最简单的网络使用随机初始化,而后面的网络中最前面的4个卷积层与最后3个全连接层参数用先前网络的参数初始化,其他层使用随机初始化,这种首先训练简单网络,随后使用其参数来初始化复杂网络的训练方法是一种非常合理且高效的方式

值得一提的是文中对比了7*7的卷积层与三个3*3的卷积层之间的对比,相比较而言多个小的卷积层级联能在引入更多的linear rectify之外同时还能降低卷积层参数的数量。

整个训练过程如下:

1 Classification

设计结构复杂度依次递增的网络

在Image size的处理上,作者提出single-scale和multi-scale的方法, single-scale的方法与AlexNet相同,先resize后crop,multi-scale的方法类似于随机采样,每次rescale之前在一个固定区间内(如[256,512])选取一个scale,这样每个图像的尺寸就不同了,但是怎么处理feature长度不同的问题作者似乎没有说明

每次训练新的网络之前用之前网络的参数进行初始化以加快收敛速度

2 Localization

Training Localization的方法与classification相同,只不过用的是Euclidean Loss

4.4.2 Testing

在testing阶段,网络接收图像数据之前首先需要把图像rescale到固定大小,作者称之为test scale,之后首先通过fc层计算,我们把fc层看作一个卷积窗口为1*1的卷积层,得到的feature map维度与object类别相同。

这样做的好处是对比首先crop再通过卷积计算feature map的做法,直接通过fc层计算可以减少许多重复的卷积计算量,crop出来的图像之间必然会有重叠的部分,这些重叠部分增加了测试时卷积的计算量,但是笔者认为既然在训练时使用crop来做数据增量,测试时用crop可以增加网络输出的置信度(每个crop输出分类结果,这个结果甚至可以用来做类似bagging的训练),如果面对实时性要求比较高的情况,对整张图片应用fc层是比较可行的方法。

 

 

5 其它

http://www.voidcn.com/blog/kangroger/article/p-6409081.html

 

你可能感兴趣的:(ImageNet调查报告)