Very deep convolutional networks for larage-scale image recognition

1. 结构配置

  • 预处理只有减去所有RGB像素的均值
  • 使用最小的感受野3 × 3,如果选择1 × 1,则可作为输入通道的线性变换(后面跟着激活函数的非线性)。
  • 卷积stride 1,pad 1(卷积图大小不会因为卷积而改变)
  • 共5个最大池化,窗口2 × 2,stride 2
  • 全连接层前两层4096,输出1000
  • 所有激活选择ReLU,不使用局部响应归一化
  • 深度从11(8+3)到19(16+3),特征图从64开始每次增长2倍直到512

注意:
1. 两个感受野3 × 3卷积层排列等效于一个感受野3 × 3卷积层,三个3 × 3等效于7 × 7,这样做有两个好处。一是结合了多个非线性激活代替了一个,让决策函数更有选择能力;二是减少了参数的数量,三个3 × 3具有 C 个特征图的卷积层有 3×(32C2)=27C2 参数,而一个7 × 7具有 C 个特征图的卷积层则有 1×(72C2)=49C2 参数。三个3 × 3卷积层排列可以看作是对7 × 7卷积层的正则化,强制使之分解为三个3 × 3并加入了非线性。
2. 增加1 × 1卷积层可以在不改变感受野的情况下增加决策函数的非线性(来自于ReLU),其输入输出的特征图数量是相同的。

2. 分类框架

1. 训练

  • softmax,mini-batch(batch size 256),gradient descent with momentum(0.9), L2 惩罚项(因子5e-4),两个全连接层使用dropout(0.5),学习率初始为0.01,在验证集误差停止下降时除以10,三次后停止(74 epochs)
  • 预训练初始化权重,先随机初始化浅层数(11)网络进行训练,深层数网络使用浅层数网络的前4卷积层和后3全连接层的参数来初始化,而中间的层选择随机初始化。所有的随机初始化都是从0均值0.01方差正态分布采样而来。预训练初始化层的学习率仍然按照一般的策略改变。
  • 偏置全部初始化为0
  • 扩展数据集,对训练图像水平翻转、颜色偏移和等轴缩放,随机剪裁出固定的224 × 224大小的网络输入图像(每个mini-batch前都随机剪裁一次)。缩放的训练图片最短边S至少要有224,如果大于224则剪裁出图片的一部分物体。有两种设置S的方法。一是固定S(如256或384)后在其中随机剪裁,二是S在一定范围内(如256~512)随机取样,然后在其中随机剪裁。

2. 测试

  • 将测试图像等轴缩放,最小边长为预先定义的Q(不一定等于S,对每个S使用不同的Q会改善性能)
  • 将全连接层转化为卷积层,即第一个全连接层转化为7 × 7卷积层,后两个全连接层转化为1 × 1。这会形成一个完全卷积的网络。(最后3层卷积不增加pad,即若输入7 × 7的特征图,那么输出1 × 1的特征图)
  • 将完全卷积网络用在没有剪裁的整张测试图像上。
  • 得到类分数图,其数量为总类别数,空间分辨率不同取决于输入图像的尺寸。
  • 最终的固定大小类别分数向量是通过将类分数图取空间平均而得到的(求和池化)。
  • 水平翻转扩充测试集,类概率是取原始和翻转图像的分数平均而得到的。

3. 实现细节

将训练数据集所有batch分配到多个GPU上并行同步的去计算每个batch的梯度向量,然后将这些梯度向量平均起来就是整个训练集的梯度。由于一个总向量等于多个子向量之和,这样得到的总梯度就相当于在一个GPU上运算的结果了。

注意: 两个样本同时输入利用SGD得到的梯度,等于两个样本分两次输入利用SGD得到梯度之和取平均。

操作 结果
输入训练集 (batchSize,3,224,224)
卷积层(64,3,3,3) (batchSize,64,224,224)
最大池化(2,2) (batchSize,64,112,112)
卷积层(128,64,3,3) (batchSize,128,112,112)
最大池化(2,2) (batchSize,128,56,56)
卷积层(256,128,3,3) (batchSize,256,56,56)
卷积层(256,256,3,3) (batchSize,256,56,56)
最大池化(2,2) (batchSize,256,28,28)
卷积层(512,256,3,3) (batchSize,512,28,28)
卷积层(512,512,3,3) (batchSize,512,28,28)
最大池化(2,2) (batchSize,512,14,14)
卷积层(512,512,3,3) (batchSize,512,14,14)
卷积层(512,512,3,3) (batchSize,512,14,14)
最大池化(2,2) (batchSize,512,7,7)
展开 (batchSize,512 × 7 × 7 = 25088)
全连接层(25088,4096) (batchSize,4096)
全连接层(4096,4096) (batchSize,4096)
softmax层(4096,1000) (batchSize,1000)

测试全连接层权重 转化的卷积层权重
(25088,4096) (4096,512,7,7)
(4096,4096) (4096,4096,1,1)
(4096,1000) (1000,4096,1,1)

3. 结果

1. 单尺度缩放

  • 深度加深误差降低
  • 使用1 × 1卷积层增加了非线性有效果,同时也要使用3 × 3卷积层来获取空间特征
  • 两个3 × 3卷积层优于一个5 × 5卷积层
  • 训练时的尺度抖动比固定尺度效果好

2. 多尺度缩放

  • 测试时的尺度抖动比固定尺度效果好
  • 训练和测试的尺度相差太大会有恶化
  • 一个训练的尺度对应三个测试的尺度

你可能感兴趣的:(论文笔记)