Very Deep Convolutional Networks for Large-Scale Image Recognition

2014 单 GPU 深度学习 被引用 76k 次
下载 PDF

Very Deep Convolutional Networks for Large-Scale Image Recognition - 中文验证版

英文原始依据卡片:vgg_2014.md

状态:已翻译。

元数据

  • Slug: vgg_2014
  • 年份: 2014
  • 会议: ICLR
  • 作者: Karen Simonyan, Andrew Zisserman
  • 阅读状态: read complete
  • 计算范式: 早期多 GPU CNN 训练
  • 主要来源: PDF抽取文本

计算设置

论文明确说明了训练硬件:一台配备四块 NVIDIA Titan Black GPU 的单机。实现是 C++ Caffe 的修改版(2013 年 12 月分支)。多 GPU 训练使用同步数据并行:每个小批量被拆分到各 GPU batch 中,梯度并行计算后取平均,使结果等同于在全批量上的单 GPU 训练。作者报告相对于一块 GPU 有 3.75 倍加速,并说明一个网络训练需 2-3 周,具体取决于架构。

主要运行使用小批量大小 256,momentum 0.9,weight decay 5e-4,前两个全连接层中 dropout 0.5,以及 370K 次迭代或 74 个 epoch。输入裁剪为固定 224x224 RGB 图像。配置范围从 11 到 19 个带权层,133M 到 144M 参数,大部分集中在全连接分类器中。

瓶颈

VGG 的瓶颈是在早期 2010 年代 GPU 内存和 wall-clock 限制下的密集卷积深度。论文希望将深度作为主要设计变量进行测试,同时保持架构简单,但更深的网络更难初始化,训练昂贵,且规模大到即使是 4 GPU 工作站也每个模型需要数周。全连接层产生较大参数占用,而密集多尺度和多裁剪评估又倍增了推理工作。

论文也识别了它避开的成本。Local response normalization 在 A-LRN 对比中未改善 ILSVRC 性能,且增加了内存消耗和计算时间。大滤波器是另一个目标:一个 7x7 卷积有 49C^2 个权重,而三个堆叠的 3x3 层在相同有效感受野下只有 27C^2 个权重,外加更多非线性。

方法适配

该架构通过使深度规整和 kernel 尺寸小来适配 GPU CNN 约束。所有卷积 stride 为 1,padding 保持空间分辨率,2x2 max-pooling 在 block 之间降低分辨率。重复的 3x3 卷积保持了 GPU 擅长处理的并行密集卷积工作负载,同时相对于等价的大滤波器减少了参数数量。配置 D 和 E 分别使用 16 和 19 个带权层,采用统一的通道调度——在池化后翻倍,最高至 512 通道。

训练围绕稳定性和复用进行适配。由于糟糕的初始化可能使更深网络停滞,作者首先训练较浅的配置 A,并将更深模型的前四个卷积层和最后三个全连接层初始化为从 A 继承。对于训练尺度 S=384,他们从 S=256 模型初始化并使用较小的初始学习率。尺度抖动模型从固定尺度模型微调以加速。这些是节省计算的分阶段决策,而不仅仅是准确率技巧。

测试时方法同样是计算感知的。全连接层被转换为卷积层,并在整个缩放图像上密集应用,避免了对许多裁剪重复计算。论文仍评估了三个尺度上每个尺度 50 个裁剪作为参考,并结合密集和多裁剪输出以获得最佳准确率,但它明确指出许多裁剪的计算时间在实践中可能得不偿失。因此,VGG 区分了实用推理路径和最大化基准得分的路径。

证据

架构表给出了参数和深度证据。模型 A 有 11 个带权层和 133M 参数;模型 D 有 16 层和 138M;模型 E 有 19 层和 144M。在单尺度验证表中,更深的模型改善了错误率:A 在 S=256 时 top-1 为 29.6%、top-5 为 10.4%,而带有尺度抖动的 E 为 top-1 25.5%、top-5 8.0%。A-LRN 略差于 A,为 29.7%/10.5%,支持了丢弃 LRN 的决策。

多尺度评估改善了最强模型。对在 S 取 [256,512] 训练并在 256、384 和 512 测试的 D 和 E,最佳单网络验证结果为 top-1 24.8%、top-5 7.5%。论文说明配置 E 在此阶段达到 7.3% top-5 测试错误率。结合密集和多裁剪评估将 E 的验证 top-5 改善至 7.1%,state-of-the-art 表中的单网络测试结果为 7.0%。

集成显示了基准准确率在多大程度上是以额外推理计算换取的。ILSVRC 提交使用七个网络和密集评估,测试错误率为 7.3%。提交后,两个最佳多尺度模型 D 和 E 的集成在密集评估下达到 7.0% 测试错误率,在密集加多裁剪组合评估下达到 6.8%。论文报告 VGG 在 ILSVRC 2014 分类中排名第二,定位中排名第一;定位附录报告 top-5 测试定位错误率为 25.3%。

硬件证据很重要,因为这些结果并不廉价:每个训练好的网络需要在四块 Titan Black GPU 上 2-3 周,且最终对比依赖于多个独立训练的网络。

历史影响

VGG 使"深但简单"的 CNN 骨干网络成为持久的 baseline。其历史计算影响在于,一次昂贵的 4 GPU 训练战役所产生的表征易于复用、检查和迁移。下游检测和分割工作采用了 VGG 风格的骨干网络,因为架构规整且特征层次强大。

它也澄清了那个时代的一个设计权衡。与其使用复杂分支或手工调参的 normalization,VGG 将密集卷积计算和 wall-clock 时间花在深度上。按后来标准这是低效的,但在残差网络、bottleneck block、depthwise convolution 和加速器优化的高效 CNN 改变权衡空间之前,它为领域提供了一个干净的缩放轴。

局限

  • 133M-144M 的参数数量在该时期是较大的,尤其是因为全连接层。
  • 训练单个网络在四块 Titan Black GPU 上需 2-3 周。
  • 最佳基准分数使用了多尺度、多裁剪和集成推理,倍增了推理成本。
  • 该方法缩放的是密集计算而非解决内存效率;后来的架构实现了更好的准确率-成本权衡。

链接