当前位置:   article > 正文

CV-IOU_cv iou 定义

cv iou 定义

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

        计算公式:

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

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

  1. def cal_iou(bbox1, bbox2):
  2. xt1, yt1, xb1, yb1 = bbox1
  3. xt2, yt2, xb2, yb2 = bbox2
  4. # 计算每个矩形面积
  5. area1 = (xb1 - xt1) * (yb1 - yb1)
  6. area2 = (xb2 - xt2) * (yb2 - yb1)
  7. # 计算两个矩形的相较面积
  8. xl = max(xt1, xt2)
  9. xr = min(xb1, xb2)
  10. yt = max(yt1. yt2)
  11. yb = min(yb1, yb2)
  12. h = max(0, yb - yt)
  13. w = max(0, xr - xl)
  14. area = h * w
  15. # 计算iou
  16. iou = area / (area1 + area2 - area)
  17. return iou

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

  1. def cal_iou(bbox1, bbox2):
  2. xt1, yt1, xb1, yb1 = bbox1
  3. xt2, yt2, xb2, yb2 = bbox2
  4. # 计算每个矩形面积
  5. area1 = (xb1 - xt1 + 1) * (yb1 - yb1 + 1)
  6. area2 = (xb2 - xt2 + 1) * (yb2 - yb1 + 1)
  7. # 计算两个矩形的相较面积
  8. xl = max(xt1, xt2)
  9. xr = min(xb1, xb2)
  10. yt = max(yt1. yt2)
  11. yb = min(yb1, yb2)
  12. h = max(0, yb - yt)
  13. w = max(0, xr - xl)
  14. area = (h + 1) * (w + 1)
  15. # 计算iou
  16. iou = area / (area1 + area2 - area)
  17. return iou

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/114162
推荐阅读
相关标签
  

闽ICP备14008679号