(proposal_target_layer_tf.py)和(proposal_layer.py)
讲的很详细很好的链接:https://blog.youkuaiyun.com/jiongnima/article/details/80478597 感谢
1.np.stack函数用法
https://blog.youkuaiyun.com/bailufeiyan/article/details/50749694
2.proposal_layer.py
功能:根据RPN的输出结果,提取出所需的目标框(roi) 。
proposal_layer的思路,即faster rcnn提取出最后roi的过程如下:
(1)得到所有从未经过坐标变换的初始框,即anchors;利用对所有的anchors做bbox regression回归(这里的anchors生成和训练时完全一致)
(2)限制proposal的四个角在图像边界内,对超过图像边界的框进行裁剪;
(3)剔除掉长宽过小的框;
(4)对所有框按照前景分数进行排序,选择排序后的前pre_nms_topN个框;
(5)对于上一步选择的框,用nms算法根据阈值排除掉重叠的框;
(6)对于剩下的框,选择post_nms_topN个最终框
3.proposal_target_layer_tf.py
功能:为选出的框(roi)置ground truth类别和坐标变换信息
思路:
(1)首先将ground truth框加入根据RPN输出选择的框,相当于增加前景的数量,此时roi的数量变成了N(RPN输出选择的)+M(ground truth)框;
(2)计算所有的roi和ground truth框的重合度(IoU),对每个roi,找到对应的ground truth框和正确的类别标签;
(3)为一个训练batch,在全部roi中选择前景框(前景框不能太多,最多只能占训练batch的1/4)和背景框;
(4)为进行该batch训练的框置分类标签,并计算坐标回归标签;