RPN的作用(第一阶段主要的作用就是用anchor去回归gt,所以是在预设的时候已经判断正负样本了。)
1.RPN输出有两个分支,一个regression layer(回归),一个是cls layer(二分类,是不是object)。一个像素点输出的9个anchor,3个scale,3个ratio。最后输出的维度是(特征图的长x特征图的宽x9x(2(is or not object)+4(x,y,w,h)))
2.RPN的loss
正负样本的选择非常重要
positive标准:
1.anchor(预设的)与gt的IOU最大。2.anchor(预设的)与gt的IOU大于0.7
通常第二点基本就能全部满足,但是有特殊情况,一个gt可以安排多个anchor(预设的)(一对多),但是不能多对一。
negative标准:
anchor(预设的)与gt的IOU小于0.3.在中间的不参加训练。
正负样本对cls反传,正样本对reg反传(负样本不会)
正负样本比例是1:1,一个minibacth,一共取256个anchors,positive不够128,就用negative来补
3.anchor的作用:
This can be thought of as bounding-box regression from an anchor box to a nearby ground-truth box.(模型就是学习从anchor到gt之间回归的一个过程。)
4.交替训练:
1.只训RPN。
2.RPN产生的anchor只训head部分。
3.head部分去初始化RPN,只finetuneRPN的层(公共层不更新)
4.共享层固定,finetune head的层
5.一个很重要的消融实验:
scale与ratio不是对等的,scale比ratio重要很多
6.head部分的正负样本
rpn网络会生产大约2000个候选区域,这些候选区域不会都拿去训练的,比如有一些实现中,iou值大于0.5的,大概排序后选取32个,而对于负样本是选取iou小于0.3的,且是倒序选取最小的一些,大约96个,基本正负比例在1:3。这样选取后再进行精确的回归和分类。从上面也能看出此阶段的iou设置阈值为0.5是为了能获得更多的roi,毕竟总共才2000,有时iou大于0.5的anchor不够了,还要从排序结果中再选取一些,即使iou小于0.5。
第二阶段的batch-size就是positive与negative的总和。
——————————————————————————————
正负样本选择:
训练RPN是根据预设的anchor选择的
训练head是根据RPN产生的anchor选择的