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

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阈值需要根据具体任务调整
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值