RPN(Region Proposal Network)
学习RPN前最好先过一遍RCNN和Fast RCNN,本文的图来自原论文和bvBV1af4y1m7iL,有纰漏之处欢迎在评论区指出
RPN什么用?
RPN module tells the Fast R-CNN module where to look.
PRN takes an image of any size and predicts object bounds and object scores at each position.
RPN怎么生成region proposals?
ROI在原图上
在骨干网络输出的feature map上用一个小的n * n滑动窗口(filter,论文中n=3,ZF感受野:171,VGG感受野:228)滑动,
每个滑动窗口的输出特征会被降维成一维向量(ZF:256-d,VGG:512-d),
之后送进两个并联的FCN:box-regression layer(reg)和box-classfication layer(cls),filter大小为1*1。
接下来介绍anchors。
Anchors
在每个滑动窗口会同时预测多个region proposals,每个位置最多有k个anchor boxes(论文k=9),cls有2k个scores,reg有4k个coordinates。k个候选框是相对于k个参照框参数化的,参照框称为anchor(box)。
cls有2k个scores,reg有4k个coordinates(坐标)。
cls中每2个值为一组,对应一个anchor box,两个值一个是为背景的概率一个是为前景的概率。
reg中每4个值为一组,对应一个anchor box,4个值分别为中心坐标、box的宽和高。
anchor在滑窗的中心,anchor box的面积和高宽比有三种(见下图),所以在每个滑动的位置有k=9个anchor boxes(见下图)。对于一个大小为W * H的feature map,共有W * H * K个anchor boxes(filter=3 * 3,s=1,padding=1)。
size大于感受野也可以准确预测物体在实验中得到过验证的,类似窥一斑而知全豹。
上图9个anchor box
非极大值抑制
1.对候选框得分进行排序,选取最高分,遍历其他框,和最高分框重叠面积大于阈值就删除
2.从没处理的框中选取最高分,repeat
最后剩的2000个候选框给fast rcnn
Loss Function
1.为每个anchor分配一个binary class label来判断是不是要检测的物体。
正样本和负样本的采集(训练数据采样):
给两类anchor boxes分配正标签(正样本):
1.anchor box中和ground-truth box有最高的IoU。(情况比较少,但下面2的情况可能找不到一个正样本,1就后备使用)
2.anchor box和任意一个ground-truth box的IoU超过0.7。(情况多)
负样本:和任意一个ground-truth box的IoU低于0.3。
0.3-0.7之间的anchor boxes丢弃
2.RPN损失函数如下:
i:mini-batch中一个anchor的index
pi:第i个anchor是前景的预测概率
pi*:ground-truth label,当anchor box是正样本为1,负样本为0
ti:向量,表示第i个anchor的predicted bounding-box的参数化坐标,针对原图
ti*:表示第i个正anchor对应的ground-truth box
Ncls:mini-batch size,256
Nreg:anchor 位置个数(2400,不是anchor box的个数,anchor box个数还要乘上k)
λ:balancing parameter(?),=10
上式赋值后可以粗略化简
分类损失(图来自bvBV1af4y1m7iL):
回归损失:Lreg前乘上pi * 表示这个regression loss 只在正样本时使用(pi * =1)
对于边界框回归,4个参数化坐标转化关系示如下:
x、y、w、h分别代表predicted box(最终调整过的的box)的中心坐标、宽和高
xa、ya、wa、ha分别代表anchor box的中心坐标、宽高
x *、y *、w * 、h * 分别代表ground-truth box的中心坐标、宽高
平移量tx、ty、尺度因子tw、th都是直接通过回归器预测出来的predicted bounding-box,不是算的
获取完两个层的输出就可以算Loss反向传播了
边界框回归器见下图(用来回归修正predicted box):
用途:
this can be thought of as bounding-box regression from an anchor box to a nearby ground-truth box.