文章目录
数据在RPN的传输路线
即RegionProposalNetwork
类中的forward函数
通过在开头所传入的三个数据images,features,targets
我们经过RPNHead后
# RPN uses all feature maps that are available
# features是所有预测特征层组成的OrderedDict
features = list(features.values())
# 计算每个预测特征层上的预测目标概率和bboxes regression参数
# objectness和pred_bbox_deltas都是list
objectness, pred_bbox_deltas = self.head(features) # objectness预测特征层的个数
我们会在每个预测特征层上生成 k个预测的目标概率以及4k个bboxes regression参数,其中k代表的是 anchor boxes的数量(这里之所以会显示3,是因为res50+FPN的backbone是在不同的预测特征层都要生成不同尺度的anchor的,5个预测特征层,每层3个anchor, 而mobilenet只有一个预测特征层,所以一层上共有15个anchor)
我们经过anchor生成器之后
# 生成一个batch图像的所有anchors信息,list(tensor)元素个数等于batch_size
anchors = self.anchor_generator(images, features)
求得一个batch中有多少图片
# batch_size
num_images = len(anchors)
计算每个预测特征层上对应的anchors数量
# 计算每个预测特征层上的对应的anchors数量
num_anchors_per_level_shape_tensors