Rich feature hierarchies for accurate object detection and semantic segmentation
Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation - 中文验证版
英文原始依据卡片:rcnn_2014.md
状态:已翻译。
元数据
- Slug:
rcnn_2014 - 年份: 2014
- 会议: CVPR
- 作者: Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik
- 阅读状态: read complete
- 计算范式: 单 GPU 深度学习
- 主要来源: PDF、抽取文本
计算设置
论文给出了 GPU 和 CPU 上的运行时间以及一次训练运行所使用的 GPU 型号。测试时,R-CNN 运行 Selective Search,缩放变形每个候选区域,并将每个区域通过 Caffe CNN 进行 forward。来源报告计算区域候选和 CNN 特征在 GPU 上每张图像需 13 秒,在 CPU 上每张图像需 53 秒,在所有对象类别上均摊。在 ILSVRC2013 部分,论文还说明,使用 Caffe 在一块 NVIDIA Tesla K20 上进行 50k 次 SGD 迭代的 CNN 微调耗时 13 小时。致谢部分单独提到了 NVIDIA GPU 支持。
设备依据:明确的 GPU/CPU 运行时间对比和一次明确的 Tesla K20 微调运行。用于每张图像 13 秒测试时数字的精确 GPU 型号在抽取文本中未单独列出,但论文报告的实现显然是一个 Caffe 时代的单 GPU 检测管线,并伴有 CPU 对比。
瓶颈
瓶颈是将 ImageNet 规模的 CNN 应用于目标检测,而当时跨候选区域的卷积特征共享尚未出现。密集滑动窗口与精确定位匹配不佳,但候选区域级检测需要每张图像约 2000 次 CNN forward 传递。因此,R-CNN 将问题从手工设计特征转移到一个强得多的表征上,同时暴露了逐区域 CNN 评估的成本以及候选区域特征的存储成本。
计算结构是混合的。Selective Search 是一个外部自底向上候选区域生成器。GPU 被用作固定形状的 CNN 特征提取器,通过将每个候选区域缩放变形为 227 x 227 RGB 像素来使用。由此产生的 4096 维特征向量使类别评分变得廉价:论文指出,一张图像的所有点积可以批量化为一个 2000 x 4096 乘以 4096 x N 的矩阵乘法。这种批量化是类别专属部分能扩展到许多类别的原因,而昂贵的部分始终是候选区域特征提取。
方法适配
R-CNN 通过以下方式将 CNN 适配到单 GPU 检测设置:
- 生成自底向上的区域候选。
- 将每个候选区域缩放变形为 227 x 227 像素。
- 提取 4096 维 CNN 特征。
- 训练类别专属线性 SVM。
- 使用 ImageNet 监督预训练,然后进行检测微调。
这把 GPU CNN 转变为候选区域管线中的可复用特征提取器。该设计在多方面是计算感知的。首先,它避免了逐类别滑动窗口的密集图像金字塔,仅评估类别无关的候选区域。其次,它将不规则候选框强制纳入 AlexNet 风格 Caffe CNN 所需的固定输入形状,接受几何缩放变形以保持 GPU kernel 路径简单。第三,它将缓慢的 CNN 传递与廉价的线性分类器分离,使 4096 维特征可以被缓存并在 SVM 训练、bounding-box regression 和后续分析中复用。
批量化选择很重要。论文强调的不是按每个候选区域逐类别运行小型标量运算,而是在所有候选区域和类别上进行单次矩阵乘法。这对 CPU BLAS 和当时的密集线性代数范式非常匹配。这也解释了为什么 R-CNN 可以在特征提取后考虑数千甚至十万类别:论文估计,使用 R-CNN 特征时 100k 个线性预测器占用 1.5GB,而使用更大的 bag-of-visual-words 特征集则需要 134GB。
训练也反映了内存限制。检测微调采样 32 个正样本窗口和 96 个背景窗口构成 128 大小的小批量。在 OverFeat 比较附录中,作者报告对 O-Net 使用了更小的小批量,因为需要适应 GPU 内存。因此,该方法不仅仅是"CNN 加候选区域";它是一种将迁移学习、候选区域缩放变形、特征缓存和批量线性分类适配到早期消费级 GPU 深度学习内存和吞吐边界内的方法。
证据
运行时间证据是直接的。论文报告了在 GPU 上每张图像 13 秒和在 CPU 上每张图像 53 秒用于候选区域和特征计算。随后论证,一旦特征被提取,剩余类别评分成本低廉,因为所有点积被批量化。ILSVRC 设置给出了具体训练规模:在一块 Tesla K20 上进行 50k 次微调 SGD 迭代耗时 13 小时。
准确率证据解释了为什么昂贵管线在历史上是重要的。在 PASCAL VOC 2010 上,R-CNN 达到 53.7% mAP,对比论文比较中的此前区域特征系统 35.1% 和 DPM 的 33.4%。在 VOC 2011/12 上,它报告 53.3% mAP。对检测任务微调 CNN 使 mAP 提升约 8 个百分点,表明监督 ImageNet 预训练加上领域特定适配对于小数据集不仅是便利,而是可衡量的性能步骤。
对于更大类别检测,ILSVRC2013 结果为 31.4% mAP,领先于 OverFeat 的 24.3%。来源还报告,Selective Search 在 ILSVRC 验证集上平均每张图像产生 2403 个候选区域,0.5 IoU 处召回率为 91.6%,低于 PASCAL 上约 98% 的召回率。这暴露了第二个瓶颈:候选区域质量和候选区域数量与运行时间和召回率交互,因此检测准确率同时受限于 CNN 表征和外部候选区域阶段。
历史影响
R-CNN 使 CNN 特征在目标检测中占据主导,并展示 ImageNet 预训练可以迁移到更小的结构化视觉数据集。其历史角色也是反面证据:它使下一个瓶颈变得明显。一旦 CNN 表征在准确率上获胜,每张图像运行数千次相同卷积栈的成本就变得难以辩护。这就是从 R-CNN 到 SPPnet、Fast R-CNN 和 Faster R-CNN 的线索:在图像上共享卷积特征,按区域池化,最终在同一特征图上学习候选区域生成。
本卡片属于单 GPU 深度学习范式,因为该方法是围绕一块 2013-2014 年 GPU 擅长的事情组织的:密集 CNN forward 传递和密集矩阵乘法。它也展示了该范式当时还不能方便地做什么:共享候选区域和分类计算的端到端检测。R-CNN 的特征缓存/SVM 架构是一座务实的桥梁。
局限
- 多阶段训练和推理:候选区域生成、CNN 微调、特征提取、SVM 训练和 bounding-box regression 是分离的组件。
- 缓慢的逐候选区域 CNN 计算:每张图像约 2000 次缩放变形 CNN forward 传递在 GPU 上产生 13 秒每张图像。
- 外部候选区域生成:Selective Search 的召回率和候选区域数量约束了准确率和运行时间。
- 巨大的特征缓存:该方法用 GPU 时间换取存储的 4096 维候选区域特征。
- 每张图像 13 秒数字对应的精确测试时 GPU 型号在抽取文本中未指明,尽管微调 GPU 被识别为 Tesla K20。
链接
- 所属计算范式:compute spine
- 后续链接卡:Fast R-CNN 2015
- 方法索引:cnn
- Ledger 更新:compute bottlenecks