经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)

经典网络分析 - VGG

码字不易… 转载请注明出处

论文概述

AlexNet在ILSVRC-2010取得了成功后,人们便尝试通过对AlexNet进行改进,以便取得更好的效果,主要是从两个方面出发:
a. 更小的感受野(卷积核) + 更小的步长
b. Densely Network + 多尺度的训练多尺度预测
而作者主要关注点是深度对网络的影响。

VGG使用3x3的卷积的堆叠,通过一系列的实验和比较验证了通过提高深度从而使网络性能有了显著的提升。VGG最终将网络深度提升到16-19层,并且在ILSVRC-2014取得了分类任务第二名,目标检查任务第一名的成绩。

所以该篇论文主要关注以下方面:
a. 小卷积核对网络影响
b. 论文中采用的实验方法
c. 网络的最优结构

如果读者之前阅读的论文量不是很大,那么在阅读论文的过程中会对以下一些名称或者方法感到困惑:multi scale training(多尺度训练)mutil scale evalution(多尺度预测)mutil crop evalutiondense evalution全卷积网络CONVNET FUSION

技术细节

  1. 网络结构详解
    为了更好的分析深度对卷积神经网络的提升,作者在网络的每一层采用相同的设计原则。

VGG中采用的网络通用配置信息如下:

  • 输入数据 224x224 RBG image
  • 训练数据中的每一个像素点减去训练集RGB三通道对应的均值。
  • 作者在实验中只采用了 3x3 1x1 两种卷积,3x3可以感受周围空间的最小的卷积核, 1x1为模型额外增加了非线性变换
  • 采用SAME的卷积方式,在输入数据的四周进行补齐操作,确保输入输出的feature map具有相同的大小
  • 采用2x2 stride 2 max pooling
  • 卷积层和全连接层都采用Relu激活函数

网络结构分析
经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)_第1张图片
如图所示,作者设计了A-E六组实验进行比较分析,每组实验都遵从了之前描述的通用设计原则,每组实验之间主要的区分点在于所采用了不同的深度(11-19),和AlexNet一样输出的特征图的通道数从64到512不断的提高。
注:

  • 不用与AlexNet等之前的网络设计,VGG在网络的前几层采用了更小的卷积核。主要原因如下:1.两个33的卷积核和一个55的卷积核有相同的感受野 ,三个3×3的卷积核和一个7×7的卷积核有相同的感受野,,所以采用3×3卷积核的叠加来代替更大的卷积核一来可以带了更多空间上非线性的变化,二来节省了参数的数量。
  • 1×1的卷积在不改变感受野的情况下给网络带了了非线性的提升,作者在实验中采用输入输出等大的1×1卷积。
  • 在全连接层的前两层使用dropout来降低网络的过拟合。

  1. 训练及初始化参数

训练参数:
VGG几乎和ALexNet采用了相同的训练参数:
batch_szie 256
SGD
momentum 0.9
weight_decay(L2 penalty) 0.0005
dropout 0.5 (fc1+ fc2)
learning rate 0.01, 初始化0.01,每当在验证集上准确率不变的时候,学习率降为原来的10分之一
在训练过程中学习率lr总过下降了3次,在ILSVRC2010上迭代了370K次,总计74epoch。尽管VGG网络参数量巨大并且相比于之前的网络具有更大的深度,但是总的迭代次数却小于AlexNet,作者认为主要是两个原因 a. 网络的深度和较小的卷积核 b 某些层的预训练

