Faster R-CNN 解读:用网络生成候选区域

Title: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(2016)
Link: paper,code
Key points:

  1. 理解新概念 RPN(Region Proposal Network) (3.1)
  2. 理解 Fatser R-CNN 架构
  3. RPN 如何与 Fast R-CNN 结合,如何交替训练(3.2)

Summary:
又是一篇 two-stage 的 detector,全文最核心最难理解的部分是 3.1 PRN 网络,至于 3.2 的交替训练还是好理解的。

这里总结一下 RPN。

PRN 的作用是在检测前先预选一些区域(框),我们的选择标准是:

  1. 这些区域包含感兴趣的类别(我只想检测人和动物,包含天空草地的区域就不选)
  2. 预测出来的区域/框和 ground truth 框重叠度高(检测人只用这个大小和比例的框,太小太大的框我都不要)

基于以上两点构建损失函数,我们就能先筛选一部分感兴趣的区域(候选框)。

但是图片这么大,先筛选哪部分呢?拿一个窗口,在图像经 CNN 得到的特征图上从头开始滑动,这样就能做到全覆盖

但是还要注意,滑动窗口,在每个窗口进行选择时,如果里面包含你研究类别的物体,你就要先要给物体划定一片区域,也就是预测包含这个物体的框。物体大小不同,对应的框也不同,到底给这里的物体预测多大的框,论文的方案是预测几个不同大小,纵横比的框(论文是3*3=9,这九个框叫 anchor),这九个框总有几个和真实框接近的,重叠度高的框就晋级了。

至此,PRN 的使命完成,它经过一系列筛选,给了检测网络(Fast R-CNN)一批候选者,检测网络只需要判断这些框中的物体类别,以及进一步选择与 ground truth 接近的框。

现在你应该明白 PRN 干了什么,它干的工作就是 海选!

那没有 PRN 就不行了吗,我直接用滑动窗口在 feature map 上分类、预测位置也行呀。可以的,但这样网络就要花大量的精力预测那些我们不研究的物体(一幅图,你感兴趣的物体往往是少数),大量无用的 region 都需要单独进入分类网络,耗时还可能不收敛!

Fast R-CNN 问题:

  • 继Fast R-CNN后,在CPU上实现的区域建议算法 Selective Search、EdgeBoxes等成了物体检测速度提升上的最大瓶颈。

Faster R-CNN 创新点:

  • 设计Region Proposal Networks(RPN),利用CNN卷积操作后的特征图生成region proposals,代替了Selective Search、EdgeBoxes等方法,速度上提升明显;
  • 训练Region Proposal Networks与检测网络(Fast R-CNN)共享卷积层,大幅提高网络的检测速度。

Faster R-CNN 模块:

  • 用于生成区域的深度全卷积网络和 Fast R-CNN detector。

相比 Fast R-CNN 模块的改变:

  • Fast R-CNN 生成区域需要外部的 SS 模块,而 Faster R-CNN 是一个统一的模块,生产区域部分由 PRN 完成

Faster R-CNN 交替训练流程:

  • 训练PRN:使用 ImageNet-pre-trained model 初始化,针对 region proposal 任务 fine tune
  • 用第一步得到的 PRN 训练 Fast R-CNN:其中 Fast R-CNN 也用 ImageNet-pre-trained model 初始化(此时两个网络还没有共享特征)。
  • 用 Fast R-CNN 初始化 PRN:固定共享的卷积层,仅微调 RPN 特有的层(此时两个网络开始共享)
  • 在保持共享卷积层固定不变的情况下,微调 Fast R-CNN 的特有层。(两个网络共享相同的卷积层并形成统一的网络)

Faster R-CNN 检测流程:

  • 输入一张多目标图像
  • 图像经过 CNN 网络生成 feature map
  • feature map 分两路,一路经过 PRN 得到候选区域(经过 NMS ),另一路继续向后传播。
  • 上一步得到的高维特征图和区域建议同时输入 RoI 池化层,提取对应区域建议的特征
  • 区域特征通过全连接层后,输出该区域的分类得分以及回归后的 bounding-box

文章目录

    • Abstract
    • 1 INTRODUCTION
    • 2 RELATED WORK
    • 3 FASTER R-CNN
      • 3.1 Region Proposal Networks
        • 3.1.1 Anchors
        • 3.1.2 Loss Function
        • 3.1.3 Training RPNs
      • 3.2 Sharing Features for RPN and Fast R-CNN
    • 4 EXPERIMENTS
      • 4.1 Experiments on PASCAL VOC
    • 5 CONCLUSION

Abstract

之前的 object detection 方法有 SPPnet 和 Fast R-CNN 已经指出 region proposal 的计算是瓶颈。

