计算机系统应用教程网站

网站首页 > 技术文章 正文

RPN (区域候选网络)

btikc 2024-09-14 00:47:14 技术文章 43 ℃ 0 评论

RPN的本质是 “ 基于滑窗的无类别obejct检测器 ” :

经典的检测方法生成检测框都非常耗时,如OpenCV adaboost使用滑动窗口+图像金字塔生成检测框;或如R-CNN使用SS(Selective Search)方法生成检测框。而Faster RCNN则抛弃了传统的滑动窗口和SS方法,直接使用RPN生成检测框,这也是Faster R-CNN的巨大优势,能极大提升检测框的生成速度。

RPN所在的位置:

Note:

  • 只有在train时,cls+reg才能得到强监督信息(来源于ground truth)。即ground truth会告诉cls+reg结构,哪些才是真的前景,从而引导cls+reg结构学得正确区分前后景的能力;在reference阶段,就要靠cls+reg自力更生了。
  • 在train阶段,会输出约2000个proposal,但只会抽取其中256个proposal来训练RPN的cls+reg结构;到了reference阶段,则直接输出最高score的300个proposal。此时由于没有了监督信息,所有RPN**并不知道这些proposal是否为前景**,整个过程只是惯性地推送一波无tag的proposal给后面的Fast R-CNN。
  • RPN的运用使得region proposal的额外开销就只有一个两层网络。

展示了RPN网络的具体结构。可以看到RPN网络实际分为2条线,上面一条通过softmax分类anchors获得positive和negative分类,下面一条用于计算对于anchors的bounding box regression偏移量,以获得精确的proposal。而最后的Proposal层则负责综合positive anchors和对应bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。其实整个网络到了Proposal Layer这里,就完成了相当于目标定位的功能。

放大之后是这样:

庖丁解牛

RPN由以下三部分构成:

  1. RPN头部 ,通过以下结构生成 anchor(其实就是一堆有编号有坐标的bbox):

论文中的这幅插图对应的就是 RPN头部

(曾经以为这张图就是整个RPN,于是百思不得其解,走了不少弯路。。。)

2.在 RPN中部分类分支(cls)边框回归分支(bbox reg) 分别对这堆anchor进行各种计算:

Note: two stage型的检测算法在RPN 之后 还会进行 再一次分类任务边框回归任务,以进一步提升检测精度。

3.在 RPN末端,通过对 两个分支的结果进行汇总,来实现对anchor的 初步筛除(先剔除越界的anchor,再根据cls结果通过NMS算法去重)和 初步偏移(根据bbox reg结果),此时输出的都改头换面叫 Proposal 了:

后话

RPN之后,proposal 成为 RoI (感兴趣区域) ,被输入 RoIPooling 或 RoIAlign 中进行 size上的归一化。当然,这些都是 RPN网络 之后 的操作了,严格来说并 不属于 RPN 的范围 了。

图中 绿框内 为 RPN ,红圈内 为 RoI 以及其对应的 Pooling 操作:

参考内容:

https://blog.csdn.net/JNingWei/article/details/78847696

https://zhuanlan.zhihu.com/p/31426458

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表