目标检测非极大值抑制(NMS)

1.非极大值抑制意义
在目标检测任务中,通常会在同一个目标位置产生大量候选框,候选框之间会相互重叠,因此需要使用非极大值抑制算法寻找最佳位置的候选框,消除冗余框。
下图为centerface识别人脸结果,产生很多候选框。
在这里插入图片描述

2.非极大值抑制算法流程

  1. 将所有边界框存入边界框列表,并根据每一个边界框的置信度进行排序;
  2. 新建一个空的最终输出列表,
  3. 将置信度最高的边界框从原边界框列表中删除,存入最终输出列表;
  4. 设定一个IOU阈值(0-1之间);
  5. 计算置信度最高的边界框与边界框列表中其他边界框的IOU,并删除IOU大于设定阈值的边界框。
  6. 重复3-5步,直至边界框列表为空。

python代码:

def nms(boxes, scores, nms_thresh):
    """
    非极大值抑制
    :param boxes: 边界框
    :param scores: 边界框的置信度
    :param nms_thresh: IOU阈值
    :return: 非极大值抑制结果
    """
    x1 = boxes[:, 0]
    y1 = boxes[:, 1]
    x2 = boxes[:, 2]
    y2 = boxes[:, 3]
    areas = (x2 - x1 + 1) * (y2 - y1 + 1)
    order = np.argsort(scores)[::-1]       # 根据置信度进行排序
    num_detections = boxes.shape[0]
    suppressed = np.zeros((num_detections,), dtype=np.bool)

    keep = []
    for _i in range(num_detections):
        i = order[_i]
        if suppressed[i]:
            continue
        keep.append(i)

        ix1 = x1[i]
        iy1 = y1[i]
        ix2 = x2[i]
        iy2 = y2[i]
        iarea = areas[i]

        for _j in range(_i + 1, num_detections):
            j = order[_j]
            if suppressed[j]:
                continue

            xx1 = max(ix1, x1[j])
            yy1 = max(iy1, y1[j])
            xx2 = min(ix2, x2[j])
            yy2 = min(iy2, y2[j])
            w = max(0, xx2 - xx1 + 1)
            h = max(0, yy2 - yy1 + 1)

            inter = w * h
            ovr = inter / (iarea + areas[j] - inter)
            if ovr >= nms_thresh:
                suppressed[j] = True

    return keep

非极大值抑制结果如下图:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
极大值抑制(Non-Maximum Suppression,NMS)是目标检测中的一种重要技术。它的作用是抑制掉不是极大值的元素,用于过滤掉重叠的检测框,保留最具代表性的目标框。这样可以避免目标的重复检测,并提高目标检测的准确性和效率。 在目标检测中,通常会生成多个候选框来定位目标物体。而这些候选框往往会有一定的重叠,因此需要通过极大值抑制来选择最佳的框作为最终的检测结果。 极大值抑制的原理是,在所有的候选框中,首先选择具有最高置信度的框作为输出,然后通过计算不同框之间的IoU(Intersection over Union)来判断重叠程度。对于与已选择的框重叠程度高于一定阈值的候选框,会被抑制掉,而只保留置信度最高的框。这样就可以消除冗余的检测结果,得到最准确的目标框。 通过引入极大值抑制,可以提高目标检测算法的性能,减少误检和重复检测的问题。它在目标检测领域得到了广泛的应用,并且被许多经典的目标检测算法采用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [目标检测之—极大抑制(NMS)综述](https://blog.csdn.net/qq_25344301/article/details/120094530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值