在这项工作中,我们引入了一个 Region Proposal Network(RPN),该网络与检测网络共享全图像卷积特征,从而实现几乎免费的区域提议。

关于 PRN:

  • RPN是一个完全卷积的网络,可以同时预测每个位置的对象范围和对象得分;
  • 对RPN进行了端到端的训练,以生成高质量的区域建议,Fast R-CNN将其用于检测;
  • 通过共享RPN和Fast R-CNN的卷积特征,我们将RPN和Fast R-CNN进一步合并为一个网络。

1 INTRODUCTION

proposals 是当前检测任务的计算瓶颈,而且考虑到检测网络部分,用 GPU 加速 proposals 的计算不太有效。

本文提出一个让 proposal 计算用时几乎为 0 的方法——引入了一个 novel 的网络 Region Proposal Networks (RPNs)。PRN 通过和 object detection 网络(SPPnet / Fast R-CNN)共享卷积层,使得 test 阶段 proposal 的计算用时几乎为0。

  • 想法来源:作者观察到基于区域的检测器(如Fast R-CNN )的卷积特征图也可以用于生成 region proposals。
  • 与检测结合:为了将RPN与快速R-CNN 对象检测网络统一起来,提出了一种训练方案,该方案在对区域建议任务进行微调与对对象检测进行微调之间交替,同时保持 proposal 不变。
  • 评估:我们在PASCAL VOC检测基准上全面评估了我们的方法,在该基准上,具有 Fast R-CNN 的 RPN 产生的检测精度优于具有 Fast R-CNN 的选择性搜索的 benchmark。
  • 扩展:该模型还可用于 3D object detection , part-based detection , instance segmentation , and image captioning 等任务。

2 RELATED WORK

Object Proposals——
object proposal 产生的方法主要有两种:一种基于分组超像素(Selective Search, CPMC , MCG),一种基于滑动窗口 (objectness in windows, EdgeBoxes, )

object proposal方法被用作独立于检测器的外部模块(Selective Search object detectors, R- CNN, Fast R-CNN)

Deep Networks for Object Detection——
R-CNN训练CNN将 proposal 区域分类为对象类别或背景,但它不预测边界。

之后有一些论文提出预测边界的方法,如OverFeat 和 MultiBox (后面会与 Faster R-CNN 比较)

卷积的共享计算一直吸引着越来越多的注意力,以寻求有效而准确的视觉识别,如 OverFeat,SPP,Fast R-CNN。

3 FASTER R-CNN

本文提出的 object detection 系统称为 Faster R-CNN,包含两个模块:用于生成区域的深度全卷积网络和 Fast R-CNN detector。

整个系统是统一的,其中的 RPN 模块提供一些候选区域给 Fast R-CNN 模块。
Faster R-CNN 解读:用网络生成候选区域_第1张图片

3.1 Region Proposal Networks

RPN 接收(任何大小的)图像作为输入,并输出一组矩形框,每个矩形框都有一个客观评分(评分表明这个位置有物体的概率)。PRN 用 FCN 实现。

region proposals 的生成过程:在该网络最后一层输出的特征图(图 3 最下面的 feature map)上滑动一个小型网络(图 3 的 sliding window)。 这个小网络将特征图的 n×n 的这部分区域(图 3 的红框)作为输入,经过中间层映射成低维特征(256-d),此特征被送入两个同级的全连接层-框回归层(reg)和框分类层(cls)。

其中分类层判断这部分区域有没有数据集包含的类别(这一层输出一个分数 1 或 0:有包含的类别才打 1,其余情况为 0。注意不是这片区域有物体就行,我们只关心规定的那几种类别,比如 COCO 数据集就包含 80 类,这里有其他任何东西都和我们的任务无关,都是 0 ), 如果有我们感兴趣的物体,回归层预测一些框。
Faster R-CNN 解读:用网络生成候选区域_第2张图片

3.1.1 Anchors

在滑动窗口经过的每个位置,我们需要同时预测/回归多个框(为什么要多个,因为物体大小不同,ground truth 的框也不同,一个大小的框框不住所有类型的物体)。其中每个位置输出的最大可能框数表示为 k。 因此,reg层有 4k 个输出,对 k 个框的坐标进行编码,而cls层则输出 2k 个得分,这些得分估计每个框是对象或非对象的概率。

k个 proposal 相对于k个参考框已参数化,文章称其为 anchors。

anchor(锚点)是图 3 中滑动窗口中心的点,每个锚点都与一个尺寸和一个纵横比关联。默认情况下,使用3个尺寸和3个纵横比,在每个滑动位置产生k = 9个锚点。

我们的方法的一个重要特性是,在锚点和计算相对于锚点的 proposal 的函数方面,它都是平移不变(translation invariant)的。

