论文使用的VGG网络在ILSVRC2014图像分类比赛中获得了第二名的成绩,后来的许多网络结构也是在VGG网络的基础上进行改进,取得了很好的效果。论文主要是讨论了卷积神经网络(ConvNet)架构设计的另一个重要方面——深度,通过将深度增加到16-19层,分类效果得到了显著的提升。
1 网络结构
文章分别使用了6种不同深度的网络进行对比,这6种网络的结构如下:
这几个网络都有一致的配置,只有层数不一样,用A,B,…E命名,输入的图像是224x224的RGB图像,做过的预处理是将图像的每个像素减去RGB均值。卷积层的步长是1,pooling层是2x2的,步长为2,最后连接三个全连接层后再接一个softmax进行分类,使用的激活函数为ReLU。这几个网络里只有A-LRN中使用了Local Response Normalisation (LRN) normalisation[1],由于使用了LRN效果没有提升,反而增加了计算时间,所以在B,C,D,E的对比中不再将LRN引入。
2 实验过程
训练过程
训练使用的是带有动量的mini-batch梯度下降的方法,batch大小为256,动量设置为0.9,训练正则项所乘的参数设置为5*10-4(10的-4次方),dropout率设置为0.5,learning rate设置为10的-2次方。实验训练了370k次(74个epochs)。
论文提到网络权重的初始化很重要,初始化不好了可能会让学习停止。论文是这样做的,先对A网络进行随机初始化参数进行训练,然后,将训练好的A网络的参数去初始化后边深层网络的前4层以及全连接层,剩下的层是用均值为0,方差为0.01的正态分布去随机初始化的,并且biases初始化为0。并且论文里提到,可能存在不需要预训练参数直接进行初始化参数的方法,需要进一步探索。
为了获得224x224的输入图像,论文里是对原图进行各向同性的放缩后,采取随机裁剪的方式获得的,使用S代表放缩后的图像的最短边,所以S>=224。为了扩充数据集,裁剪后的图像进行了随机的水平翻转以及随机的RGB颜色转换[1]
同时呢,论文的还采用了多种尺度的训练方式,就是将原始图片采用不同的S放缩后进行裁剪训练,比如让S=256,S=384分别训练,还有一种动态改变S的方式,就是给定S的范围[Smin,Smax],让每张训练图片随机选取S进行训练,这样相当于通过尺度抖动来增强数据。
测试过程
首先,图像的最小边被各向同性的缩放成预定义的尺寸,设为Q,Q并不一定要与训练尺寸S相同。然后,根据[2]中的方法将网络密集的应用在经过尺寸缩放的测试图像上。即先将全连接层转换成卷积层(第一个全连接层转换成7×7的卷积层,后两个全连接层转换成1×1的卷积层),再将这样得到的全卷积网络运用在整幅图像上(未裁切的)。输出是一个分类得分图,通道的数量和类别的数量相同,空间分辨率依赖于输入图像尺寸。最终为了得到固定尺寸的分类得分向量,将分类得分图进行空间平均化(求和——池化)。同样使用水平翻转来对测试集进行数据增强;在原始图像和翻转图像上的soft-max分类概率的平均值作为这幅图像的最终得分。
实验结果
实验使用的是 ILSVRC-2012数据集,分为三部分,训练集:1.3M images,验证集:50k images,测试集:100k images
Table3是单尺度的实验结果,从Table3可以看出,1,使用LRN并没有提升效果,2,从A中的11层到D中的16层,随着网络深度的增加,错误率下降,但是E中的19层却没有进一步的提升,说明已经饱和,可能需要更多的 数据集得以提升,3,C(加的1x1卷积核)比D(加的3x3卷积核)的效果要差,说明增加额外的非线性确实有效(因为C比B好,后边讨论1x1卷积的功能),但是使用卷积核捕捉图像的空间信息很重要。
Table4是一个多尺度的实验结果,可以看到,采用[256,512]抖动尺度的训练结果最好,将top5错误降低到了8.0%
此外,论文里最后还采用了一种网络融合的方式提高精度,通过计算多个模型不同尺度的soft-max分类概率的平均值来对它们的输出进行组合,可以看到error进一步下降。
讨论
1, 小的卷积核的深层网络性能优于大卷积核的浅层网络
2,小的卷积核的卷积层连用(中间没有pooling)和大的卷积核单用的感受野是相同的,比如2个3x3的卷积层连用和一个5x5的卷积层的感受野一样,3个3x3的卷积层和一个7x7的卷积层感受野一样。
3,小的卷积核的连用可以让决策函数变得更有区分度,并且可以大大降低参数的数量,这就是文章里深层网络的参数却比浅层网络参数没多多少的原因
4,深层网络适合于大的数据集
5,关于1x1卷积核的作用:首先,增加决策函数的非线性,其次,对特征进行了转换,相当于“feature pooling”,比如把300x300x50的特征图可以降到300x300x20。
6,使用预训练好的参数初始化可以加速训练