当前位置: 首页 > news >正文

13.4.4 使用非极大值抑制预测边界框

目录
    • P425
  • 1. 上下文背景
  • 2. conf[below_min_idx] = 1 - conf[below_min_idx] 的作用

P425

def multibox_detection(cls_probs, offset_preds, anchors, nms_threshold=0.5,pos_threshold=0.009999999):

image

        conf, class_id = torch.max(cls_prob[1:], 0)

1. 输入 cls_prob 的结构

  • cls_probcls_probs[i],即第 i 个样本的分类概率,形状为 (num_classes + 1, num_anchors)
    • num_classes + 1:包括所有目标类别 + 1个背景类(假设背景类是第 0 类)。
    • num_anchors:锚框的数量。

例如,如果有 20 个类别 + 1 个背景类,cls_prob.shape = (21, 1000)(假设 1000 个锚框)。


2. cls_prob[1:] 的作用

  • cls_prob[1:] 表示 去掉背景类(第 0 类),只保留目标类别的概率。
    • 如果原始 cls_prob(21, 1000),那么 cls_prob[1:] 就是 (20, 1000)
    • 这样做的目的是 只关心目标类别的置信度,忽略背景类

3. torch.max(cls_prob[1:], 0) 的作用

  • torch.max(..., dim=0) 表示 在第 0 维度(类别维度)上取最大值
  • 返回值:
    • conf:每个锚框的最大类别概率(置信度),形状 (num_anchors,)
    • class_id:每个锚框对应的类别索引(从 0 开始,对应 cls_prob[1:] 的第 0 类,即原始 cls_prob 的第 1 类)。
        class_id = class_id[all_id_sorted]conf, predicted_bb = conf[all_id_sorted], predicted_bb[all_id_sorted]

这一行代码的作用是重新排序

        conf[below_min_idx] = 1 - conf[below_min_idx]

这行代码 conf[below_min_idx] = 1 - conf[below_min_idx] 的作用是 对低置信度的预测框(被判定为背景的框)的置信度进行特殊处理。我们来详细解析它的逻辑和目的:


1. 上下文背景

在目标检测的后处理阶段,代码会先通过 pos_threshold 过滤掉低置信度的预测框:

below_min_idx = (conf < pos_threshold)  # 找出置信度低于阈值的框
class_id[below_min_idx] = -1            # 将这些框的类别标记为背景(-1)

此时:

  • class_id = -1 表示该预测框是背景(无效检测)。
  • conf 仍然存储原始的目标类别概率(可能很低,比如 0.01)。

2. conf[below_min_idx] = 1 - conf[below_min_idx] 的作用

这行代码对低置信度框的 conf 值做了一个反向操作:

  • 原始 conf:表示模型对“最可能目标类别”的预测概率(例如 0.01)。
  • 修改后 conf:变为 1 - conf(例如 1 - 0.01 = 0.99)。

non_keepconf不用做上面的操作是因为non_keep本身是通过nms搞出来的,本来的conf不没有很低

http://www.sczhlp.com/news/3358/

相关文章:

  • Vercel 发布 AI SDK 5,引入语音 API;Ollama 新版本支持多模态交互 丨日报
  • CTFshow web入门 SQL注入(171-200)
  • P1549 [NOIP 1997 提高组] 棋盘问题
  • Angular中style与NgStyle使用区别
  • [Blossoms] 霓为衣兮风为马
  • sql优化谓词下推在join场景中的应用
  • MySQL主从切换原理
  • Luogu P4910 帕秋莉的手环 题解 [ 绿 ] [ 矩阵快速幂 ] [ 环形 DP ]
  • Java方法
  • wsl容易出现莫名奇妙的编译问题
  • 四:用sqoop技术将hive表数据传到mysql表中;五,使用ECharts实现数据可视化
  • 工业数采引擎-DTU
  • T1
  • Q-learning算法的MATLAB房间路径规划实现
  • 锁 - Charlie
  • 最新笔记发布地址
  • 山东暑假集训2025 III
  • 阿里云微服务引擎 MSE 及 API 网关 2025 年 7 月产品动态
  • 动态规划-01背包和完全背包
  • 微服务Token鉴权的7种方案
  • map() 函数在函数式编程中的应用
  • AHMM ai+ 软件完成首部AI作品:《西哲大咖们:系列全息脑图》
  • CAN总线基础知识
  • 如何检测和解决服务器端口被占用的问题
  • 2025-08-01 60S读世界
  • pycharm项目中的.idea文件夹
  • 项目中用的网关Gateway及SpringCloud
  • Java基础:数据类型
  • 简单数论
  • 流程图之Mermaid