Very Deep Convolutional Networks For Large-Scale Image Recognition
时间:2014
Intro
本文的VGG网络在2014年的ImageNet竞赛中分别在定位和分类上获得第一和第二,主要的贡献是使用了小的(3×3)卷积核使得网络可以拓展到16-19层深。
ConvNet Configurations
Architecture
整体结构使用了以下的部件
- 3×3卷积核,stride=1,padding=1
- 1×1卷积核
- 下采样通过最大池化操作,size=2,stride=2
- 下采样位于卷积层之后,但不是每层卷积层都有下采样
- 最后有三层全连接层,4096-4096-1000
- 非线性采用ReLU
Configuration
不同网络的具体结构如表格所示
discussion
与以往的网络不同,VGG没有在第一个卷积层使用大的卷积核(对比AlexNet 的5×5卷积核和ResNet的7×7卷积核),注意两层的3×3卷积核实际感受野是5×5,三层是7×7,那么为什么要使用3×3卷积核呢?
- 首先,使用3×3卷积核在感受野相同的情况下有更多的非线性层,可以得到更丰富的表示
- 其次,多个小卷积核的堆叠所需参数更少,假设卷积的输入和输出都是 C C C个channel,那么相同感受野下,三层3×3卷积核的参数就是 3 ( 3 2 C 2 ) = 27 C 2 3(3^2C^2)=27C^2 3(32C2)=27C2个,7×7卷积核的参数就是 7 2 C 2 = 49 C 2 7^2C^2=49C^2 72C2=49C2个,多了81%的参数
1×1的卷积核是为了在不改变感受野的情况下丰富特征的表征
分类框架
训练
训练的时候先训练模型A,然后用模型A的参数初始化更深的模型的参数,模型A权值用 1 0 − 2 10^{-2} 10−2为方差的正态分布来初始化所有偏置值初始化为0
数据是从rescaled的图片中crop的224×224的图片,同时采用随机垂直翻转和RGB颜色变换
测试
测试的图片rescale的大小与训练时不一定一样,使用不同的rescale大小可以提升性能
实现细节
模型在多个GPU上训练,需要约2~3周
分类实验
Single scale
记训练图片的scale为
S
S
S,测试图片的scale为
Q
Q
Q,对于固定的
S
S
S,令
Q
=
S
Q=S
Q=S
这里对每个测试图片使用一个scale,实验发现
- Local Response Normalization(AlexNet中的)对网络帮助不大
- 网络越深,误差越大
- 相同深度的网络,使用3×3卷积的D比使用1×1卷积的C更好
- 使用变化的scale比使用固定的scale效果更好
Multi-Scale Evaluation
对每个测试图片使用multi-scale时,
Q
=
{
S
−
32
,
S
,
S
+
32
}
Q=\{S-32,S,S+32\}
Q={S−32,S,S+32}或
Q
=
{
S
m
i
n
,
0.5
(
S
m
i
n
+
S
m
a
x
,
S
m
a
x
)
}
Q=\{S_{min},0.5(S_{min}+S_{max},S_{max})\}
Q={Smin,0.5(Smin+Smax,Smax)},结果如表格所示,表面multi-scale在测试时效果更好
Multi-Crop Evaluation
State of the art 结果对比
结论
本文通过使用小的卷积核构建更深的网络来得到更好的性能,利用不同的scale方法,在效果上超过当时的state of the art,其CONV-CONV-POOL的设计模式和小卷积核的应用,成为了之后网络设计的一个共识
问题
- VGG和AlexNet有何不同?
- VGG使用3×3的小卷积核,相比于AlexNet的5×5卷积核
- VGG卷积层之间都是互联的,相比于AlexNet在两个GPU上的连接方法
- VGG更深,且使用CONV-CONV-POOL的网络模式,相比于AlexNet的CONV-POOL-CONV-POOL模式
- VGG没有使用AlexNet中的LRN
- VGG和AlexNet有何相同?
- 都使用卷积+全连接堆叠层的方式
- 都使用线性整流单元作为非线性层