快速区域卷积神经网络(Fast R-CNN)
好的这是对Ross Girshick的论文《Fast R-CNN》的完整中文翻译---**快速区域卷积神经网络Fast R-CNN**罗斯·吉什克Ross Girshick微软研究院rbgmicrosoft.com## 摘要本文提出了一种用于目标检测的快速基于区域的卷积网络方法Fast R-CNN。Fast R-CNN 建立在先前工作的基础上利用深度卷积网络高效地对目标候选区域进行分类。与先前工作相比Fast R-CNN 采用了几项创新以提高训练和测试速度同时提升检测精度。Fast R-CNN 训练非常深的 VGG16 网络比 R-CNN 快 9 倍测试时快 213 倍并在 PASCAL VOC 2012 上取得了更高的平均精度均值mAP。与 SPPnet 相比Fast R-CNN 训练 VGG16 快 3 倍测试快 10 倍并且更精确。Fast R-CNN 使用 Python 和 C基于 Caffe实现并在开源 MIT 许可证下发布于 https://github.com/rbgirshick/fast-rcnn。## 1. 引言近年来深度卷积网络ConvNets[14, 16] 显著提高了图像分类 [14] 和目标检测 [9, 19] 的精度。与图像分类相比目标检测是一项更具挑战性的任务需要更复杂的方法来解决。由于这种复杂性当前的方法例如[9, 11, 19, 25]在多阶段流程中训练模型这些流程缓慢且不优雅。复杂性源于检测需要精确地定位目标这带来了两个主要挑战。首先必须处理大量的候选目标位置通常称为“候选区域”。其次这些候选区域仅提供粗略的定位需要对其进行精炼以实现精确定位。这些问题的解决方案常常在速度、精度或简洁性上做出妥协。在本文中我们精简了最先进的基于 ConvNet 的目标检测器 [9, 11] 的训练过程。我们提出了一种单阶段的训练算法该算法联合学习对目标候选区域进行分类并精炼其空间位置。由此产生的方法可以训练非常深的检测网络VGG16 [20]速度比 R-CNN [9] 快 9 倍比 SPPnet [11] 快 3 倍。在运行时检测网络在 0.3 秒内处理图像不包括候选区域生成时间同时在 PASCAL VOC 2012 [7] 上达到了顶级精度mAP 为 66%而 R-CNN 为 62%。### 1.1 R-CNN 和 SPPnet基于区域的卷积网络方法R-CNN[9] 通过使用深度 ConvNet 对目标候选区域进行分类实现了出色的目标检测精度。然而R-CNN 具有明显的缺点1. **训练是一个多阶段流程。** R-CNN 首先使用对数损失log loss在目标候选区域上微调 ConvNet。然后它拟合支持向量机SVM到 ConvNet 特征。这些 SVM 充当目标检测器取代了微调阶段学习的 softmax 分类器。在第三个训练阶段学习边界框回归器。2. **训练在空间和时间上都很昂贵。** 为了训练 SVM 和边界框回归器需要从每张图像中的每个目标候选区域提取特征并写入磁盘。对于非常深的网络如 VGG16处理 VOC07 trainval 集的 5k 张图像需要 2.5 个 GPU 天。这些特征需要数百 GB 的存储空间。3. **目标检测速度慢。** 在测试时需要从每张测试图像中的每个目标候选区域提取特征。使用 VGG16 进行检测每张图像需要 47 秒在 GPU 上。R-CNN 速度慢是因为它对每个目标候选区域执行一次 ConvNet 前向传播而没有共享计算。空间金字塔池化网络SPPnets[11] 被提出通过共享计算来加速 R-CNN。SPPnet 方法计算整个输入图像的卷积特征图然后使用从共享特征图中提取的特征向量对每个目标候选区域进行分类。通过将候选区域内的特征图部分进行最大池化生成固定大小的输出例如6×6从而提取候选区域的特征。多个输出尺寸被池化后连接起来如同空间金字塔池化 [15]。SPPnet 在测试时将 R-CNN 加速了 10 到 100 倍。由于候选区域特征提取更快训练时间也减少了 3 倍。SPPnet 也有明显的缺点。与 R-CNN 一样训练是一个多阶段流程涉及特征提取、使用对数损失微调网络、训练 SVM以及最终拟合边界框回归器。特征也需要写入磁盘。但与 R-CNN 不同[11] 中提出的微调算法无法更新空间金字塔池化层之前的卷积层。毫不意外这种限制固定的卷积层限制了非常深网络的精度。### 1.2 贡献我们提出了一种新的训练算法解决了 R-CNN 和 SPPnet 的缺点同时提高了它们的速度和精度。我们称这种方法为 Fast R-CNN因为它在训练和测试方面相对较快。Fast R-CNN 方法有几个优点1. 比 R-CNN、SPPnet 有更高的检测质量mAP。2. 训练是单阶段的使用多任务损失。3. 训练可以更新所有网络层。4. 不需要磁盘存储来缓存特征。Fast R-CNN 使用 Python 和 CCaffe [13]编写并在开源 MIT 许可证下发布于 https://github.com/rbgirshick/fast-rcnn。## 2. Fast R-CNN 架构与训练图 1 展示了 Fast R-CNN 架构。Fast R-CNN 网络将整个图像和一组目标候选区域作为输入。网络首先使用几个卷积conv层和最大池化层处理整个图像以生成卷积特征图。然后对于每个目标候选区域一个感兴趣区域RoI池化层从特征图中提取一个固定长度的特征向量。每个特征向量被输入到一系列全连接fc层中这些层最终分支成两个同级输出层一个输出覆盖 K 个目标类别加上一个“背景”类别的 softmax 概率估计另一个为 K 个目标类别中的每一个输出四个实数值。每组 4 个值编码了 K 个类别之一的精炼边界框位置。### 2.1 RoI 池化层RoI 池化层使用最大池化将任何有效感兴趣区域内的特征转换为一个具有固定空间范围 H×W例如7×7的小特征图其中 H 和 W 是层超参数独立于任何特定的 RoI。在本文中RoI 是卷积特征图中的一个矩形窗口。每个 RoI 由一个四元组 (r, c, h, w) 定义指定其左上角 (r, c) 以及其高度和宽度 (h, w)。center图 1. Fast R-CNN 架构。输入图像和多个感兴趣区域RoIs被输入到一个全卷积网络。每个 RoI 被池化为一个固定大小的特征图然后通过全连接层FCs映射到一个特征向量。网络对每个 RoI 有两个输出向量softmax 概率和每类边界框回归偏移量。该架构使用多任务损失进行端到端训练。/centerRoI 最大池化的工作原理是将 h×w 的 RoI 窗口划分为一个 H×W 的子窗口网格每个子窗口的大小近似为 h/H × w/W然后将每个子窗口中的值最大池化到相应的输出网格单元中。与标准最大池化一样池化操作独立地应用于每个特征图通道。RoI 层只是 SPPnets [11] 中使用的空间金字塔池化层的一个特例即只有一个金字塔级别。我们使用 [11] 中给出的池化子窗口计算方法。### 2.2 从预训练网络初始化我们使用三个预训练的 ImageNet [4] 网络进行实验每个网络都有五个最大池化层以及五到十三个卷积层网络细节见第 4.1 节。当用预训练网络初始化 Fast R-CNN 网络时需要进行三次转换。首先最后一个最大池化层被替换为一个 RoI 池化层该层通过设置 H 和 W 以兼容网络的第一个全连接层例如对于 VGG16H W 7。其次网络的最后一个全连接层和 softmax为 1000 类 ImageNet 分类训练被替换为前述的两个同级层一个用于 K1 个类别的全连接层和 softmax以及类别特定的边界框回归器。第三网络被修改为接受两个数据输入一个图像列表和这些图像中的 RoI 列表。### 2.3 检测微调使用反向传播训练所有网络权重是 Fast R-CNN 的一项重要能力。首先让我们阐明为什么 SPPnet 无法更新空间金字塔池化层以下的权重。根本原因是当每个训练样本即 RoI来自不同图像时通过 SPP 层的反向传播效率极低而这正是 R-CNN 和 SPPnet 网络的训练方式。这种低效率源于每个 RoI 可能具有非常大的感受野通常覆盖整个输入图像。由于前向传播必须处理整个感受野因此训练输入很大通常是整个图像。我们提出了一种更高效的训练方法利用训练期间的特征共享。在 Fast R-CNN 训练中随机梯度下降SGD小批量是分层采样的首先采样 N 张图像然后从每张图像中采样 R/N 个 RoI。关键在于来自同一图像的 RoI 在前向和后向传播中共享计算和内存。使 N 变小可以减少小批量计算。例如当使用 N2 和 R128 时所提出的训练方案比从 128 张不同图像中各采样一个 RoI即 R-CNN 和 SPPnet 的策略快大约 64 倍。对这种策略的一个担忧是由于来自同一图像的 RoI 是相关的可能会导致训练收敛缓慢。这种担忧似乎不是一个实际问题我们使用 N2 和 R128用比 R-CNN 更少的 SGD 迭代次数就取得了良好的结果。除了分层采样Fast R-CNN 还使用了一个简化的训练过程即单次微调阶段联合优化 softmax 分类器和边界框回归器而不是像 [9, 11] 那样分三个阶段分别训练 softmax 分类器、SVM 和回归器。该过程的组成部分损失、小批量采样策略、通过 RoI 池化层的反向传播以及 SGD 超参数如下所述。**多任务损失。** Fast R-CNN 网络有两个同级输出层。第一个输出离散概率分布每个 RoIp (p0, ..., pK)覆盖 K1 个类别。通常p 是通过对全连接层的 K1 个输出应用 softmax 计算的。第二个同级层输出边界框回归偏移量t^k (t_x^k, t_y^k, t_w^k, t_h^k)对应于 K 个目标类别中的每一个由 k 索引。我们使用 [9] 中给出的 t^k 的参数化方式其中 t^k 指定了一个相对于目标候选区域的尺度不变平移和对数空间中的高/宽偏移。每个训练 RoI 被标记一个真实类别 u 和一个真实的边界框回归目标 v。我们对每个标记的 RoI 使用多任务损失 L 来联合训练分类和边界框回归\[L(p, u, t^u, v) L_{cls}(p, u) \lambda [u \ge 1] L_{loc}(t^u, v), \quad (1)\]其中 \(L_{cls}(p, u) -\log p_u\) 是真实类别 u 的对数损失。第二个任务损失 \(L_{loc}\) 定义在真实类别 u 的边界框回归目标元组 \(v (v_x, v_y, v_w, v_h)\) 和预测元组 \(t^u (t_x^u, t_y^u, t_w^u, t_h^u)\) 上同样针对类别 u。艾弗森括号指示函数 \([u \ge 1]\) 在 u ≥ 1 时值为 1否则为 0。按照惯例背景类别的标签为 u 0。对于背景 RoI没有真实边界框的概念因此忽略 \(L_{loc}\)。对于边界框回归我们使用损失\[L_{loc}(t^u, v) \sum_{i \in \{x, y, w, h\}} smooth_{L_1}(t_i^u - v_i), \quad (2)\]其中\[smooth_{L_1}(x) \begin{cases}0.5x^2 \text{if } |x| 1 \\|x| - 0.5 \text{otherwise},\end{cases} \quad (3)\]是一种鲁棒的 L1 损失它对离群值的敏感度低于 R-CNN 和 SPPnet 中使用的 L2 损失。当回归目标无界时使用 L2 损失训练可能需要仔细调整学习率以防止梯度爆炸。公式 (3) 消除了这种敏感性。公式 (1) 中的超参数 λ 控制两个任务损失之间的平衡。我们将真实的回归目标 \(v_i\) 归一化为零均值和单位方差。所有实验均使用 λ 1。我们注意到 [6] 使用了一种相关的损失来训练类别无关的目标候选区域网络。与我们的方法不同[6] 提倡使用双网络系统来分离定位和分类。OverFeat [19]、R-CNN [9] 和 SPPnet [11] 也训练了分类器和边界框定位器但是这些方法使用分阶段训练我们证明这对 Fast R-CNN 来说不是最优的第 5.1 节。**小批量采样。** 在微调期间每个 SGD 小批量由 N2 张图像构建这些图像是均匀随机选择的按照惯例我们实际上是在数据集的排列上进行迭代。我们使用大小为 R128 的小批量从每张图像中采样 64 个 RoI。如 [9] 所述我们从与真实边界框的交并比IoU重叠至少为 0.5 的目标候选区域中抽取 25% 的 RoI。这些 RoI 构成了标记为前景目标类别即 u ≥ 1的样本。剩余的 RoI 从与真实边界框的最大 IoU 落在区间 [0.1, 0.5) 的目标候选区域中采样遵循 [11]。这些是背景样本标记为 u 0。0.1 的下限阈值似乎起到了困难样本挖掘 [8] 的启发式作用。在训练期间图像以 0.5 的概率水平翻转。未使用其他数据增强。**通过 RoI 池化层的反向传播。** 反向传播通过 RoI 池化层传递导数。为清晰起见我们假设每个小批量只有一张图像N1但扩展到 N1 是直接的因为前向传播独立处理所有图像。设 \(x_i \in \mathbb{R}\) 为进入 RoI 池化层的第 i 个激活输入设 \(y_{rj}\) 为该层从第 r 个 RoI 输出的第 j 个输出。RoI 池化层计算 \(y_{rj} x_{i^*(r,j)}\)其中 \(i^*(r,j) \arg \max_{i \in \mathcal{R}(r,j)} x_{i}\)。\(\mathcal{R}(r,j)\) 是输出单元 \(y_{rj}\) 进行最大池化的子窗口中的输入索引集。一个单独的 \(x_i\) 可能被分配给几个不同的输出 \(y_{rj}\)。RoI 池化层的反向函数通过跟随 argmax 开关来计算损失函数相对于每个输入变量 \(x_i\) 的偏导数\[\frac{\partial L}{\partial x_i} \sum_r \sum_j [i i^*(r, j)] \frac{\partial L}{\partial y_{rj}}. \quad (4)\]换句话说对于每个小批量 RoI r 和每个池化输出单元 \(y_{rj}\)如果 i 是最大池化为 \(y_{rj}\) 所选择的 argmax则偏导数 \(\partial L / \partial y_{rj}\) 被累加起来。在反向传播中偏导数 \(\partial L / \partial y_{rj}\) 已经由 RoI 池化层之上的层的反向函数计算得出。**SGD 超参数。** 用于 softmax 分类和边界框回归的全连接层分别从均值为零、标准差为 0.01 和 0.001 的高斯分布初始化。偏置初始化为 0。所有层对权重使用每层学习率 1对偏置使用每层学习率 2全局学习率为 0.001。当在 VOC07 或 VOC12 trainval 上训练时我们运行 SGD 进行 30k 次小批量迭代然后将学习率降至 0.0001再训练 10k 次迭代。当在更大的数据集上训练时我们运行更多次迭代如下所述。使用动量为 0.9参数衰减为 0.0005应用于权重和偏置。### 2.4 尺度不变性我们探索了两种实现尺度不变目标检测的方法1通过“暴力”学习2使用图像金字塔。这些策略遵循 [11] 中的两种方法。在暴力方法中每张图像在训练和测试期间都以预定义的像素尺寸进行处理。网络必须直接从训练数据中学习尺度不变的目标检测。相比之下多尺度方法通过图像金字塔为网络提供近似的尺度不变性。在测试时图像金字塔用于近似地对每个目标候选区域进行尺度归一化。在多尺度训练期间我们按照 [11]每次采样图像时随机采样一个金字塔尺度作为一种数据增强形式。由于 GPU 内存限制我们仅对较小的网络进行多尺度训练实验。## 3. Fast R-CNN 检测一旦 Fast R-CNN 网络微调完成检测几乎等同于运行一次前向传播假设目标候选区域已预先计算。网络将一张图像或一个图像金字塔编码为图像列表和一个包含 R 个待评分目标候选区域的列表作为输入。在测试时R 通常约为 2000但我们也会考虑更大约 45k的情况。当使用图像金字塔时每个 RoI 被分配到使得缩放后的 RoI 面积最接近 224² 像素 [11] 的那个尺度。对于每个测试 RoI r前向传播输出一个类别的后验概率分布 p 和一组相对于 r 的预测边界框偏移量每个 K 类都有自己的精炼边界框预测。我们使用估计的概率 \(\Pr(\text{class} k | r) \triangleq p_k\) 为 r 分配每个目标类别 k 的检测置信度。然后我们使用 R-CNN [9] 中的算法和设置为每个类别独立执行非极大值抑制。### 3.1 用于更快检测的截断 SVD对于整图分类计算全连接层的时间相对于卷积层是很少的。相反对于检测需要处理的 RoI 数量很大几乎一半的前向传播时间都花费在计算全连接层上见图 2。大型全连接层可以通过使用截断 SVD [5, 23] 进行压缩来轻松加速。在这种技术中由 u×v 权重矩阵 W 参数化的层被近似分解为\[W \approx U \Sigma_t V^T \quad (5)\]使用 SVD。在这个分解中U 是一个 u×t 的矩阵包含 W 的前 t 个左奇异向量\(\Sigma_t\) 是一个 t×t 的对角矩阵包含 W 的前 t 个奇异值V 是一个 v×t 的矩阵包含 W 的前 t 个右奇异向量。截断 SVD 将参数数量从 uv 减少到 t(uv)如果 t 远小于 min(u, v)则效果显著。为了压缩网络对应于 W 的单个全连接层被替换为两个全连接层它们之间没有非线性。第一层使用权重矩阵 \(\Sigma_t V^T\)无偏置第二层使用 U带有与 W 相关的原始偏置。当 RoI 数量很大时这种简单的压缩方法能提供良好的加速效果。## 4. 主要结果三个主要结果支持了本文的贡献1. 在 VOC07、2010 和 2012 上达到最先进的 mAP。2. 与 R-CNN、SPPnet 相比训练和测试速度快。3. 在 VGG16 中微调卷积层可提高 mAP。### 4.1 实验设置我们的实验使用了三个在线可用的预训练 ImageNet 模型。第一个是来自 R-CNN [9] 的 CaffeNet本质上是 AlexNet [14]。我们将这个 CaffeNet 称为模型 S代表“小”。第二个网络是来自 [3] 的 VGG_CNN_M_1024其深度与 S 相同但更宽。我们称这个网络为模型 M代表“中”。最后一个网络是来自 [20] 的非常深的 VGG16 模型。由于这个模型最大我们称其为模型 L。在本节中所有实验都使用单尺度训练和测试s600详见第 5.2 节。### 4.2 VOC 2010 和 2012 结果在这些数据集上我们将 Fast R-CNN简称 FRCN与公共排行榜上 comp4外部数据赛道的前列方法进行比较表 2表 3。对于 NUS_NIN_c2000 和 BabyLearning 方法目前没有相关的出版物我们也无法找到关于所用 ConvNet 架构的确切信息它们是 Network-in-Network [17] 设计的变体。所有其他方法都从相同的预训练 VGG16 网络初始化。Fast R-CNN 在 VOC12 上取得了最佳结果mAP 为 65.7%使用额外数据时为 68.4%。它比其他方法快两个数量级这些方法都基于“慢速”的 R-CNN 流程。在 VOC10 上SegDeepM [25] 取得了比 Fast R-CNN 更高的 mAP67.2% 对 66.1%。SegDeepM 在 VOC12 trainval 加上分割标注上训练它旨在通过使用马尔可夫随机场对 R-CNN 检测结果和来自 O2P [1] 语义分割方法的分割结果进行推理来提高 R-CNN 的精度。Fast R-CNN 可以替换 SegDeepM 中的 R-CNN这可能会带来更好的结果。当使用扩大的 0712 训练集见表 2 标题时Fast R-CNN 的 mAP 提高到 68.8%超过了 SegDeepM。### 4.3 VOC 2007 结果在 VOC07 上我们将 Fast R-CNN 与 R-CNN 和 SPPnet 进行比较。所有方法都从相同的预训练 VGG16 网络开始并使用边界框回归。VGG16 SPPnet 的结果由 [11] 的作者计算。SPPnet 在训练和测试期间都使用五个尺度。Fast R-CNN 相对于 SPPnet 的改进表明尽管 Fast R-CNN 使用单尺度训练和测试但微调卷积层提供了 mAP 的大幅提升从 63.1% 到 66.9%。R-CNN 的 mAP 为 66.0%。作为一个小问题SPPnet 的训练没有使用 PASCAL 中标记为“困难”的样本。移除这些样本将 Fast R-CNN 的 mAP 提高到 68.1%。所有其他实验都使用“困难”样本。### 4.4 训练和测试时间快速训练和测试时间是我们的第二个主要结果。表 4 比较了 Fast R-CNN、R-CNN 和 SPPnet 在 VOC07 上的训练时间小时、测试速率秒/图像和 mAP。对于 VGG16Fast R-CNN 处理图像的速度比 R-CNN 快 146 倍不使用截断 SVD和 213 倍使用它。训练时间减少了 9 倍从 84 小时减少到 9.5 小时。与 SPPnet 相比Fast R-CNN 训练 VGG16 快 2.7 倍9.5 小时对 25.5 小时测试快 7 倍不使用截断 SVD或 10 倍使用它。Fast R-CNN 还消除了数百 GB 的磁盘存储因为它不缓存特征。**表 4. Fast R-CNN、R-CNN 和 SPPnet 中相同模型之间的运行时比较。Fast R-CNN 使用单尺度模式。SPPnet 使用 [11] 中指定的五个尺度。计时由 [11] 的作者提供。时间是在 Nvidia K40 GPU 上测量的。**表格数据已根据原文内容转述**截断 SVD。** 截断 SVD 可以将检测时间减少 30% 以上而 mAP 仅有微小下降0.3 个百分点并且无需在模型压缩后进行额外的微调。图 2 展示了如何使用 VGG16 的 fc6 层中 25088×4096 矩阵的前 1024 个奇异值和 fc7 层中 4096×4096 矩阵的前 256 个奇异值减少了运行时间而 mAP 损失很小。如果在压缩后再次微调可以在 mAP 损失更小的情况下实现进一步的加速。center图 2. VGG16 在截断 SVD 前后的计时。在 SVD 之前全连接层 fc6 和 fc7 占用 45% 的时间。/center### 4.5 微调哪些层对于 SPPnet 论文 [11] 中考虑的较浅网络仅微调全连接层似乎就足以获得良好的精度。我们假设这个结果对于非常深的网络不成立。为了验证微调卷积层对 VGG16 的重要性我们使用 Fast R-CNN 进行微调但冻结 13 个卷积层仅让全连接层学习。这种消融实验模拟了单尺度 SPPnet 训练并将 mAP 从 66.9% 降低到 61.4%表 5。这个实验验证了我们的假设通过 RoI 池化层进行训练对于非常深的网络至关重要。**表 5. 限制 VGG16 中微调层的影响。微调 ≥ fc6 模拟了 SPPnet 训练算法 [11]但使用单尺度。SPPnet L 的结果是使用五个尺度获得的速度成本显著7 倍。**这是否意味着应该微调所有卷积层简而言之不是。在较小的网络S 和 M中我们发现 conv1 是通用的且与任务无关这是一个众所周知的事实 [14]。允许 conv1 学习或不学习对 mAP 没有有意义的影响。对于 VGG16我们发现只需要更新从 conv3.1 开始的层13 个卷积层中的 9 个。这个观察是实用的1与从 conv3.1 开始学习相比从 conv2.1 开始更新会使训练速度减慢 1.3 倍12.5 小时对 9.5 小时2从 conv1.1 开始更新会超出 GPU 内存。从 conv2.1 开始学习时mAP 的差异仅为 0.3 个百分点表 5最后一列。本文中使用 VGG16 的所有 Fast R-CNN 结果均微调 conv3.1 及更高层所有使用模型 S 和 M 的实验均微调 conv2 及更高层。## 5. 设计评估我们进行了实验来理解 Fast R-CNN 与 R-CNN 和 SPPnet 的比较并评估设计决策。遵循最佳实践我们在 PASCAL VOC07 数据集上进行了这些实验。### 5.1 多任务训练有帮助吗多任务训练很方便因为它避免了管理顺序训练任务的流程。但它也有可能改善结果因为这些任务通过共享表示ConvNet相互影响 [2]。多任务训练能提高 Fast R-CNN 中的目标检测精度吗为了测试这个问题我们训练了仅使用分类损失 \(L_{cls}\)即设置公式 (1) 中的 λ 0的基线网络。这些基线网络不使用边界框回归。表 6 比较了三种网络S、M、L在有和没有多任务损失的情况下的结果。**表 6. 多任务训练与仅分类训练VOC07 mAP的比较。**对于所有三个网络多任务训练都比单独的分类训练提高了 mAP在模型 L 上提高了约 2.5 个百分点。这表明联合训练分类和边界框回归确实可以提高检测精度部分原因是通过共享网络表示实现了任务间的相互影响。### 5.2 尺度不变性暴力还是多尺度在 SPPnet [11] 中多尺度训练和测试比单尺度训练和测试产生了更好的 mAP。但是SPPnet 无法更新卷积层。由于 Fast R-CNN 可以更新卷积层我们尝试确定单尺度训练是否足够或者多尺度训练是否仍然有益。**表 7. 单尺度与多尺度训练及测试VOC07 mAP。**在单尺度训练s600下Fast R-CNN 在测试时使用单尺度s600达到了 66.9% 的 mAP。在测试时使用多尺度五个尺度mAP 略微提高到 67.5%。有趣的是多尺度训练在五个尺度上采样加上单尺度测试s600也提供了类似的小幅提升67.1%。多尺度训练和测试一起使用时mAP 达到了 67.6%。这些结果表明虽然多尺度处理可以带来一些改进但与能够更新卷积层带来的根本性改进相比 SPPnet 的 63.1%相比这种提升是次要的。由于内存限制这部分实验仅在较小的模型S 和 M上进行。对于模型 LVGG16使用多尺度会耗尽 GPU 内存因此我们所有的 VGG16 实验都使用单尺度训练和测试。### 5.3 训练需要更多数据吗目标检测的一个常见智慧是更多数据通常会带来更好的结果。我们通过实验评估了增加训练数据在 VOC07 数据集上对 Fast R-CNN 的影响。我们使用不同的训练集大小从 1k 到 10k 图像训练模型 M并测量在 VOC07 测试集上的 mAP。结果显示增加数据量确实带来了持续的 mAP 提升这与其他检测器如 DPM [8]的观察结果一致 [24]。### 5.4 SVM 是否优于 SoftmaxR-CNN 和 SPPnet 在微调后训练 SVM 分类器而不是使用微调网络中的 softmax 输出。一种假设是这种后处理步骤是必要的因为在微调期间使用的正负样本分布不平衡或由于其他原因。Fast R-CNN 在训练期间直接使用 softmax从而避免了在后处理阶段训练 SVM。我们测试了在 Fast R-CNN 之后使用 SVM 是否仍然有益。我们在 Fast R-CNN 中实现了带有困难负样本挖掘的后处理 SVM 训练使用与 R-CNN 相同的训练算法和超参数。表 8 显示对于所有三个网络softmax 都略微优于 SVMmAP 提高了 0.1 到 0.8 个百分点。这种影响很小但它表明“一次性”微调就足够了相比之前的多阶段训练方法。我们注意到与一对多的 SVM 不同softmax 在对 RoI 进行评分时引入了类别间的竞争。**表 8. Fast R-CNN 中使用 Softmax 与 SVM 的比较VOC07 mAP。**### 5.5 更多候选区域总是更好吗广义上有两种目标检测器一种使用稀疏的目标候选区域集例如选择性搜索 [21]另一种使用密集集例如DPM [8]。分类稀疏候选区域是一种级联 [22] 形式其中候选区域机制首先拒绝大量候选者留给分类器一个小的集合进行评估。当应用于 DPM 检测时这种级联提高了检测精度 [21]。我们发现证据表明候选-分类器级联也提高了 Fast R-CNN 的精度。使用选择性搜索的质量模式我们从每张图像 1k 到 10k 个候选区域进行扫描每次都重新训练和重新测试模型 M。如果候选区域仅起计算作用那么增加每张图像的候选区域数量不应损害 mAP。我们发现随着候选区域数量的增加mAP 先上升然后略微下降图 3实蓝线。这个实验表明向深度分类器提供更多候选区域并无帮助甚至略微损害了精度。如果没有实际运行实验这个结果是很难预测的。衡量目标候选区域质量的最新标准是平均召回率AR[12]。在使用固定数量的每张图像候选区域时对于几种候选区域方法AR 在使用 R-CNN 时与 mAP 相关性很好。图 3 显示随着每张图像候选区域数量的变化AR实红线与 mAP 的相关性并不好。必须谨慎使用 AR由于更多候选区域带来的更高 AR 并不意味着 mAP 会增加。幸运的是使用模型 M 的训练和测试时间不到 2.5 小时。因此Fast R-CNN 能够高效、直接地评估目标候选区域的 mAP这比代理指标更可取。我们还研究了 Fast R-CNN 在使用密集生成的框覆盖尺度、位置和长宽比时的情况每张图像约 45k 个框。这个密集集足够丰富当每个选择性搜索框被其最接近的在 IoU 上密集框替换时mAP 仅下降 1 个百分点至 57.7%图 3蓝色三角形。密集框的统计特性与选择性搜索框不同。从 2k 个选择性搜索框开始我们测试在添加随机采样的 1000×{2, 4, 6, 8, 10, 32, 45} 个密集框时的 mAP。对于每个实验我们都重新训练和重新测试模型 M。当添加这些密集框时mAP 的下降比添加更多选择性搜索框时更为显著最终达到 53.0%。我们还仅使用密集框每张图像 45k训练和测试 Fast R-CNN。这种设置产生的 mAP 为 52.9%蓝色菱形。最后我们检查是否需要有困难负样本挖掘的 SVM 来应对密集框的分布。SVM 的表现更差49.3%蓝色圆圈。center图 3. 各种候选区域方案的 VOC07 测试 mAP 和 AR。/center### 5.6 MS COCO 初步结果我们将 Fast R-CNN使用 VGG16应用于 MS COCO 数据集 [18]以建立一个初步基线。我们在 80k 图像训练集上训练了 240k 次迭代并使用评估服务器在“test-dev”集上进行评估。PASCAL 风格的 mAP 为 35.9%新的 COCO 风格的 AP也在 IoU 阈值上取平均为 19.7%。## 6. 结论本文提出了 Fast R-CNN这是对 R-CNN 和 SPPnet 的一个简洁且快速的更新。除了报告最先进的检测结果外我们还提供了详细的实验希望能提供新的见解。特别值得注意的是稀疏的目标候选区域似乎提高了检测器的质量。这个问题在过去由于成本时间过高而难以探究但在 Fast R-CNN 中变得可行。当然可能存在尚未发现的技术使得密集框的表现与稀疏候选区域一样好。如果开发出这样的方法可能有助于进一步加速目标检测。**致谢。** 我感谢 Kaiming He、Larry Zitnick 和 Piotr Dollár 的有益讨论和鼓励。## 参考文献[1] J. Carreira, R. Caseiro, J. Batista, and C. Sminchisescu. Semantic segmentation with second-order pooling. In ECCV, 2012. 5, 9[2] R. Caruana. Multitask learning. Machine learning, 1997. 6, 7[3] K. Chatfield, K. Simonyan, A. Vedaldi, and A. Zisserman. Return of the devil in the details: Delving deep into convolutional nets. In BMVC, 2014. 5, 9[4] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. Fei-Fei. ImageNet: A large-scale hierarchical image database. In CVPR, 2009. 2, 9[5] E. Denton, W. Zaremba, J. Bruna, Y. LeCun, and R. Fergus. Exploiting linear structure within convolutional networks for efficient evaluation. In NIPS, 2014. 4, 9[6] D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014. 3, 9[7] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The PASCAL visual object classes (VOC) challenge. IJCV, 2010. 1, 9[8] P. Felzenszwalb, R. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part based models. TPAMI, 2010. 3, 8, 9[9] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. 1, 2, 3, 4, 5, 6, 7, 8, 9[10] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Region-based convolutional networks for accurate object detection and segmentation. TPAMI, 2015. To appear. 5, 8, 9[11] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV, 2014. 1, 2, 3, 4, 5, 6, 7, 9[12] J. Hosang, R. Benenson, P. Dollar, and B. Schiele. What makes for effective detection proposals? CoRR, abs/1502.05082, 2015. 8, 9[13] Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, and T. Darrell. Caffe: Convolutional architecture for fast feature embedding. In ACM MM, 2014. 2, 9[14] A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. 1, 4, 6, 9[15] S. Lazebnik, C. Schmid, and J. Ponce. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories. In CVPR, 2006. 1, 9[16] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural Computation, 1989. 1, 9[17] M. Lin, Q. Chen, and S. Yan. Network in network. In ICLR, 2014. 5, 9[18] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollár, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014. 8, 9[19] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks. In ICLR, 2014. 1, 3, 9[20] K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. In ICLR, 2015. 1, 5, 9[21] J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders. Selective search for object recognition. IJCV, 2013. 8, 9[22] P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In CVPR, 2001. 8, 9[23] J. Xue, J. Li, and Y. Gong. Restructuring of deep neural network acoustic models with singular value decomposition. In Interspeech, 2013. 4, 9[24] X. Zhu, C. Vondrick, D. Ramanan, and C. Fowlkes. Do we need more training data or better models for object detection? In BMVC, 2012. 7, 9[25] Y. Zhu, R. Urtasun, R. Salakhutdinov, and S. Fidler. segDeepM: Exploiting segmentation and context in deep neural networks for object detection. In CVPR, 2015. 1, 5, 9

相关新闻