FasterRCNN源码解析(九)——FastRCNN正负样本划分及采样

本文详细解读了FasterRCNN中FastRCNN的正负样本划分和采样过程,包括如何为提案分配目标、进行样本选择,以及计算边界框回归参数。在训练阶段,将真实框与提案合并,然后根据预设比例和数量采样512个样本。关键步骤包括计算IoU,匹配gt_box并确定正负样本,最后调整无效样本的标签。
摘要由CSDN通过智能技术生成

FasterRCNN源码解析(九)——FastRCNN正负样本划分及采样

对应框架图中的这个部分
在这里插入图片描述

select_training_samples

主要是针对FasterRCNN源码解析(八)——ROIheads部分roi_head正向传播过程中第一步self.select_training_samples(proposals, targets)进行一个详解,如何对proposal划分正负样本,统计对应gt的标签以及边界框回归信息

proposals, matched_idxs, labels, regression_targets = self.select_training_samples(proposals, targets)
    def select_training_samples(self,
                                proposals,  # type: List[Tensor]
                                targets     # type: Optional[List[Dict[str, Tensor]]]
                                ):
        # type: (...) -> Tuple[List[Tensor], List[Tensor], List[Tensor], List[Tensor]]
        """
        划分正负样本,统计对应gt的标签以及边界框回归信息
        list元素个数为batch_size
        Args:
            proposals: rpn预测的boxes
            targets:

        Returns:

        """

        # 检查target数据是否为空
        self.check_targets(targets)
        assert targets is not None
        dtype = proposals[0].dtype
        device = proposals[0].device

        # 获取标注好的boxes 以及 labels 信息
        gt_boxes = [t["boxes"].to(dtype) for t in targets]
        gt_labels = [t["labels"] for t in targets]

        # append ground-truth bboxes to proposal
        # 将gt_boxes拼接到proposal后面
        proposals = self.add_gt_proposals(proposals
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值