HyperAIHyperAI

Command Palette

Search for a command to run...

Faster R-CNN:基于区域建议网络的实时目标检测

Shaoqing Ren Kaiming He Ross Girshick Jian Sun

摘要

当前最先进的目标检测网络依赖区域建议算法来推测目标位置。SPPnet 和 Fast R-CNN 等进展已大幅缩短了这些检测网络的运行时间,使区域建议的计算成为瓶颈。本文提出了一种区域建议网络(RPN),它与检测网络共享全图卷积特征,从而实现近乎零开销的区域建议。RPN 是一种全卷积网络,能够在每个位置同时预测目标边界和目标性得分。RPN 通过端到端训练生成高质量区域建议,供 Fast R-CNN 用于检测。通过简单的交替优化,RPN 和 Fast R-CNN 可以共享卷积特征进行训练。对于非常深的 VGG-16 模型,我们的检测系统在 GPU 上达到 5fps 的帧率(包含所有步骤),同时在 PASCAL VOC 2007(73.2% mAP)和 2012(70.4% mAP)上实现了最先进的目标检测精度,每张图像使用 300 个建议框。代码已开源:https://github.com/ShaoqingRen/faster_rcnn。

一句话总结

微软研究院的 Faster R-CNN 引入了区域建议网络(RPN),该网络与检测网络共享全图卷积特征,使区域建议几乎零成本,并在 PASCAL VOC 基准上以 5帧/秒 的速度实现当前最先进的检测精度。

核心贡献

  • 引入区域建议网络(RPN)。该网络是全卷积的,并在每个卷积特征图位置为多种尺度和长宽比预测目标性分数和边界框回归结果,同时与检测网络共享全图卷积特征。
  • 提出交替优化方案,分别微调 RPN 与 Fast R-CNN,以生成区域建议并进行目标检测,从而得到共享卷积特征的统一检测器;每张图片的区域建议额外开销约为 10 毫秒。
  • 在 PASCAL VOC 2007 和 2012 上达到当前最先进的目标检测精度,在每张图片 300 个区域建议的情况下分别取得 73.2% 和 70.4% mAP,并在 GPU 上使用 VGG-16 检测器以约 5帧/秒 运行。

引言

基于区域建议方法和区域卷积神经网络的目标检测系统能够实现准确的定位和识别,但区域建议阶段至关重要,因为它可能主导整体运行时间。Selective Search 和 EdgeBoxes 等先前方法依赖人工设计特征和 CPU 推理,因此比检测器更慢,也错过了与检测网络共享计算的机会。作者利用区域建议网络复用 Fast R-CNN 检测器的卷积特征,添加全卷积头部来预测区域建议分数和边界,并端到端训练区域建议与检测任务。这使区域建议生成几乎零成本,约每张图片 10 毫秒,同时提高检测精度,并实现实用的 GPU 帧率。

方法

作者利用区域建议网络(RPN),以可学习的全卷积模块替代基于启发式的区域建议生成。RPN 旨在与下游 Fast R-CNN 检测器共享卷积层,因此最后一个共享卷积层生成的骨干特征图成为小型区域建议网络的输入。这个小型网络在特征图上滑动。在每个空间位置,n×nn \times nn×n 窗口被映射为较低维度的特征向量,对于 ZF 骨干为 256 维,对于 VGG 骨干为 512 维。该向量随后送入两个并行的 1×11 \times 11×1 卷积分支:边界框回归分支和目标分类分支。参见框架图。

在每个滑动位置,作者实例化 kkk 个锚框。每个锚框是以该滑动窗口为中心的参考框,并与预定义尺度和长宽比相关联。通过使用三种尺度和三种长宽比,模型在每个位置生成 k=9k = 9k=9 个锚框。这种设计使区域建议生成具有平移不变性:在每个空间位置应用相同的区域建议函数,并且锚框是相对参考框,而不是全局固定区域。对于大小为 W×HW \times HW×H 的特征图,锚框总数为 WHkW H kWHk。

每个锚框都被分配一个二值训练标签。如果某个锚框与某个真实框具有最高交并比重叠,或者与任何真实框的重叠高于 0.7 的交并比,则该锚框为正样本。如果某个锚框与所有真实框的重叠低于 0.3,则为负样本。与阈值之间重叠的锚框在训练期间被忽略。随后,作者最小化分类项和回归项上的多任务损失:

