原论文地址:Very Deep Convolutional Networks for Large-Scale Image Recognition
摘要:
主要研究了深度对卷积网络在大规模图像识别中的准确率的影响。主要贡献是:对使用很小的卷积核(3*3)来增加深度的网络进行了评估,表明通过将深度提升到16-19个权重层,能得到很好的性能。
介绍:
随着卷积网络在计算机视觉领域的应用越来越广泛,为了获得更高的准确率,越来越多的人尝试在krizhevsky2012imagenet中的原始框架上进行改进。例如,ILSVRC-2013最好的参赛模型在第一个卷积层上使用了较小的接受域窗口以及较小的滑动步长。另一种改进方案是在整幅图像以及它的多个尺寸上,稠密的训练和测试网络。本文中,我们关注了卷积网络结构设计中的另一个重要因素——深度。为此,我们固定了网络框架的其他参数,然后通过增加更多的卷积层来增加网络的深度,这是可行的,因为我们在所有层都是用非常小(3×3)的卷积滤波器。
文章组织结构:在Sect.2 中,描述了我们的卷积网络框架。Sect.3 介绍了图像分类任务的训练和评估的主要细节。Sect.4 在ILSVRC分类任务上对不同框架进行了对比。Sect.5 对本文进行了总结。为了文章的完整性,我们在Appendix A 中描述了我们的ILSVRC-2014目标定位系统,并在Appendix B 中讨论了非常深的特征对于其他数据集的泛化能力。最后,Appendix C 包含了本文的主要修订记录。
Sect.2 convent configurations
相同的卷积层都用相同的方式设计。在本章,首先介绍了卷积网络的通用结构,然后描述了在评估中的具体配置细节。最后讨论了我们的设计选择,并与之前最好的网络进行了比较。
2.1 体系结构
训练阶段,输入为固定的224*224的RGB图像。唯一做的预处理是对每个像素减去训练集中的RGB均值。卷积核使用3*3,在我们的一种配置中也有使用1*1的情况,这可以看作是对输入通道的一个线性变换(其后面接一个非线性变换)。步长固定为一像素。padding用来保持卷积后图像的原来大小分辨率。空间池化包含五个最大池化层,它们接在部分卷积层的后面,(并不是所有卷积层都接有最大池化层)。最大池化层为2*2的滑动窗口,滑动步长为2。在一整堆卷积层后接了三个全连接层,前两个全连接层各有4096个通道,第三个在用来做1000类的ILSVRC分类,因此包含1000个通道(每个通道代表一类)。最后一层是一个soft-max层。全连接层的配置在所有的网络中一致。
所有隐层都是使用非线性修正(ReLu)。
2.2 结构
如图所示,每一列代表一种网络,所有网络的配置遵循sect.2.1中的通用设计,只有深度不同。(从含有11个权重层的网络--8个卷积层和三个全连接层 到 含有19个权重层的网络--16个卷积层和三个全连接层)。
卷积层的宽度(通道的数量)非常小,从第一层的64开始,然后每经过一个最大池化层,数量增加一倍,直到数量达到512。
我们专注看vgg16网络,发现每个卷积层会有不同个数的卷积层堆叠。如下图:
每一段使用了很多卷积层堆叠,然后再经过池化层,这其实是非常有用的设计。如下图所示:
两个3x3的卷积层串联相当于1个5x5的卷积层,即一个像素会跟周围5x5的像素产生关联,可以说感受野大小为5x5.
以此类推,3个3x3的卷积层串联的效果则相当于1个7x7的卷积层。那为什么选择使用3个3x3的卷积层而不是使用1个7x7的卷积层呢?
(1)3个串联的3x3的卷积层,拥有比1个7x7的卷积层更少的参数,参数量是后者的(3x3x3 ) /(7x7) = 55%
(2)3个3x3的卷积层比1个7x7的卷积层拥有更多的非线性变换,前者可以使用3次ReLU**函数,而后者只能使一次,这样使得CNN对特征的学习能力更强。
Sect.3 CLASSIFICATION FRAMEWORK
在这一章,我们将对分类卷积网络的训练和评估的细节进行介绍。
3.1 训练
随机的从经过尺寸缩放的训练图像上进行裁切,来获得卷积网络固定尺寸224×224的输入图像(每一张图像的每一个SGD迭代时裁切一次)。为了进一步对训练集进行数据增强,裁切图像进行随机的水平翻转和随机的RGB颜色转换。训练图像的尺寸缩放将在后面进行解释。
Training image size 用S代表经过各向同性缩放的(isotropically-rescaled)训练图像的最小边,卷积网络的输入图像就是从中裁切的(我们也将S成为训练尺寸)。若裁切图像的尺寸固定为224×224,原则上S可以取任意不小于224的值:如果S=224,裁切图像将会获取整幅图像的统计信息,可以完整的涵盖训练图像的最小边。如果S≫224,裁切图像将会对应图像的一小部分,包含一个小的对象或者对象的一个部分。
我们考虑使用两种方法来设定训练尺寸S。第一种方法是针对单尺度图像的训练,固定S(注意到,在采样的裁切图像内的内容仍然能表示多尺度图像的统计信息)。在我们的实验中,我们评估了两种固定尺寸训练获得的模型:S=256和S=384。我们先使用S=256来对一种卷积网络配置进行训练。为了加快S=384的网络的训练速度,使用S=256预训练的权重进行初始化,并且使用一个很小的初始学习率:10的−3次方。
第二种设定S的方法是多尺度训练,每一幅图像单独的从[Smin,Smax]中随机选取S来进行尺寸缩放(Smin=256,Smax=512)。由于图像中的对象可能是各种尺寸的,因此在训练中采用这种方法是有利的。这同样可以看作是一种尺寸抖动(scale jittering)的训练集数据增强,使得一个单一模型能够识别各种尺寸的对象。考虑到训练速度,我们使用固定S=384预训练模型相同的配置对一个单尺度模型的所有层进行微调,来训练多尺度模型。
3.2 测试
在测试阶段,对于一个训练好的卷积网络和一张输入图像,由以下方法进行分类。首先,图像的最小边被各向同性的缩放成预定义的尺寸,设为Q(我们也将此称为测试尺寸)。我们注意到Q并不一定要与训练尺寸S相同(Sect.4 将会展示,对于一个S使用不同的Q将有助于性能的提升)。然后,根据sermanet2013overfeat中的方法将网络密集的应用在经过尺寸缩放的测试图像上。即先将全连接层转换成卷积层(第一个全连接层转换成7×7的卷积层,后两个全连接层转换成1×1的卷积层),再将这样得到的全卷积网络运用在整幅图像上(未裁切的)。输出是一个分类得分图,通道的数量和类别的数量相同,空间分辨率依赖于输入图像尺寸。最终为了得到固定尺寸的分类得分向量,将分类得分图进行空间平均化(求和——池化)。我们同样使用水平翻转来对测试集进行数据增强;在原始图像和翻转图像上的soft-max分类概率的平均值作为这幅图像的最终得分。
由于测试阶段在整幅图像上使用了全卷积网络,因此不需要对图像进行多个裁切采样krizhevsky2012imagenet,因为网络对每个裁切的重新计算会使效率降低。而与此同时,正如GoogLeNet 所做的,使用大量的裁切图像可以提高准确率,因为和全卷积网络相比,它能生成关于输入图像更好的采样。同样的,由于不同的卷积边界条件,多重裁切评估与密集评估是互补的:当在裁切图像上使用卷积网络时,卷积特征图使用0进行填充,而使用密集评估时,对于相同裁切图像的填充自然而然的来自图像邻近的部分(由于卷积和空间池化),这大大增加了网络整体的接受域,因此获取了更多的上下文信息。虽然我们认为在实践中,多重裁切带来的计算时间并不能成为准确率上潜在收益的理由,但是作为参考,我们依然在评估时对每个尺寸使用了50 张裁切图像(5×5个规则网格以及它们的翻转),3种尺寸一共150张裁切图像,这和GoogLeNet 中使用4种尺寸一共144张裁切图像是可比的。
Sect.4 不同框架测试对比
我们开始评估在单一尺度上使用Sect 2.2中层配置的独立卷积网络模型的性能。测试图像尺寸的设置按照:对于固定的S,设置Q=S;对于抖动的S∈[Smin,Smax],设置Q=0.5(Smin+Smax)。结果如下图Table3展示。
评估了卷积网络模型在单一尺度上的性能之后,我们现在来评估在测试阶段使用尺寸抖动的效果。先在几个经过尺寸缩放的测试图像上运行模型(对应于不同的Q值),然后计算每个类概率的平均值。考虑到当训练尺寸和测试尺寸存在巨大差别时将会导致模型性能下降,因此在模型训练时,我们固定SS的值,使用接近于S的三个测试尺寸Q={S−32,S,S+32}来进行评估。同时在训练阶段使用尺寸抖动使得模型在测试阶段能够应用在尺寸范围更大的图像上,因此模型的训练尺寸使用S∈[Smin;Smax],然后在更大范围的测试尺寸Q={Smin,0.5(Smin+Smax),Smax}上进行评估。