首发地址:https://yq.aliyun.com/articles/74892
更多深度文章,请关注:https://yq.aliyun.com/cloud
作者信息
Adrian Colyer:morning paper编辑、Accel Partners投资合伙人、SpringSource首席技术官、VMware技术总监。
领英:http://www.linkedin.com/in/adriancolyer/
Twitter:https://twitter.com/adriancolyer
这篇文章介绍“ top100深度学习论文”列表中卷积神经网络的第二部分,PartⅠ的内容可以在此查看。本篇主要介绍以下几篇论文:
Return of the devil in the details: delving deep into convolutional nets,Chatfield,2014.
Spatial pyramid pooling in deep convolutional networks for visual recognition,He,2014.
Very deep convolutional networks for largescale image recognition,Simonyan
&Zisserman,2014.
Going deeper with convolutions,Szegedy,2015.
回归细节的魔鬼:深入卷积网络
这篇论文是一个非常好的研究,CNN已经在图像识别任务中打败了手工提取特征,但是由于所有这些不是基于相同条件下进行的比较,所以很难分辨出真正占据差异的因素。Chatfield等人研究了IFV(改进的费舍尔向量)的浅层表示,三种基于CNN的不同深层表示,以及对目标数据集进行预训练和微调的深层表征。对于所有的研究,使用相同的任务(PASCAL VOC分类),三种不同的CNN表示分别为基于Krizhevksy的架构CNN-F(Fast)、使用减小的步长和较小的第1层卷积层的感知野的CNN-M(Medium)以及基于OverFeat的“准确”网络的CNN-S(Slow)。
主要发现:
- 增强将IFV和CNN的性能提高了约3%。翻转只能起到略微的作用,但翻转结合裁剪效果却很好。IFV和CNN都受到颜色信息的添加或减少的影响,将图像转换为灰度后重新训练CNN,会导致3%的性能下降。
- 基于CNN的方法仍然优于浅层编码等方法10%的性能。
- CNNM和CNNS均优于CNNFast 23%的性能;CNNM比CNNS快25%。
- 再次训练CNN,最后一层较低的维数导致了边缘性能的提升。
- 微调导致结果有显著差异,提高约2.7%。
论文提出了一种基于CNN的图像分类方法的严格的经验评估,以及与传统的浅层特征编码方法的比较。结果表明,让数据增加可以显著提高浅层表示的性能。尽管有了这样的改进,但深层次架构的性能仍然大大超过了浅层的方法。结果表明,在ILSVRC数据集上的深层表现是其他数据集的性能一个很好的指标,另外使用深层表示和线性SVM的组合的微调可以进一步提高已实现的好结果。
基于空间金字塔池化的深层卷积网络的视觉识别
到目前为止,CNN的架构一般为一系列的卷积层,之后是全连接层以及N路softmax输出,这种架构造成其只能处理固定大小的图像。但卷积层中使用的滑动窗实际上可以处理任何图像尺寸,只是由于全连接层具有固定尺寸的输入限制了尺寸,导致效果远远不理想。
空间金字塔池化(SPP)在卷积层和全连接层之间增加了一个新的层,新层的任务是将任何大小的输入映射到固定大小的输出。空间金字塔池化的思想早已存在于计算机视觉中,但并没有被应用于CNN。
SPP通过将最后一层卷积层输出的特征图划分成尺寸与图像大小成正比的多个空间箱,因此无论图像大小如何,空间箱的数量都会被固定。空间箱以不同的间隔尺寸被捕获,在每个空间箱中,每个过滤器的响应使用最大池。
由于箱的数量已知,可以连接SPP输出以给出固定长度的表示(见上图),
这允许任意的尺度输入。当输入图像处于不同的尺度时,网络将提取不同尺度的特征。
将SPP层添加到四个不同网络模型中,包括AlexNet(Krizhevsky等)和OverFeat后,都提高了它们的准确性。" 多层次池化取得好的效果不仅仅是因为更多的参数,而是因为多层次池化对于物体变形和空间布局的变化是鲁棒的。"
SPP技术也可用于检测。之前最先进的RCNN方法需要从输入图像找到2000个候选窗口,并利用卷积网络提取每个窗口的特征,这种方法是昂贵而又缓慢的。但SPP网络仅提取一次特征图(可能在多个尺度上),即对每个候选窗口运行一次空间金字塔池化。
基于很深的卷积网络的大规模图像识别
之前了解了ConvNet的架构以及一些变化,探索了不同窗口大小和步长以及多尺度的训练和测试的结果。在本论文中,Simonyan和Zisserman让所有的这些变量保持不变,探讨了网络深度对分类准确度的影响。
基本设置:固定大小的224 x 224 彩色输入图像,并且每个像素值减去其平均像素值(归一化);卷积层使用具有3×3感知野的滤波器,并且配置一个1×1大小的卷积,步长固定为1像素;五个最大池化层与卷积层交织后进行空间池化;然后输入到三个全连接层及最终的softmax层;隐藏层都使用ReLU激活函数。
网络的实际架构如下表所示(注意使用了一个局部响应归一化-LRN):
以下是作者的结果:
首先,局部响应归一化并没有提高准确性,反而增加了训练时间,所以在较深的体系架构中不被使用。其次,分类误差随着ConvNet深度的增加而减小。
当深度达到19层时,模型的错误率达到饱和,但更深层的模型可能对较大的数据集是有益的。将表中网络B与由5个5×5卷积层的浅层网络进行了比较,结果表明,一对3×3的卷积层代替单个5×5卷积层后准确率提升了7%,这证实了具有小滤波器的深层网络优于具有较大滤波器的浅层网络。
卷积更深入
这是论文主要介绍“Inception”网络架构的实例“GoogLeNet”网络,它在2014 ISLVRC(ImageNet)竞赛中取得最好的结果。GoogLeNet网络的深度是22层,整体架构令人难以置信。
尽管看起来令人恐惧,GoogLeNet实际上比两年前获胜的Krizhevsky的ConvNet网络的参数要少12倍,同时精度显著提升。高效功率和内存使用是“Inception”架构的设计目标:
本文提出的深层架构设计的考虑因素主要是基于效率这个因素,而不是针对准确度。对于大多数实验,这些模型的设计不是纯粹的学术好奇心,而是可以应用于现实世界中,即使在大数据集中,其成本也是合理的。
你可以通过增加层数(深度)或者是每层的宽度使得的网络“更大”,原则上这将导致更高质量的模型。然而,更大的网络将导致更多的参数,使得它们容易过拟合。为了避免这种情况,需要更多的训练数据以及更多的计算资源来训练。
解决这个问题的一个方法是引入稀疏性,Arora等人在“用于学习一些深层次表示的可行范围”中表明,如果数据集的概率分布由大的、非常稀疏的深层神经网络表示,则可以通过分析前一层激活值和高度相关输出的聚类神经元的相关统计来使用最佳网络技术每一层。
不幸的是,当涉及非均匀稀疏数据架构的数值计算时,目前的计算硬件设备效率很低。
是否有希望利用稀疏性的过滤器的架构,通过在当前的硬件上使用密集矩阵上的计算?Inception架构开始是对这一目标的进行探索。
Inception架构的主要思想是考虑卷积视觉网络的最优局部稀疏架构如何被现成的密集组件近似和涵盖。
假设使用层次架构的方法,这只需找到最优层架构,然后对该架构进行堆叠即可。初始层的基本架构如下所示:
1×1的卷积检测局部区域中的相关单元,较大(3×3和5×5)的卷积检测更多的空间域。由于池化具有好的效果,所以每个阶段加入池化。
虽然这种架构可能会涵盖最优的稀疏架构,但它计算复杂度非常高、效率低。
解决方案是在所有3×3和5×5的路径上使用1×1的卷积来降维。下图给出了一个Inception层的最终架构:
一般而言,Inception网络是由上述类型的模块组成,模块彼此堆叠,偶尔具有步长2的最大池化层将网格的分辨率减半。
GoogLeNet模型中将这些层叠在一起,深度为22层(如果池化层也被计数,则为27),总体模块数量约为100个!梯度通过这么多层传递将是一个挑战。由于较浅的网络仍然具有很强的辨别性能,因此向中间层添加辅助分类器(本节开头的整个网络图中的黄色框)。这些分类器将较小的卷积网络放置在Inception(4a)和(4d)模块的输出之上。在训练过程中,损失会根据权重叠加,在测试时,这些辅助网络会被丢弃。
本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。
文章原标题《Convolutional neural networks, Part 2》,作者:Adrian Colyer,译者:海棠,审阅:
附件为原文的pdf
文章为简译,更为详细的内容,请查看原文
翻译者: 海棠