IOU和NMS

本文介绍了非极大值抑制(NMS)的过程,首先按置信度对边界框排序,然后选择最高置信度的框加入集合M,接着计算其余框与M中框的IOU,若超过阈值则去除,重复该过程以消除重复检测。
摘要由CSDN通过智能技术生成

非极大值抑制:

  1. 首先将所有框按照置信度进行排序(bboxs集合);
  2. 选取bboxs集合中置信度最高的框m,放入集合M中;
  3. 计算bboxs里所有框和m的IOU,如果IOU大于阈值,则视为重复框,将之除去;
  4. 重复2、3步。
import numpy as np

def get_IOU(gt, bboxs):
    Xmin = np.maximum(gt[0], bboxs[:, 0])
    Ymin = np.maximum(gt[1], bboxs[:, 1])
    Xmax = np.minimum(gt[2], bboxs[:, 2])
    Ymax = np.minimum(gt[3], bboxs[:, 3])
    h = np.maximum(0, Xmax-Xmin+1)
    w = np.maximum(0, Ymax-Ymin+1)
    inters = h*w
    uni = (gt[2]-gt[0]+1)*(gt[3]-gt[1]+1)+(bboxs[:, 2]-bboxs[:, 0]+1)*(bboxs[:, 3]-bboxs[:, 1]+1)-inters
    iou = inters/uni
    return iou

def NMS(bboxs, thresh=0.9):
    sorted_ind = np.argsort(-bboxs[:, 4])
    bboxs = bboxs[sorted_ind, :]  #根据置信度排序
    M = np.zeros([1, 5])
    l = bboxs.shape[0]
    i = 0
    while(i<l)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值