VGGNet
ABSTRACK
这篇文章主要论述了CNN的深度对网络性能的影响。VGGNet在2014年的ImageNet的比赛中,定位第一,分类第二。
1. 介绍
对于AlexNet的提升:
- 第一个卷积层使用更小的卷积核、更小的滑动步长
- 训练和测试时,使用 multiple−scales
- 增加网络的深度
2. 网络配置
2.1 配置
预处理:每个像素点做归一化处理。
输
入:训练时使用
224×224 RGB
图片。
卷积核:全部使用
size=3×3,stride=1,padding=1 (padding="SAME")
,
3×3
是最小的能够捕获上下左右中的特征的尺寸。
只有
C
网络使用了
池
化:
size=2×2,stride=2,
5个池化层。
全连接:
4096−4096−1000−Softmax
激活函数:
ReLU
LRN: 只有 A_LRN 网络使用了局部响应归一化;
在ILSVRC数据集中,LRN并没有提升模型性能。
2.2 结构
5个池化层,5阶段卷积特征提取。
2.3 讨论
- 两层的 3×3 卷积核的有效感受野是 5×5
- 三层的 3×3 卷积核的有效感受野是 7×7
- 大卷积核的浅层网络 和 小卷积核的深层网络?(3层3×3 和 1层7×7)
- 包含了更多层的非线性层,使得决策函数更具有判别性。
- 减少了参数量。假设输入输出都是 C 个通道,三层3×3有 3(9C2)=27C2 个参数,一层7×7有 72C2=49C2 个参数。
- 所以可以把三个3×3的filter看成是一个7×7filter的分解(中间层有非线性的分解)。
- 1×1 filter 保持输入输出维度不变的条件下,先进行线性映射(卷积核),再进行非线性处理(ReLU)。
3. 分类框架
3.1 训练
- SGD 优化 Softmax+Entropy :
- 参数:
mini−batch=256
momentum=0.9
weight−decay=5⋅10−4(L2正则化)
dropout−ratio=0.5(FC的前两层)
learning−rate=10−2(测试误差不再降低时,除以10,共减少三次) - VGG 收敛更快,可能因为:更深度的网络和小的卷积核起到了隐性的正则化作用;一些层的初始化pre_initialisation。
- 参数:
- 参数初始化:
- A 网络随机初始化,然后训练。
- B-E 网络,前四个卷积层(???)和最后三个全连接层使用A网络训练好的参数初始化,其他参数随机初始化。
- 随机初始化时,权重从正态分布 N(0,0.01) 中采样,偏置为 0。
- 如何获得 224×224 input images ?:
记S为缩放后的图片的小边长度,S>224,在缩放后的图片中提取 224×224 的片段进行训练。
- 方法一(固定S):在 S = 256 和 S = 384 两个尺度上训练两个模型,再模型融合(求平均)。
- 方法二(multi-scale training):在区间 [Smin,Smax] 上,随机选取一个scale,把图片缩放到该尺度,再随机提取 224×224 片段,训练一个网络。该方法可以看做训练集合的数据增强:Scale jittering,即用多尺度的图片训练同一个模型。
3.2 测试
- 记Q为测试图片缩放后的小边长度,不要求Q = S (对于每个S,使用多个Q值可以提升性能)。
- dense evaluation:
- 把FC层的每个神经元看成 1×1 的卷积核,直接输入缩放后的图片,不需要提取 224*224 的图片。
- 网络输出 class score map,取平均值。
- 最终的分值 由缩放后的图片和其水平翻转的图片 取均值 决定。
- multi-crop evaluation:
AlexNet 中的做法:一张测试图片,提取四个角和中间的 224*224 图片,和水平翻转的图片共10张,分别送入网络,10个分值取均值。 - 两种方法是互补的,原因在于不同的卷积边界条件
(convolution boundary conditions):
- multi-crop 中特征图用 0 值填充。10张图片比dense evalution的计算量更大。
- dense 中特征图用 图片本身周围的像素值填充,增加了全局的 接受域,捕捉了更多的内容。
4. 分类实验
4.1 Single Scale Evaluation
- ABCDE:网络越深,性能越好。
- A 与 A-LRN:局部响应归一化没有作用。
- B 与 C:增加的 1*1 filter 增加了 非线性能力,性能更好。
- C 与 D:3×3的卷积核 比 1×1 的更好,3×3的filter 能捕捉空间上的特征。
- 文章也测试了 小核的深度网络 比 大核的浅层网络 性能更好(同样的有效接受域)。
4.2 Multi-Scale Evaluation
- 方法一:训练时固定
S
,测试时
Q={S−32,S,S+32} - 方法二:训练时用 Scale Jittering,S∈[Smin,Smax] ,测试时 Q={Smin,Smin+Smax2,Smax}
- multi-scale training 加 multi-scale test 效果更好。
4.3 Multi-Crop Evaluation
和dense evaluation相比,multiple crops效果稍微好一点,两者一起使用效果更好。
4.4 模型融合
D、E两个模型融合的效果比7个模型融合的效果更好。(??)