网络权重初始化:
在作者的实验中网络初始化的方式是非常重要的,一个不恰当的初始化方式可能因为梯度的消失而导致网络的学习能力下降(从网络结构中也可以看出,vgg网络中没有采用任何normailzation)。为了解决该问题,作者采用了如下解决方案:

  • 最开始训练网络A(结构详情见上述表格),采用随机采用均值为0方差0.01的高斯分布的随机初始化方式进行权重的初始化
  • 之后提取A网络的前四层卷积层及后三层全连接层的权重用于初始化其余的网络结构(B-E),其余层采用同A的随机初始化方式,随后对网络进行finetune。在开始训练的时候采用相同的学习率。
  • 在作者提交了本篇paper后,发现采用《Glorot, X. and Bengio, Y. Understanding the difficulty of training deep feedforward neural networks. In Proc. AISTATS, volume 9, pp. 249–256, 2010.》论文中提出的初始化方法也可以取得一样的效果。

  1. 分布式训练
    同AlexNet一样,作者也采用了单机多卡的分布式训练方式,作者对caffe进行了部分修改以至于可以适用于作者所采用的分布式训练方式。
    具体的,作者采用了数据并行的方式(对分布式训练感兴趣的读者可以看下Alex于2014发表的论文,其中详细的描述了数据分布和模型分布的两种方式,并且指出了针对于不同的网络采用不同的策略可以有效的提高训练过程),每个GPU,一次性训练一个batch(64),求梯度的平均值,更新网络权重,文章指出,采用这种方式提高了3.75倍的加速效果。
    作者使用了4块 NVIDIA Tian Black GPU, 训练了2-3周。

  1. 训练图片的尺度(单一尺度训练vs多尺度训练)
  • 单一尺度训练(single scale training):
    取训固定的训练图像大小S, 选取训练图像的最小边为基准,对图片进行各向同性的缩放(isotropically-scale),说白了就是等比变换。作者在实验过程中主要采用了S=256及S=384两个尺度,为了加速训练,作者训练S=384的时候采用了S=256的预训练权重,并将学习率降低为初始学习率的10分之一(1e-3)。

  • 多尺度训练(mutil scale training):
    对于多尺度训练来说S不是一个固定值,而是随机选取区间集和([Smin, Smax])中的某一个值。作者实验中随机选择S为[256, 512]之间的某一个值,后以图片较小边为基准进行等比例缩放。为了加速训练,作者训练S=384的权重对网络进行初始化。

  • 无论是采用单一尺度训练还是多尺度训练方式,由于网络的输入大小固定为(224×224),训练的原始图片都需要在进行尺度缩放后的基础上进行随机裁切,在图片中选取224×224的区域作为网络的输入。并在此基础上对图片做了随机的水平翻转和随机的通道(RBG)交换作为对训练数据的增广变换。


  1. 预测或验证阶段的尺度变换(dense evaluation | single scale evaluation | multi scale eval | multi crop ecaluation)
  • dense evaluation
    在了解dense evaluation之前,读者需要首先明白什么是全卷积网络(自行查阅资料),全卷积网络将网络中的全连接层用卷积层来代替,本质上和全连接层是等效的,但是全卷积网络不受输入图像大小的限制,根据输入图像大小的不同,网络输出不同大小的feature map。VGG采用了全卷积的方式构建网络(当输入图片的大小为224×224时网络最后一层卷积层输出7×7大小的特征图,所以将第一个全连接层用7×7大小的卷积核进行等价替换),根据不同的输入图像尺度(Q),得到了一个不同大小的feature map作为网络的输出。
    输出 feature map 每一个点的感受野对应于原图中224×224的区域的分类得分向量,类似于滑动窗口的思想,对原图中连续滑动步长的224×224区域进行预测,所以得到的预测结果是稠密(dense)的。对网络输出的feature map计算平均值,得到单一的分数向量,也就输入图片的最终预测得分,经过softmax函数得到类别对应的概率。
    值得注意的是,作者所有的实验默认采用该方法对图片进行预测
  • single scale evalution
    由于训练时输入的图片的尺度是固定的或者是固定在某个区间进行变换,所以在进行预测时也会对输入图片进行等比例的缩放。single scale evalution是选择一个固定的尺度Q对输入图片进行缩放,如果训练采用单一尺度的方法,那么通常设置Q=S(训练尺度),如果训练采用多尺度的方式,那么Q=(Smin + Smax)/2,这也是作者实验中所采用的变换方式。
  • multi scale evalution
    在预测中选取多个值对输入图像进行缩放并且对预测结果取均值的方式就是多尺度预测。作者在实验中通常会选取Q1\Q2\Q3三个尺度,如果采用单尺度训练S,Q1=S-32 | Q2 = S | Q3 = S+32; 如果采用多尺度训练[Smin, Smax], Q1=Smin | Q2 = (Smin + Smax) /2 | Q3 = Smax。
  • multi crop evaluation
    AlexNet在预测的时候便采用multi crop eval的方式进行预测(分别从经过尺度变换的图像的四个角及中心点截取网络输入大小的5区域,之后进行水平翻转,总共10张输入图片的输出均值最为最后的输出)。由此可见,对进行尺度变换后图片进行多次的裁切作为网络的输入,而后再取平均值,便是multi crop evaluation。相比于dense eval,这种方式进行了更加精炼的采样方式,最重要的是这种方式和训练时的输入数据有着相同的感受野(VGG在训练的时候采用224×224作为输入,并且采用SAME卷积的方式对输入图片的周围进行补0,如果采用dense eval方式那么就不需要进行补零操作,本质上讲加了输出结果对于于原图的感受野),所以muti crop eval的方式是dense eval的一个很好的补充,也会带来网络准确率的提升,反之带了预测速度的下降,实际使用中需要进行权衡。

  1. 实验结果分析
    作者实验基于ILSVRC2014数据集,训练集1.3M, 测试集 50K, 验证集 100K, 分类数量1000
  • single scale eval
    经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)_第2张图片
    实验结论:
    a. 通过比较A和A-LRN的实验数据说明,LRN对网络是几乎没有提升的,所以在之后实验中作者没有采用LRN。
    b. 通过比较上图各组数据可以得出,深度对网络性能的提升是十分明显的,这也是本片论文的核心思想。于此同时,作者设计了五层采用5×5卷积大小的网络和网络B进行比较,证明了叠加多个小卷积核的效果比直接使用大卷积核的效果更好,又一核心思想。通过比较网络C和D得出,使用单一的1×1卷积对网络进行线性变换虽然可以提高网络的准确率,但是其作用不如3×3卷积。
    c. 多尺度的训练可以有效的提升模型的性能。
  • multi scale eval
    经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)_第3张图片
    通过实验数据可得,多尺度预测可以明显提升网络的性能,并且权衡网络的计算性能,分析得出采用多尺度训练和多尺度预测的VGG16(D3)是最优的模型。
  • multi crop eval
    经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)_第4张图片
    从实验结果可以看出,模型效果multi-crop + dense > multi-crop > dense,也直接证明了我们先前的分析,dense eval的方式虽然可以提升模型的性能,但是也是有缺陷的。multi crop 从思想上更加精简,符合更加贴合模型的训练方式,但是取带了了速度上的损失。但是从提高精度上讲,两个方法都有效,并且是互补的。
  • 模型融合(convnet fusion)
    经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)_第5张图片
    文章中提及的模型融合是训练多个模型,在预测的时候对多个预测的结果取平均值,实验证明这种方式对提高模型的准确率是非常有效的(AlexNet也采用了这种方式)。
    值得注意的是,作者在ILSVRC2014比赛中所采用的方式,其中使用训练了7个网络,其中但尺度训练的网络是单独训练的,多尺度的网络是在但尺度权重上finetune。同时关注表格中所展示的最优实验结果(并不是在比赛中取得的,并且只融合了两个网络)
  • 与其他模型的比较
    经典网络分析 - Very Deep Convolutional Networks for Large-Scale Image Recognition(VGG)_第6张图片
    嗯。。。VGG是最好的,哈哈
    观察下2012-2014卷积神经网络的性能的进步吧

7 .文章结论
作者通过一系列的实验,主要为了说明深度对模型有很大的影响。

思考拓展

你可能感兴趣的:(INSUN,-,论文解读,深度学习,卷积,人工智能,机器学习,卷积神经网络)