mmdetection中faster-rcnn的proposals正负例构成代码

proposals由下图所示proposal模块产生,proposal模块在整个faster-rcnn网络中的位置如下图:
faster-rcnn结构图图中proposal模块做了两件事,最终输出为指定数目的包含正负例的proposals。在proposal模块的一系列操作中,本文只关注proposal模块中构成proposals正负例的代码。

先简单描述一下给proposals打上正负例标签的做法。faster-rcnn原文中,从一堆anchor给proposals打上正负标签的办法,是使用softmax模块,如上图所示。但mmdetection中似乎没有softmax模块,而是用以下过程替代:直接在一大堆anchor中根据anchor和gt的重合程度(IoU),来设定正负例。

然后看代码。从上述给proposal打正负例标签的做法中可以看出,首先要获取IoU,为了获取IoU,先要知道每一个anchor的4个坐标点的数值。这4个坐标点数值是在rpn_head.py文件获得的,在rpn_head.py中与之相关的两个代码段如图1和图2所示,
rpn1 图1
rpn2
图2
这里对一个样本(一张图片)所有的anchors给出了4个坐标点位置和每个anchor的分类分数,分别存在两个变量中:rpn_bbox_pred和rpn_cls_score。

接着要对这堆anchor打上正负例标签。这里以mmdetection中其中一个打标签方式MaxIoUAssigner为例(在max_iou_assigner.py文件中)。正例的标签都设置为实际标签值(都是大于0的整数),负例的标签都设为0,这里只记录负例的打标签方式。
assigner图3
从代码(图3)中可看出,max_overlaps和neg_iou_thr两个变量共同决定了哪个区间的IoU为负例。

正负例都打上标签了,但是这些打上标签的anchor并不是proposals最终构成,还要经过一个采样的步骤。因为此时proposals的总数太多了,需要通过采样减少数目。这里以mmdetection中其中一个采样方式RandomSampler为例(在文件random_sampler.py中)。

在这里插入图片描述
图4

从代码(图4)中可看出,_sample_pos和_sample_neg分别对打过标签的正负例anchor进行随机采样,采样数目由num_expected决定的,num_expected是根据配置文件中的预设值计算得来,计算过程在文件base_sampler.py中。

参考:
1.一文读懂Faster RCNN

版权声明:本文为CSDN博主「FaiComeVuoi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenxi1900/article/details/122439455

FaiComeVuoi

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

目标检测中的先验框(Anchor)

什么是先验框?
了解过目标检测算法的朋友们肯定知道先验框(Anchor)的概念,那么什么是先验框,为什么要有先验框?若要解释这个问题,首先我们需要了解边界框回归原理。
b

YOLOv3学习——锚框和候选区域

YOLOv3学习之锚框和候选区域
单阶段目标检测模型YOLOv3
R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法。近几年,很多研究人员相继

YOLOv1损失函数代码详解

V1损失函数: 1、标注图像某位置有目标,预测为有>计算not response loss 未响应损失以及box框的坐标等的信息对应蓝色框和红色框
其代码为: # # # # # # # # # #