VGGNet

VGGNet

ABSTRACK

这篇文章主要论述了CNN的深度对网络性能的影响。VGGNet在2014年的ImageNet的比赛中,定位第一,分类第二。

1. 介绍

对于AlexNet的提升:

  • 第一个卷积层使用更小的卷积核、更小的滑动步长
  • 训练和测试时,使用 multiplescales
  • 增加网络的深度

2. 网络配置

2.1 配置

预处理:每个像素点做归一化处理。
    入:训练时使用 224×224 RGB 图片。
卷积核:全部使用 size=3×3,stride=1,padding=1 (padding="SAME")
 3×3 是最小的能够捕获上下左右中的特征的尺寸。
  只有 C 网络使用了 1×1 的卷积核。
    化:  size=2×2,stride=2, 5个池化层。
全连接: 409640961000Softmax
激活函数: ReLU
LRN: 只有 A_LRN 网络使用了局部响应归一化;
在ILSVRC数据集中,LRN并没有提升模型性能。

2.2 结构

5个池化层,5阶段卷积特征提取。
VGGNet_第1张图片

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 :
    • 参数:
      minibatch=256
      momentum=0.9
      weightdecay=5104(L2)
      dropoutratio=0.5(FC)
      learningrate=102(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

VGGNet_第2张图片

  • 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={S32,S,S+32}
  • 方法二:训练时用 Scale Jittering,S[Smin,Smax] ,测试时 Q={Smin,Smin+Smax2,Smax}
  • multi-scale training 加 multi-scale test 效果更好。
    VGGNet_第3张图片
4.3 Multi-Crop Evaluation

VGGNet_第4张图片
和dense evaluation相比,multiple crops效果稍微好一点,两者一起使用效果更好。

4.4 模型融合

VGGNet_第5张图片
D、E两个模型融合的效果比7个模型融合的效果更好。(??)

你可能感兴趣的:(VGGNet)