本文是对《Very Deep Convolutional Networks for Large-Scale Image Recognition》的论文解读和总结。该论文发表于 ICLR2015,由牛津大学视觉几何组(Visual Geometry Group)和 DeepMind 公司提出,这也是 VGG 名字的由来。自2015年发表至今,已有超过1.6万的引用量,是 ILSVRC-2014 中定位任务第一名和分类任务第二名。
注:博文中图片表格均来自原文。
1. 网络结构
1.1 不同结构的对比
VGG一共提供了6个网络版本,一次探究不同网络的效果对比。下面简要分析一下各个版本的网络配置细节:
结构 A:与 AlexNet 类似,卷积层分为5个stage,3个全连接层,不同的是,卷积层用的都是3x3大小的卷积核;
结构 A-LRN:保留 AlexNet 中的 LRN 操作,其他结构与A相同;
结构 B:在 A 的 stage2 和 stage3 分别增加一个3x3的卷积层,共有10个卷积层了;
结构C:在 B 的基础上,stage3,stage4,stage5 分别增加一个1x1的卷积层,有13个卷积层,总计16层;
结构D:在 C 的基础上,stage3,stage4,stage5 分别增加一个3x3的卷积层,有13个卷积层,总计16层;
结构E:在 D 的基础上,stage3,stage4,stage5 分别再增加一个3x3的卷积层,有16个卷积层,总计19层。
各结构效果对比:
- A 与 A-LRN 比较:A-LRN 结果没有 A 好,说明 LRN 作用不大;
- A 与 B, C, D, E 比较:A 是这当中层数最少的,相比之下 A 效果不如 B,C,D,E,说明层数越深越好;
- B 与 C 比较:增加 1x1 卷积核,增加了额外的非线性提升效果;
- C与D比较:3x3 的卷积核(结构D)比 1x1(结构C)的效果好。
1.2 相同的卷积核
此处相同的卷积核仅针对 VGG-16 与 VGG-19 来分析。所有的卷积核尺寸都是 3x3 ,卷积步长为1,填充 padding 为1。这样做的原因有以下四点:
(1)3x3 是最小的能够捕获左、右、上、下和中心概念的尺寸;
(2)两个连续的 3x3 的卷积相当于 5x5 的感受野,三个相当于 7x7(使用三个 3x3 卷积而不是一个 7x7 的卷积的优势有两点:一、包含三个 ReLU 层而不是一个,使决策函数更有判别性;二、减少了参数。比如输入输出都是C个通道,使用 3x3 的3个卷积层需要3x(3x3xCxC)=27xCxC,使用 7x7 的1个卷积层需要7x7xCxC=49CxC)。
1.3 C结构中的 1x1 卷积核
1x1 卷积核主要是为了增加决策函数的非线性,而不影响卷积层的感受野。虽然 1x1 的卷积操作是线性的,但是 ReLU 增加了非线性。
2. 模型训练
数据提升:随机裁剪,水平翻转,RGB颜色通道变化。
正则化:L2正则化,weight decay 为5e-4,dropout 在前两个全连接层后,p = 0.5。
参数初始化:对于较浅的A网络,参数进行随机初始化,权重 w 从 N(0,0.01) 中采样,偏差 bias 初始化为0。然后,对于较深的网络,先用 A 网络的参数初始化前四个卷积层和三个全连接层。但是后来发现,不用预训练的参数而直接随机初始化也可以。
收敛速度:尽管相比于AlexNet网络更深,参数更多,但是 VGGNet 在更少的周期内就能收敛(总迭代次数为370k (74 epochs))。
单一尺度与多尺度训练:首先对原始图片进行等比例缩放,使得短边要大于224,然后在图片上随机提取224x224窗口,进行训练。
两种方式设置训练尺寸:
(1)固定 S 的大小,对应了单一尺度的训练,训练多个分类器:参数S为短边长。训练S=256和S=384两个分类器,其中S=384的分类器用S=256的进行初始化;
(2)多尺度(Multi-scale)训练:直接训练一个分类器,每次数据输入的时候,每张图片被重新缩放,缩放的短边S随机从[256,512]中选择一个,也可以认为通过尺度抖动(scale jittering)增加了训练集的数量。
3. 模型测试
测试步骤:
(1)对输入图像各向同性地重缩放到一个预定义的最小图像边的尺寸Q;
(2)全连接层转化为卷积层(第一个全连接层转化为 7x7 的卷积层,后两个全连接层转化为 1x1 的卷积层) ,然后将转化后的全连接层应用在整张图像上。结果就是一个类别分数图(class score map),其通道数等于类别数量,依赖于图像尺寸,具有不同的空间分辨率;
(3)为了获得固定尺寸的类别分数向量(class score vector),对class score map进行空间平均化处理(sum-pooled)。
4. 模型评估
4.1 单一尺度评估
(1)使用局部响应标准化(A-LRN)并没有改善模型 A (没有使用任何归一化层)的性能;
(2)分类误差随着网络深度的增加而减小,使用小卷积核的深层网络比使用大卷积核的浅层网络性能更好
(3)即使在测试时使用单一的尺度,训练时的尺度抖动
(
S
∈
[
S
m
i
n
,
S
m
a
x
]
)
(S∈[S_{min},S_{max}])
(S∈[Smin,Smax]) 比在具有固定最小边 (S=256或S=384) 的图像上训练具有更好的结果。这证实了通过尺度抖动增加训练集确实有助于捕获多尺度图像统计数据。
4.2 多尺度评估
(1)测试时的尺度抖动可以带来更好的性能;
(2)最深的配置(D 和 E)表现最好,并且使用尺度抖动比固定最小边 S 的训练效果要好。
4.3 多裁剪评估
使用多剪裁表现要略好于密集评估,并且这两种方法确实是互补的,因为它们的结合优于它们中的每一种。
4.4 模型融合
结合7个网络,实现测试误差7.3%。之后,结合最好的两个模型(D&E)并使用密集评估(dense evaluation),测试误差降低到7.0%,而使用密集评估和多裁剪评估相结合,测试误差为6.8%。最好的单一模型验证误差为7.1%。
5. 结论
深度有益于分类准确度,而且,VGGNet 在不同的任务和数据集上有很多好的泛化能力。
该博文主要参考资料:
[1] Very Deep Convolutional Networks for Large-Scale Image Recognition
[2] VGGNet笔记
[3] 深度学习论文随记(二)—VGGNet模型解读-2014年(Very Deep Convolutional Networks for Large-Scale Image Recognition)
[4] 深度学习之解读VGGNet
[5] 2014-VGG-《Very deep convolutional networks for large-scale image recognition》翻译
[6] 深度学习经典卷积神经网络之VGGNet