多尺度预测有两种流行的方法:第一种方法基于图像/特征金字塔,第二种方法是在特征图上使用多个比例(和/或纵横比)的滑动窗口。

相比之下,我们的基于锚的方法是基于锚的金字塔构建的,这种方法更具成本效益。 我们的方法参照多个比例和纵横比的锚框对边界框进行分类和回归。 它仅依赖单一比例的图像和特征图,并使用单一尺寸的滤波器。

3.1.2 Loss Function

为了训练RPN,为每个锚点分配一个二进制类标签。

正样本:与一个 ground truth box 有最高 IoU,或者与任意 ground truth box 的 IoU 都在 0.7 之上的锚点。

负样本:与所有 GT 的 IoU 都低于 0.3

有了标签的定义,来看目标函数,涉及分类和回归两个任务,分类是判断这片区域的物体是否属于数据集类别, 回归是预测物体位置。
Faster R-CNN 解读:用网络生成候选区域_第3张图片

3.1.3 Training RPNs

PRN 可以端到端地使用 SGD 训练。

采样模式采取了 Fast R-CNN 的 image-centric 方法。

使用 Caffe 实现。

3.2 Sharing Features for RPN and Fast R-CNN

3.1 只是说如何生成 region proposals,还没有涉及目标检测如何使用这些框。

目标检测网络使用的 Fast R-CNN,接下来讲如何把 RPN 和 Fast R-CNN 通过共享卷积层的方式组合成一个统一的网络。

RPN 和 Fast R-CNN 都是单独训练的,因此只需要想如何让这两个网络共享卷积层,而不用训练两个不同的网络。

文章讨论了三种特征共享的训练方式:

  1. Alternating training:先训练RPN,然后使用生成的 proposal 训练 Fast R-CNN,接着,用由Fast R-CNN 调过的网络初始化 RPN,重复此过程。 这是本文所有实验中使用的解决方案。
  2. Approximate joint training:把两部分像图 2 那样合并起来,训练 Fast R-CNN 时把 PRN 当作预先训练好一样看待,直接用它生成的 proposal,反向传播时会同时考虑两个网络。这种方式实现起来简单,但是此解决方案忽略了导数 proposal 的坐标也是网络响应,是一种近似联合的方式。
  3. Non-approximate joint training:在一个非近似的联合训练解决方案中,我们需要一个框的坐标,这超出了本文的讨论范围。

总之,文章选的是 4-step 交替训练的方式——

  • 训练PRN:使用 ImageNet-pre-trained model 初始化,针对 region proposal 任务 fine tune
  • 用第一步得到的 PRN 训练 Fast R-CNN:其中 Fast R-CNN 也用 ImageNet-pre-trained model 初始化(此时两个网络还没有共享特征)。
  • 用 Fast R-CNN 初始化 PRN:固定共享的卷积层,仅微调 RPN 特有的层(此时两个网络开始共享)
  • 在保持共享卷积层固定不变的情况下,微调 Fast R-CNN 的特有层。(两个网络共享相同的卷积层并形成统一的网络)

4 EXPERIMENTS

4.1 Experiments on PASCAL VOC

Dataset: PASCAL VOC 2007, PASCAL VOC 2012
Metric: mean Average Precision (mAP)

表 2 的上半部分展示的是 Fast R-CNN 使用不同的 region proposal 生成方法的结果,可以看出 PRN 和 Fast R-CNN 的结合起来,检测效果最好(59.9),而且只用了 300 个 proposal。
Faster R-CNN 解读:用网络生成候选区域_第4张图片
为了研究RPNs作为提议方法的行为,文章进行了一些消融研究,结果是表 2 的下半部分:

  1. 展示了在 RPN 和 Fast R-CNN 检测网络之间共享卷积层的效果。
  2. 分离 RPN 对训练 Fast R-CNN 检测网络的影响。通过使用 2000 个 SS proposals 和 ZF net 训练 Fast R-CNN,通过更改测试时使用的 proposal 评估检测性能。
  3. 分别调查 RPN 的 cls 和 reg 角色,在测试时通过关闭输出来关闭它们。移除 cls,N=100,mAP 明显下降,移除 reg,N=1000 时分数下降,这表明高质量的 proposal 主要源于回归框的边界。
  4. 评估了更强大的网络对RPN提案质量的影响。从 PRN + ZF 到 PRN + VGG,mAP 从 56.8% 提升到 59.2%。

5 CONCLUSION

  • 本文提出了 PRN 以高效精准地生成 region proposal。
  • PRN 通过与检测网络共享权重,region proposal 部分的计算几乎是免费的。
  • PRN 的引入也提高了 region proposal 的质量和检测的准确性。

你可能感兴趣的:(#,目标检测)