VGG:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
用于大规模图像识别的深度卷积网络

发表时间:[Submitted on 4 Sep 2014 (v1), last revised 10 Apr 2015 (this version, v6)];

论文地址:https://arxiv.org/abs/1409.1556;

VGG名字来源于:Visual Geometry Group的缩写,是这个网络创建者的队名;

VGG是2014年ImageNet分类亚军、定位赛冠军(当年分类冠军是GoogLeNet);

经典卷积网络深度发挥到极致;

模型臃肿;

适合迁移学习backbone;


0 摘要

本文研究了卷积网络深度对其在大规模图像识别设置中的准确性的影响。

本文的主要贡献是使用非常小的(3 × 3)卷积滤波器的架构对深度增加的网络进行了全面评估,这表明通过将深度推至16-19个权重层,可以实现显著提升。

扫描二维码关注公众号,回复: 14798020 查看本文章


1 简介

卷积网络(ConvNets)最近在大规模图像和视频识别方面取得了巨大成功;

  • 2012 AlexNet ImageNet分类比赛冠军;
  • 2013 ZFNet 2013年 ILSVRC 图像分类竞赛获得冠军;
  • 2014 OverFeat ILSVR2013定位任务的冠军;
  • 2014 Two-Stream 视频的行为识别;

深度学习三驾马车:

  • 大规模数据集;
  • 高性能算力;
  • 算法;

ImageNet大规模视觉识别挑战(ILSVRC) 在深度视觉识别架构的发展中发挥了重要作用,它已作为几代大规模图像分类系统的测试平台;

本文讨论了ConvNet体系结构设计的另一个重要方面——深度。为此,我们固定了架构的其他参数,并通过增加更多的卷积层来稳步增加网络的深度,这是可行的,因为在所有层中都使用了非常小的(3 × 3)卷积滤波器。


2 网络配置

2.1 网络架构

在训练过程中,卷积网络的输入是一个固定大小的224 × 224 RGB图像。我们所做的唯一预处理是从每个像素中减去在训练集上计算的平均RGB值(也叫零均值化、标准化)。

图像经过一堆卷积层,其中我们使用一个非常小的接受域过滤器:3 × 3(这是捕获左/右、上/下、中心概念的最小尺寸)。在其中一种配置中,我们还使用了1 × 1卷积滤波器,它可以被视为输入通道的线性变换。

卷积步幅固定为1,使用padding保持图像不变。空间池化是由5个max-pooling层执行的,最大池化在2 × 2像素的窗口上执行,步幅为2(下采样为原来的一半)。

卷积层的后面是三个全连接(FC)层:前两个层各有4096个神经元,第三个层执行1000分类softmax;

使用ReLU激活函数,不再使用AlexNet中的LRN层;


2.2 配置

表1列出了所有评估的模型架构;

表1:模型配置

A模型:11层;
A-LRN:在A模型的基础上加LRN层;
B模型:13层,3 × 3 卷积;
C模型:16层,包含 1 × 1 卷积;
D模型(VGG-16):16层,全部是3 × 3卷积;
E模型(VGG-19):19层,全部是3 × 3卷积;

表2显示了每种模型的参数量;

表2:模型参数量

2.3 讨论

本文的VGG模型与2012的AlexNet、2013的ZFNet、2014年的OverFeat都不一样:

  • AlexNet:step=4的11×11卷积;
  • ZFNet、OverFeat:step=2的7×7卷积;
  • VGG:step=1的3×3卷积(整个模型);

2个3×3的卷积等效于一个5×5的卷积;
3个3×3的卷积等效于一个7×7的卷积;
(解释可见Inception V3论文)

为什么要使用3×3的卷积?

  • 引入更多的非线性激活,模型学习能力强;
  • 参数量减少;
  • 模型深度增加;

模型C使用了1×1卷积,相当于一种线性变换,但是可以引入非线性激活函数;

2011-Ciresan等人,使用了小卷积核,但是网络没有VGG深,也没有在大规模数据集上进行实验;

2014-Goodfellow等人,11层的网络用于街道号码牌的识别(Goodfellow是生成对抗网络之父,开创对抗网络和对抗样本学习领域);

2014-GoogLeNet,使用非常深的网络和小卷积核(3×3和1×1),但是结构复杂,不是经典串行结构;


3 分类架构

3.1 训练

带动量(0.9)的小批量梯度下降;

batch size:256;

L 2 L_2 L2正则化: 5 ⋅ 1 0 − 4 5·10^{-4} 5104

dropout:0.5;

learning rate: 1 0 − 2 10^{-2} 102,后期变化;

epoch:74;

与AlexNet相比,虽然VGG有更多的参数,模型也更深,但是网络可以快速的收敛,因为:

  • 更大的深度和更小的卷积核是一种隐式的正则化;
  • 预先初始化某些层;

网络权重的初始化很重要,因为糟糕的初始化会因为深度网络中的梯度不稳定而导致学习停滞。

为了避免这个问题,我们首先训练A模型,A模型是一个小模型,可以用随机初始化进行训练。在训练更深的模型时,用训练好的A模型前4个卷积层和后三个全连接层来初始化(其余层采样随机初始化的方法);

对于随机初始化的情况,在均值为0,方差为10-2的正态分布中采样权重,偏差初始化为0;

(之后有一种更好的随机初始化方法不需要预先训练,Gloriot和Bengio 2010);

为了获得固定大小的224×224的输入图像,它们是从重新缩放的训练图像中随机裁剪的(每次SGD迭代每张图像裁剪一次)。为了进一步扩大训练集,进行随机水平翻转和随机RGB色移(Krizhevsky et al, 2012)。

