FasterRCNN源码解析(七)——RPN(下)损失计算部分

本文详细解析FasterRCNN的RPN损失计算过程,包括匹配anchors与gtboxes,计算正负样本,以及边界框回归和目标预测概率损失。通过assign_targets_to_anchors确定正负样本,box_coder.encode计算回归参数,compute_loss计算两类损失。
摘要由CSDN通过智能技术生成

FasterRCNN源码解析(七)——RPN(下)损失计算部分

主要有以下两个步骤

  1. 利用我们标注的gtboxes与生成的anchors进行匹配生成我们的正负样本
  2. 利用正负样本计算 PRNloss


一、self.assign_targets_to_anchors(anchors, targets)

计算每个anchors最匹配的gt,并将anchors进行分类,前景,背景以及废弃的anchors
其返回值为:
labels: 标记anchors归属类别(1, 0, -1分别对应正样本,背景,废弃的样本)
注意,在RPN中只有前景和背景,所有正样本的类别都是1,0代表背景
matched_gt_boxes:与anchors匹配的gt

其主要步骤有:
遍历每张图像的anchors和targets

  1. 获取每张图像的真实位置信息即boxes值

  2. 计算anchors与真实bbox的iou信息,输出shape为 1 ∗ 261888 1*261888 1261888,其中1代表在该张图片中有1一个真实标签在这里插入图片描述

  3. 计算每个anchors与gt匹配iou最大的索引(如果iou<0.3索引置为-1,0.3<iou<0.7索引为-2)返回的是tensor,其数值就是-1 代表负样本,-2代表将要淘汰的样本,大于等于0的代表正样本,预测正确样本的标签值(详见第1节)在这里插入图片描述

  4. 获取每一个anchor索匹配的对应的gt boxes坐标(将对应-1和-2的anchors匹配为索引为0的gt boxes坐标)并添加到 matched_gt_boxes

  5. 得到正样本,负样本,以及要丢弃的anchors所对应的蒙版,分别将labels_per_image所对应的位置置为1,0.0,-1,并添加到labels

  6. 最后返回我们的 matched_gt_boxeslabels
    在这里插入图片描述在这里插入图片描述

如何计算每个anchors与gt匹配iou最大的索引

通过det_utils.py索引中的Macher类进行计算

  1. 记录每个anchors与所有gt匹配的最大iou值 及其 最大值所对应的索引(这里的索引以及下面的索引值都是对真实标签的索引值,有三个真实标签,索引值只有0,1,2)
  2. 计算iou小于low_threshold的索引
  3. 计算iou在low_threshold与high_threshold之间的索引值
  4. iou小于low_threshold的matches索引置为-1
  5. iou在[low_threshold, high_threshold]之间的matches索引置为-2
  6. 把iou值最大的也设为 正样本

二、self.box_coder.encode(matched_gt_boxes, anchors)

这里所返回的是anchor对应的gtboxes的回归参数regression_targets,数据结构与proposal相同
结合anchors以及对应的gt,计算regression参数

  1. 提取anchors的左上角坐标,右下角坐标
  2. 提取每个anchors所对应的gtboxes的左上角坐标,右下角坐标
  3. 计算anchor以及对应的gtboxes的宽度和高度
  4. 计算anchors以及对应的gtboxes的中心坐标在这里插入图片描述
  5. 根据上图公式计算anchor对应的gtboxes的回归参数
    以上操作是为了方便处理,将每张图像的anchor个数拼接在了一起,之后再分开
    在这里插入图片描述
<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值