关于图像识别:RPNRegion-Proposal-Networks-区域候选网络

3次阅读

共计 2270 个字符,预计需要花费 6 分钟才能阅读完成。

原文链接

区域倡议网络(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_a$,x 别离示意 predicted box, anchor box, and ground truth box(y,w,h 同理)$t_i$ 示意 predict box 绝对于 anchor box 的偏移,$t_i^*$ 示意 ground true box 绝对于 anchor box 的偏移,学习指标就是让前者靠近后者的值。

$$
t_x=(x-x_a)/w_a, t_y=(y-y_a)/h_a\\
t_w=log(w/w_a), t_h=log(h/h_a)\\
t_x^*=(x^*-x_a)/w_a, t_y^*=(y^*-y_a)/h_a\\
t_w^*=log(w^*/w_a), t_h^*=log(h^*/h_a)
$$

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

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

$$
x_i^{pro}=x_i^{an}+dx_l^{reg}*w_l^{an}\\
y_j^{pro}=y_j^{an}+dy_l^{reg}*h_l^{an}\\
w_l^{pro}=w_l^{an}*e^{dw_l}\\
h_l^{pro}=h_l^{an}*e^{dh_l}
$$

非极大值克制 (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,依然能失去好的后果。

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

代码的路

正文完
 0