写点什么

RPN:Region Proposal Networks (区域候选网络)

作者:代码的路
  • 2023-01-11
    江苏
  • 本文字数:1627 字

    阅读完需:约 5 分钟

原文链接


区域建议网络(RPN)首先在 faster rcnn 中提出。

得到用来预测的 feature map

图片在输入网络后,依次经过一系列卷积+ReLU 得到的 51×39×256 维 feature map,准备后续用来选取 proposal。

生成 Anchors

anchor 是固定尺寸的 bbox。具体做法是:把 feature map 每个点映射回原图的感受野的中心点当成一个基准点,然后围绕这个基准点选取 k 个不同的尺寸和比例的 anchor。对于 W×H 大小的卷积 feature map(通常为 2400),总共有 W×H×k 个锚点。默认使用 3 个尺度和 3 个纵横比,在每个滑动位置上产生 k=9 个 anchor。在 feature map 上的每个特征点预测多个 region proposals。例如对于像素点个数为 51×39 的一幅 feature map 上就会产生 51×39×9 个候选框。虽然 anchors 是基于卷积特征图定义的,但最终的 anchors 是相对于原始图片的。



图 1 九个候选框(anchor)示意图


针对该像素点的每个候选框需要判断其是不是目标区域,如果是目标区域,其边框位置如何确定,具体过程如图 2 所示,在 RPN 头部 ,通过以下结构生成 k 个 anchor。



图 2 RPN 过程示意图


如图 2 所示,针对特征图中的某一个位置的像素点,对应会有 9 个候选框。因为输入 RPN 中有 256 个通道的特征图,所以要同时对每个通道该位置的像素点都使用不同的 3×3 的滑动窗口进行卷积,最后将所有通道得到的该位置像素点的卷积值都加起来,得到一个新的特征值,最终使用 256 组这样的 3×3 的卷积核,就会得到一个新的 256 维的向量,这个 256 维的向量就是用来预测该位置的像素点的,该像素点对应的 9 个候选框共享这 256 维向量。


256 维向量后面对应两条分支,一条目标和背景的二分类(classification),通过 1×1×256×18 的卷积核得到 2k 个分数,k 等于候选框的个数 9,表示这 9 个 anchor 是背景的 score 和 anchor 是目标的 score。如果候选框是目标区域,就去判断该目标区域的候选框位置在哪,这个时候另一条分支就过 1×1×256×36 的卷积核得到 4k 个坐标,每个框包含 4 个坐标(x,y,w,h),就是 9 个候选区域对应的框应该偏移的具体位置Δxcenter,Δycenter,Δwidth,Δheight。如果候选框不是目标区域,就直接将该候选框去除掉,不再进行后续位置信息的判断操作。


分类分支

考察训练集中的每张图像(含有人工标定的 gt box) 的所有 anchor 划分正负样本:


(1)对每个标定的 gt box 区域,与其重叠比例最大的 anchor 记为正样本,保证每个 gt 至少对应一个正样本 anchor


(2)对(1)中剩余的 anchor,如果其与某个标定区域重叠比例大于 0.7,记为正样本(每个 gt 可能会对应多个正样本 anchor。但每个正样本 anchor 只可能对应一个 gt;如果其与任意一个标定的重叠比例都小于 0.3,记为负样本。

回归分支

x,y,w,h 分别表示 box 的中心坐标和宽高,x,,x 分别表示 predicted box, anchor box, and ground truth box (y,w,h 同理)表示 predict box 相对于 anchor box 的偏移,表示 ground true box 相对于 anchor box 的偏移,学习目标就是让前者接近后者的值。



在 RPN 中部,分类分支(cls)和边框回归分支(bbox reg)分别对这堆 anchor 进行各种计算。在 RPN 末端,通过对两个分支的结果进行汇总,来实现对 anchor 的初步筛除(先剔除越界的 anchor,再根据 cls 结果通过非极大值抑制(NMS)算法去重)和初步偏移(根据 bbox reg 结果),此时输出的都 bbox 改头换面叫 Proposal 了


偏移公式如下。An 就是 anchor 的框,pro 就是最终得出回归后的边界框,到这里我们的 proposals 就选好了:


非极大值抑制(Non-maximum suppression)

由于 anchor 一般是有重叠的 overlap,因此,相同 object 的 proposals 也存在重叠。为了解决重叠 proposal 问题,采用 NMS 算法处理:两个 proposal 间 IoU 大于预设阈值,则丢弃 score 较低的 proposal。


IoU 阈值的预设需要谨慎处理,如果 IoU 值太小,可能丢失 objects 的一些 proposals;如果 IoU 值过大,可能会导致 objects 出现很多 proposals。IoU 典型值为 0.6。

Proposal 选择

NMS 处理后,根据 sore 对 top N 个 proposals 排序。在 Faster R-CNN 论文中 N=2000,其值也可以小一点,如 50,仍然能得到好的结果。


学习更多编程知识,请关注我的公众号:


代码的路



用户头像

代码的路

关注

公众号:代码的路 2023-01-10 加入

Java、Python、C++、图像处理、深度学习相关知识分享

评论

发布
暂无评论
RPN:Region Proposal Networks (区域候选网络)_图像处理_代码的路_InfoQ写作社区