经典算法及代码实现

1. NMS

非极大抑制,筛选候选区域,删除冗余的候选框。

迭代过程:

    对于某个类别中Bounding Box的位置以及置信度集合列表B,选择具有最大score的检测框M,将其从B集合中移除并加入到最终的       模型输出检测结果G中。然后将B中剩余检测框中与M的IoU大于阈值threshold的框从B中移除。然后重复上述过程,直到B为空。

import numpy as np

def nms(dets, thresh):
    """
    dets: 检测的boxes以及对应的scores
    thresh: 设定的阈值
    """
    x1 = dets[:, 0]
    y1 = dets[:, 1]
    x2 = dets[:, 2]
    y2 = dets[:, 3]
    scores = dets[:,4]
    # 计算每个boxes的面积
    areas = (x2 - x1)*(y2 - y1)
    # 对分数进行排序,得到排序后的索引值的排序
    order = scores.argsort()[::-1]
    keep = []
    while order.size > 0:
        i = order[0]
        keep.append(i)
        #计算剩余boxes与当前box的重叠程度,IOU
        xx1 = np.maximum(x1[i], x1[order[1:]])
        yy1 = np.maximum(y1[i], y1[order[1:]])
        xx2 = np.minimum(x2[i], x2[order[1:]])
        yy2 = np.minimum(y2[i], y2[order[1:]])

        w = np.maximum(0.0, xx2 - xx1)
        h = np.maximum(0.0, yy2 - yy1)
        inter = w * h
        ovr = inter/(areas[i]+areas[order[1:]]-inter)
        # 保留iou小雨设定阈值的boxes
        inds = np.where(ovr<=thresh)[0]
        order = order[inds+1]

    return keep

2. 卡尔曼滤波

参考连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值