numpy批量iou

举报
风吹稻花香 发表于 2021/11/25 23:40:05 2021/11/25
【摘要】 import randomimport time import numpy as np """#单个iou"""def compute_iou2(rec1, rec2): areas1 = (rec1[3] - rec1[1]) * (rec1[2] - rec1[0]) areas2 = (rec2[3] - rec2...


  
  1. import random
  2. import time
  3. import numpy as np
  4. """
  5. #单个iou
  6. """
  7. def compute_iou2(rec1, rec2):
  8. areas1 = (rec1[3] - rec1[1]) * (rec1[2] - rec1[0])
  9. areas2 = (rec2[3] - rec2[1]) * (rec2[2] - rec2[0])
  10. left = max(rec1[1],rec2[1])
  11. right = min(rec1[3],rec2[3])
  12. top = max(rec1[0], rec2[0])
  13. bottom = min(rec1[2], rec2[2])
  14. w = max(0, right-left)
  15. h = max(0, bottom-top)
  16. return w*h/(areas2+areas1-w*h)
  17. def Ious(bbox, gt):
  18. assert bbox.shape[0]>0, 'bbox len must>0'
  19. assert gt.shape[0]>0, 'bbox len must>0'
  20. """
  21. :param bbox: (n, 4)
  22. :param gt: (m, 4)
  23. :return: (n, m)
  24. numpy 广播机制 从后向前对齐。 维度为1 的可以重复等价为任意维度
  25. eg: (4,3,2) (3,2) (3,2)会扩充为(4,3,2)
  26. (4,1,2) (3,2) (4,1,2) 扩充为(4, 3, 2) (3, 2)扩充为(4, 3,2) 扩充的方法为重复
  27. 广播会在numpy的函数 如sum, maximun等函数中进行
  28. """
  29. lt = np.maximum(bbox[:, None, :2], gt[:, :2]) # left_top (x, y)
  30. rb = np.minimum(bbox[:, None, 2:], gt[:, 2:]) # right_bottom (x, y)
  31. wh = np.maximum(rb - lt , 0) # inter_area (w, h)
  32. inter_areas = wh[:, :, 0] * wh[:, :, 1] # shape: (n, m)
  33. box_areas = (bbox[:, 2] - bbox[:, 0] ) * (bbox[:, 3] - bbox[:, 1] )
  34. gt_areas = (gt[:, 2] - gt[:, 0] ) * (gt[:, 3] - gt[:, 1] )
  35. IoU = inter_areas / (box_areas[:, None] + gt_areas - inter_areas)
  36. return IoU
  37. if __name__ == '__main__':
  38. data_a=[[1,1,3,3]]
  39. data_a=[]
  40. data_b=[[1,1,2,2],[2,2,4,4],[1,1,3,3],[3,3,4,4]]
  41. ious= Ious(np.array(data_a), np.array(data_b))
  42. print('IoU res')
  43. print(ious.max())
  44. ious=[]
  45. start = time.time()
  46. for data in data_b:
  47. iou = compute_iou2(data_a[0], data)
  48. ious.append(iou)
  49. print('compute_iou2 res')
  50. print(ious)

文章来源: blog.csdn.net,作者:AI视觉网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/121526711

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。