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

CNN的各种知识点(四): 非极大值抑制(Non-Maximum Suppression, NMS)

非极大值抑制(Non-Maximum Suppression, NMS)

      • 1. 非极大值抑制(Non-Maximum Suppression, NMS)
        • 概念:
        • 算法步骤:
        • 具体例子:
        • PyTorch实现:
      • 总结:

1. 非极大值抑制(Non-Maximum Suppression, NMS)

概念:

非极大值抑制是目标检测中用于消除冗余检测框的后处理算法。当多个检测框重叠检测到同一物体时,NMS通过保留置信度最高的框,抑制与其高度重叠的其他框来获得最终结果。

算法步骤:
  1. 将所有检测框按置信度降序排序
  2. 选取最高置信度的框加入最终结果集
  3. 计算该框与剩余所有框的IoU(交并比)
  4. 删除IoU超过阈值的框
  5. 重复步骤2-4直到所有框处理完毕
具体例子:

假设检测到3个框:

  • Box1: (x1,y1,x2,y2)=(10,10,50,50), score=0.9
  • Box2: (15,15,55,55), score=0.8
  • Box3: (100,100,150,150), score=0.7

设置IoU阈值=0.5:

  1. 选择Box1(最高分0.9)
  2. 计算Box1与Box2的IoU≈0.62 > 0.5,删除Box2
  3. 计算Box1与Box3的IoU=0,保留Box3
    最终保留Box1和Box3
PyTorch实现:
import torch
from torchvision.ops import nms# 输入格式:boxes格式为(x1,y1,x2,y2)
boxes = torch.tensor([[10,10,50,50],[15,15,55,55],[100,100,150,150]], dtype=torch.float32)scores = torch.tensor([0.9, 0.8, 0.7])# 执行NMS
keep_idx = nms(boxes=boxes, scores=scores, iou_threshold=0.5)print("保留的索引:", keep_idx)  # 输出 tensor([0, 2])

总结:

NMS是目标检测中关键的后处理步骤。实际应用中需要注意:

  1. NMS的IoU阈值需要根据具体任务调整
http://www.lryc.cn/news/530553.html

相关文章:

  • 虚幻基础16:locomotion direction
  • C++游戏开发实战:从引擎架构到物理碰撞
  • 代理模式——C++实现
  • 什么情况下,C#需要手动进行资源分配和释放?什么又是非托管资源?
  • LeetCode 2909. 元素和最小的山形三元组 II
  • 搬迁至bilibili声明
  • 【周易哲学】生辰八字入门讲解(八)
  • 复制粘贴小工具——Ditto
  • 3、从langchain到rag
  • 稀疏进化训练:机器学习优化算法中的高效解决方案
  • 10 Flink CDC
  • 【LeetCode 刷题】回溯算法-子集问题
  • OpenCV 版本不兼容导致的问题
  • 低成本、高附加值,具有较强的可扩展性和流通便利性的行业
  • DirectShow过滤器开发-读视频文件过滤器(再写)
  • 代码练习2.3
  • 基于 Redis GEO 实现条件分页查询用户附近的场馆列表
  • 【大数据技术】案例01:词频统计样例(hadoop+mapreduce+yarn)
  • Selenium 使用指南:从入门到精通
  • 笔试-排列组合
  • Java序列化详解
  • ChatGPT与GPT的区别与联系
  • MySQL入门 – CRUD基本操作
  • Redis背景介绍
  • PPT演示设置:插入音频同步切换播放时长计算
  • DIFY源码解析
  • [权限提升] Wdinwos 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权
  • 【算法】回溯算法专题② ——组合型回溯 + 剪枝 python
  • LeetCode:121.买卖股票的最佳时机1
  • pytorch生成对抗网络