【代码】mmdetection源码解读(从score获得bboxes)

本文详细介绍了Anchor Head网络中如何通过get_bboxes函数将预测得分转化为边界框的过程。包括生成不同层级的anchors,利用NMS筛选高置信度的目标框,并最终得到目标检测结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 简介

anchor_head中的get_bboxes如何将score变成bboxes。

1. get_bboxes

        assert len(cls_scores) == len(bbox_preds)
        num_levels = len(cls_scores)

        mlvl_anchors = [
            self.anchor_generators[i].grid_anchors(cls_scores[i].size()[-2:],
                                                   self.anchor_strides[i])
            for i in range(num_levels)
        ]

首先生成anchor,存进mlvl_anchors,每个level一个M * 4的Tensor,左上角右下角表示,左上右下是缩放后图片中的左上右下。
在这里插入图片描述
之后使用get_bboxes_single处理每一张图片
对于每个level,取出cls_score(720xHxW),bbox_pred(36xHxW),anchor(Mx4)

  • 将score和pred拉直成Mx80、Mx4的Tensor,与anchor一致。
  • 使用sigmoid或者softmax将cls_score转化成scores
  • nms_pre=1000表示进行nms的个数
  • 取得每个anchor的score,存为max_score(Mx1)
  • 使用topk获得前1000个用来进行nms
  • anchor、pred、score均取前1000个
  • 使用delta2bbox将这1000个pred转化成bboxes
  • bboxes放入mlvl_bboxes中,scores放入mlvl_scores中

之后:

  • mlvl_bboxes(M(筛选过后)x4)、mlvl_scores中的各level合并
  • rescale=TRUE =》 mlvl_bboxes回归到原图的尺寸
  • use_sigmoid_cls = TRUE =》 mlvl_scores的每个元素第一维padding0,表示背景

将结果送入multiclass_nms进行nms,获得100个点,获得
det_bboxes(100x5), det_labels(100)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值