L({pi},{ti})=1Ncls∑iLcls(pi,pi∗)+λ1Nreg∑ipi∗Lreg(ti,ti∗).L(\{p_i\},\{t_i\}) = \frac{1}{N_{cls}} \sum_i L_{cls}(p_i, p_i^*) + \lambda \frac{1}{N_{reg}} \sum_i p_i^* L_{reg}(t_i, t_i^*).L({pi​},{ti​})=Ncls​1​i∑​Lcls​(pi​,pi∗​)+λNreg​1​i∑​pi∗​Lreg​(ti​,ti∗​).

这里,pip_ipi​ 是锚框 iii 包含目标的预测概率,pi∗p_i^*pi∗​ 是真实标签,正样本锚框等于 1,负样本锚框等于 0。项 tit_iti​ 表示四个预测框坐标,ti∗t_i^*ti∗​ 表示与正样本锚框相关联的真实框的四个坐标。分类损失是目标与背景的对数损失,回归损失使用稳健的平滑 L1L_1L1​ 损失。由于项 pi∗Lregp_i^* L_{reg}pi∗​Lreg​ 仅在 pi∗=1p_i^* = 1pi∗​=1 时被激活,因此回归损失仅应用于正样本锚框。

在坐标回归中,作者学习相对于锚框的偏移量,而不是直接预测绝对框坐标。目标和预测参数化为:

tx=x−xawa,ty=y−yaha,tw=log⁡wwa,th=log⁡hha,t_x = \frac{x - x_a}{w_a}, \quad t_y = \frac{y - y_a}{h_a}, \quad t_w = \log \frac{w}{w_a}, \quad t_h = \log \frac{h}{h_a},tx​=wa​x−xa​​,ty​=ha​y−ya​​,tw​=logwa​w​,th​=logha​h​, tx∗=x∗−xawa,ty∗=y∗−yaha,tw∗=log⁡w∗wa,th∗=log⁡h∗ha,t_x^* = \frac{x^* - x_a}{w_a}, \quad t_y^* = \frac{y^* - y_a}{h_a}, \quad t_w^* = \log \frac{w^*}{w_a}, \quad t_h^* = \log \frac{h^*}{h_a},tx∗​=wa​x∗−xa​​,ty∗​=ha​y∗−ya​​,tw∗​=logwa​w∗​,th∗​=logha​h∗​,

其中 x,y,w,hx, y, w, hx,y,w,h 是预测框的中心、宽度和高度,xa,ya,wa,hax_a, y_a, w_a, h_axa​,ya​,wa​,ha​ 是锚框参数,x∗,y∗,w∗,h∗x^*, y^*, w^*, h^*x∗,y∗,w∗,h∗ 是真实框参数。由于 RPN 从固定的 n×nn \times nn×n 滑动窗口提取特征,作者学习 kkk 个独立回归分支,对应每个锚框尺度和长宽比。这使模型能够预测不同尺寸的框,同时仍使用固定大小的空间特征。

训练 RPN 采用端到端反向传播和随机梯度下降。作者使用以图片为中心的采样策略,每个小批量来自单张图片,并包含正样本和负样本锚框。为避免向背景锚框严重不均衡,每张图片随机采样 256 个锚框来计算损失,正样本与负样本比例最高为 1:1。如果正样本锚框少于 128 个,则用小批量中的负样本锚框进行填充。新层从零均值、标准差 0.01 的高斯分布初始化,而共享卷积层从预训练 ImageNet 模型初始化。学习率调度为前 60k 小批量 0.001,随后 20k 小批量 0.0001,动量 0.9,权重衰减 0.0005。对于 VGG,作者微调从 conv3 开始的层,以节省内存。

为了在区域建议生成器和检测器之间共享卷积特征,作者采用务实的交替优化过程。第一阶段,RPN 使用区域建议目标端到端训练。第二阶段,使用 RPN 生成的区域建议训练独立的 Fast R-CNN 检测器,该检测器也从 ImageNet 预训练模型初始化。此时,两个网络尚未共享卷积权重。第三阶段,使用检测器权重初始化 RPN,但冻结共享卷积层,只微调 RPN 特定层。第四阶段,保持共享卷积层固定,同时微调 Fast R-CNN 的全连接层。经过该过程,两个网络共享相同卷积骨干,并形成统一检测系统。

