CV-IOU

        交并比(Intersection-over-Union,IoU),目标检测中使用的一个概念,是产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。

        计算公式:

        输入假设:bbox = [xt, yt, xb, yb], 左上角为(xt, yt),右下角为(xb, yb)        

        代码如下,重点关注交集的计算思路:分别计算横轴和纵轴的交集长度。

def cal_iou(bbox1, bbox2):
    xt1, yt1, xb1, yb1 = bbox1
    xt2, yt2, xb2, yb2 = bbox2
    
    # 计算每个矩形面积 
    area1 = (xb1 - xt1) * (yb1 - yb1)
    area2 = (xb2 - xt2) * (yb2 - yb1)
    
    # 计算两个矩形的相较面积
    xl = max(xt1, xt2)
    xr = min(xb1, xb2)
    yt = max(yt1. yt2)
    yb = min(yb1, yb2)
    h = max(0, yb - yt)
    w = max(0, xr - xl)
    area = h * w 
    
    # 计算iou
    iou = area / (area1 + area2 - area)
    
    return iou

        当然真实使用应该考虑使用下面的版本,因为像素是离散的,像素2到5其实是4个像素,并不是5-2=3个像素,所以需要加1。

def cal_iou(bbox1, bbox2):
    xt1, yt1, xb1, yb1 = bbox1
    xt2, yt2, xb2, yb2 = bbox2

    # 计算每个矩形面积
    area1 = (xb1 - xt1 + 1) * (yb1 - yb1 + 1)
    area2 = (xb2 - xt2 + 1) * (yb2 - yb1 + 1)

    # 计算两个矩形的相较面积
    xl = max(xt1, xt2)
    xr = min(xb1, xb2)
    yt = max(yt1. yt2)
    yb = min(yb1, yb2)
    h = max(0, yb - yt)
    w = max(0, xr - xl)
    area = (h + 1) * (w + 1)

    # 计算iou
    iou = area / (area1 + area2 - area)

    return iou

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TigerZ*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值