MENU

VGG论文阅读

June 3, 2019 • Read: 120 • Deep Learning

论文下载

VGG 是 ImageNet 2014 年目标定位竞赛的第一名,图像分类竞赛的第二名

VGG论文图


摘要中,作者研究了模型深度与精确度之间的关系。"我们的主要贡献是使用非常小的(3×3)卷积滤波器架构对网络深度的增加进行了全面评估,这表明通过将深度推到16-19加权层可以实现对现有技术配置的显著改进"。并且作者还在其他的数据集上进行了测试,发现精确度也很高,说明模型的泛化能力很好



在引言中,作者提到了其他一些论文研究,有的人着眼于用尺寸更小的filter和第一层卷积的stride,还有的人在整个图像和多个尺度上对网络进行密集地训练和测试。

这篇论文主要是对模型的深度进行改进,固定其他的超参数,通过不断的增加层数,其中的技巧是因为作者所有的filter都使用的非常小的(3×3)的卷积滤波器


首先是一些通用的配置(generic configurations)。输入的每一张图片尺寸都是固定大小的224×224×3。"我们唯一的预处理是从每个像素中减去在训练集上计算的RGB均值"。Conv层使用的都是3×3的滤波器,"在其中一种配置中,我们还使用了1×1卷积滤波器,它可以看作是输入通道的线性变换"。Conv层的所有stride固定为1

为了保证卷积后的大小不变,所以设置padding=1

总共有5个max-pooling layers跟在Conv后面,但并非所有的Conv后面都有。max-pooling的filter为2×2,stride=2

卷积层后是三个FC(全连接层),前两层都有4096个神经元,最后一层1000个

所有的隐藏层都设置ReLU为激活函数。作者的模型(除了一个)都不包含局部响应规范化(LRN),LRN就是Local Response Normalization,这是AlexNet中使用的一种规范化方法,VGG的作者认为LRN效果并不好,反而还会增加内存占用和计算时间,我们注意到,作者其实是有一个使用了LRN的,但是使用了的效果也并不好


表1列出了六种网络,所有网络的基础配置都和上文所述的相同,仅仅只是深度不同。表2列出了每种网络的参数数量,"尽管深度很大,我们的网络中权重数量并不大于具有更大卷积层宽度和感受野的较浅网络中的权重数量"


首先看第一列的模型,A模型总共有11个带有权重的层,第一层的filter是64个,紧接着一个max-pooling...剩下的看表就很容易懂,这里就不赘述了


第二张表描述的是每种模型需要训练的参数个数


2.3节主要讨论作者使用的模型和其他的模型区别,其他的一些竞赛模型的filter size要不就是11×11,要不就是7×7,11×11的stride=4,7×7的stride=2。本文的模型filter size是3×3,并且stride=1


然后作者解释了,2个3×3的Conv(no padding) == 1个5×5的Conv;3个3×3的Conv(no padding) == 1个7×7的Conv。但是使用较小的Filters的意义在于,每个小的Conv后面都会跟上一个ReLU,这样比单个ReLU的效果要更好,同时还能减少parameters的总数,因为1个7×7的Conv总共有$49$参数,而3个3×3的Conv总共只有$27$个参数

作者使用1×1的Conv层,作用是维持input output维数不变,同时虽然内部是一个简单的线性计算,但是由于后面跟了一个Relu,所以还是达到了非线性的效果


在这一部分中,作者详细解释了模型是如何训练的。首先,VGG模型的训练是站在AlexNet的肩膀上进行的,其中有一项不同的是,VGG没有对图片做cropping处理。VGG模型的Loss Function选择的是multinomial logistic regression

Batch Size=256,gradient descent使用的是BP+momentum,momentum=0.9。前两个FC层使用了dropout来防止过拟合(dropout=0.5),learning rate初始设为0.01,当validation datasets的loss值无法下降时,就会手动将learning rate降低十倍

作者还提到weights初始化的意义——影响反向传递的稳定性。具体做法是首先给予A模型随机weights,训练A模型,从而获取训练好的Conv和FC的weights,给到更深的模型使用。而其他层的weights使用random weights(mean=0,var=0.01),bais=0

对于输入图片的处理,作者将图片进行了压缩,修剪,使得图片达到224×224,图片还进行了水平翻转和RGB shift,目的是为了让模型的泛化能力更好



这一部分,作者主要阐述如何处理图片,使得网络从不同角度识别某个物品都能识别出来。令S是等轴归一化的训练图像的最小边,从中裁剪ConvNet输入(我们也将S称为训练尺度)。虽然裁剪尺寸固定为224×224,但原则上S可以是不小于224的任何值:对于S=224,裁剪图像将捕获整个图像的统计数据;对于S>>224,裁剪图像将对应于图像的一小部分

"我们考虑两种方法来设置训练尺度S。在我们的实验中,我们评估了以两个固定尺度训练的模型:S=256和S=384。给定ConvNet配置,我们首先使用S=256来训练网络。为了加速S=384网络的训练,用S=256预训练的权重来进行初始化,我们使用较小的初始学习率$10^{-3}$"

设置S的第二种方法是多尺度训练,其中每个训练图像都是通过从一定范围内随机采样S来单独重新标定的$[S_{min}, S_{max}]$(我们使用$S_{min}$ = 256和$S_{max}$ = 512)。为了速度的原因,我们通过对具有相同配置的单尺度模型的所有层进行微调,训练了多尺度模型,并用固定的S=384进行预训练

基本上VGG模型的重点就在上面了,下面用吴恩达老师的一张图来总结一下吧

最后编辑于: June 19, 2019
Archives Tip
QR Code for this page
Tipping QR Code
Leave a Comment