实现方面,区域建议网络和检测器都在单尺度图片上运行,并将图片较短边缩放到 600 像素。最终共享卷积层在缩放后图片上的步长为 16 像素。作者使用三种锚框尺度,框面积分别为 1282128^21282、2562256^22562 和 5122512^25122 像素,以及三种长宽比:1:1、1:2 和 2:1。训练期间忽略跨越图片边界的锚框,以避免优化不稳定;测试时,超出图片边界之外的区域建议会被裁剪到图片边界。由于许多区域建议相互重叠,作者基于分类分数执行非极大值抑制,交并比阈值为 0.7,将原始区域建议减少为每张图片约 2k 个候选区域以供检测。

实验

作者在 PASCAL VOC 上使用 ZF 和 VGG 骨干进行评估,主要衡量检测精度和运行时间。实验表明,RPN 可以用更少的区域建议和共享卷积计算达到或超越传统区域建议方法,从而实现更快的检测。消融实验表明,特征共享、更深网络、分类分数和边界框回归都能提升区域建议质量,而召回率分析以及与单阶段检测器的比较支持两阶段区域建议与检测级联的有效性。

使用 ZF 特征的 Fast R-CNN 检测器显示,在比较方法中,RPN 区域建议带来最强检测结果。尽管 RPN 只使用约 300 个区域建议,而 Selective Search 和 Edge Boxes 使用约 2,000 个,但精度仍有所提升。共享卷积计算还使基于 RPN 的流程在测试时更快、成本更低。在检测 mAP 方面,共享特征的 RPN 略微优于 Selective Search 和 Edge Boxes。与传统区域建议方法相比,RPN 使用远少于区域建议方法仍保持良好检测质量。在区域建议生成与检测之间共享卷积层支持更快且更低成本的推理。

在 PASCAL VOC 2007 测试集上,使用基于 VGG-16 的 Fast R-CNN 检测器时,RPN 在使用更少区域建议的情况下仍实现强检测质量。与未共享 RPN 相比,在区域建议网络和检测器之间共享卷积层可提高平均精度均值并缩短运行时间。在 VOC 2007 与 VOC 2012 组合数据上训练时,两种方法均取得最佳结果。VGG-16 共享 RPN 的平均精度均值高于 Selective Search。共享 RPN 比未共享 RPN 更快,因为复用了卷积计算。增加 VOC 2012 训练数据会提高两种区域建议方法的平均精度均值。

在 PASCAL VOC 2012 上,使用 VGG-16 的共享 RPN 在更少区域建议的情况下,相比 Selective Search 提升了 Fast R-CNN 检测性能。在 2007 与 2012 组合训练集上训练可提高两种方法的 mAP,且共享 RPN 给出报告结果中最强精度。这一比较支持可学习、共享区域建议作为大量人工生成区域建议的有效替代方案。在 PASCAL VOC 2012 上,使用 VGG-16 的共享 RPN 在更少区域建议的同时优于 Selective Search;使用 2007 与 2012 组合训练数据可提高两种区域建议来源的 mAP;RPN 与 Fast R-CNN 之间的共享特征学习在报告的变体中给出最高 mAP。

RPN 将缓慢的基于 CPU 的 Selective Search 区域建议步骤替换为网络内部区域建议阶段,显著降低总检测时间。对于相同 VGG 骨干,RPN 降低区域建议和按区域处理成本,使完整系统大幅更快。使用 RPN 的较小 ZF 骨干是报告配置中最快的。在 VGG 流程中,Selective Search 主导总时间,因为其区域建议步骤在 CPU 上运行。RPN 在 VGG 上保持相近卷积计算成本,同时大幅降低区域建议时间。使用 RPN 的 ZF 而不是 VGG 可带来报告时间中最短总运行时间和最高处理速率。

RPN 和 Fast R-CNN 的两阶段区域建议加检测系统在 PASCAL VOC 2007 上使用 ZF 模型时,检测 mAP 高于单阶段密集滑动窗口变体。单阶段系统在使用多图片尺度时收益很小,但需要处理更多区域,因此运行更慢。两阶段 RPN 区域建议比单阶段密集滑动窗口区域建议带来更好检测精度。在单阶段变体中增加图片尺度仅带来很小 mAP 增益。两阶段方法使用的区域数量远少于单阶段滑动窗口流程。

PASCAL VOC 上的实验评估了带有 ZF 和 VGG 骨干的 Fast R-CNN 检测器,并将 RPN 区域建议与 Selective Search、Edge Boxes 和密集滑动窗口流程进行比较。RPN 在更少区域建议的情况下实现更强检测质量,而在 RPN 与 Fast R-CNN 之间共享卷积特征可提高精度和效率。共享设计也优于单阶段变体,支持更快且更低成本推理,并从更大的组合 VOC 训练数据中获益。


用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供