下面将解释训练图像的重新缩放



训练图像大小

S(称之为training scale)为图像的短边,S不可以小于224,如果S = 224,相当于把整张图像输入进去,当S >> 224时,截取图像的一部分;

方法一:single-scale training;
固定S,进行两组实验,一组固定S = 256,一组固定S = 384;

方法二:mutli-scale training;
每个训练图像从一定范围 [ S m i n , S m a x ] [S_{min},S_{max}] [Smin,Smax]随机采样S,其中 S m i n = 256 S_{min}=256 Smin=256 S m a x = 512 S_{max}=512 Smax=512,对每个图像单独进行缩放;

由于图像中的物体可以有不同的大小,因此在训练时考虑到这一点是有益的;这也可以被视为通过尺度抖动增强训练集,其中单个模型被训练来识别大范围尺度上的对象(被视为一种数据增强的方法)。


3.2 测试

首先,将其向各向同性地重新缩放到预定义的最小图像边,记为Q(将其称为test scale),Q不一定等于S。

以类似于(Sermanet et al, 2014,OverFeat)的方式将网络密集地应用于重新缩放的测试图像上。

也就是说,全连接层首先转换为卷积层(第一个FC层转换为7 × 7 convl .层,最后两个FC层转换为1 × 1 convl .层)。 然后将得到的全卷积网络应用于整个(未裁剪的)图像(兼容不同大小图像)。

原始版本:mult-crop evaluation;
改变后:dense ConvNet evaluation;
(实验对应4.3节)

如果测试输入图像为256 × 256,根据原始模型即可;

如果测试输入图像大于256:
结果是一个类评分图(class score map),其通道数量等于类的数量,以及一个可变的空间分辨率,取决于输入图像大小。

最后,为了获得图像的固定大小的类分数向量,对类分数映射进行空间平均(和池化)。我们还通过水平翻转图像来扩大测试集;对原始图像和翻转图像的soft-max类后验进行平均,以获得图像的最终得分。


3.3 实现细节

用C++ Caffe实现,有一些修改,布置到多个GPU上(数据并行);

用4个GPU同步训练,大约快3.75倍;

单次训练一次大约2~3周;


4 分类实验

数据集
ILSVRC-2012数据集(用于ILSVRC 2012-2014挑战)上实现数据分类,数据集包含1000类图像,分为三组(训练1.3M图像,验证50k图像,测试100k),评估精度top-1和top-5;


4.1 SINGLE SCALE EVALUATION(Q固定)

图像大小

  • (1)S固定,Q = S;
  • (2) S ∈ [ S m i n , S m a x ] , Q = 0.5 ( S m i n + S m a x ) S∈[S_{min},S_{max}],Q = 0.5(S_{min} + S_{max}) S[Smin,Smax]Q=0.5(Smin+Smax)

评估结果表3;

表3:single-scale 网络性能比较

  • 首先观察到使用LRN层并不能提升性能,因此没有在B~E模型中使用LRN;

  • 从表中观察到随着网络深度的增加,分类错误率逐渐下降;

  • C与D的网络深度一样,但是C(包含3个1 × 1 conv层)比D(使用3 × 3 conv)性能差;

  • 额外的非线性也有助于提升性能(C比B好),使用具有非平凡接受域的滤波器捕获空间上下文也很重要(D比C好)。

  • 当深度达到19层时,我们架构的错误率就会饱和,但更深入的模型可能对更大的数据集有益(2015年 ResNet解决这个问题)。

  • 将B模型的每对3×3卷积换成5×5的卷积和B模型进行比较(两个3×3等于一个5×5,模型深度变浅),比B模型性能差,这证实了带小过滤器的深模型优于带大过滤器的浅模型。

  • 训练时S变动: S ∈ [ 246 , 512 ] S∈[246,512] S[246,512],其结果也明显优于在最小边固定(S = 256或S = 384)的图像上进行训练。这证实了利用尺度抖动增强训练集确实有助于获取多尺度图像统计信息。


4.2 MULTI-SCALE EVALUATION(Q在一个范围)

考虑到训练尺度和测试尺度之间的较大差异导致性能下降

  • 使用固定S训练的模型在三种测试图像尺寸上进行评估:Q = { S − 32, S, S + 32 };
  • 变化的S, S ∈ [ S m i n , S m a x ] , Q = { S m i n , 0.5 ( S m i n + S m a x ) , S m a x } S∈[S_{min},S_{max}],Q = \{ S_{min}, 0.5(S_{min} + S_{max}), S_{max} \} S[Smin,Smax]Q={ Smin,0.5(Smin+Smax),Smax}

实验结果见表4:

表4:multi-scale 网络性能比较

multi-scale比single-scale性能更好(表4与表3相比),D(VGG16)和E(VGG19)表现最好;


4.3 MULTI-CROP EVALUATION

表5比较了dense ConvNet evaluation和mult-crop evaluation(3.2节中提到的改变);

表5:ConvNet evaluation techniques comparison.

可以看出,使用mult-crop的性能略好于dense ConvNet ,而且这两种方法确实是互补的,因为它们的组合优于它们各自。


4.3 模型集成

之前都是评估了单个卷积模型的性能。在这部分实验中,我们通过平均它们的soft-max类后验概率来组合几个模型的输出。由于模型的互补性,这提高了性能;

结果见表6:

表6:多模型融合结果

表7,VGG与其他模型在ILSVRC数据集上分类的比较结果:

表7:VGG与其他模型的比较

猜你喜欢

转载自blog.csdn.net/COINVK/article/details/128756488