原文链接
区域倡议网络(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,依然能失去好的后果。
学习更多编程常识,请关注我的公众号:
代码的路