IOU计算Python代码实现
Posted vodka、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOU计算Python代码实现相关的知识,希望对你有一定的参考价值。
文章目录
一、目标检测中的IOU代码实现
目标检测中会用IOU大小的值来衡量检测结果与准确结果之间的差距,IOU的计算公式:
IOU=A∩B/A∪B,式中A,B为检测结果和准确结果(groundtruth)检测框的面积大小。
二、代码
代码如下(示例):
def compute_iou(rec_1,rec_2):
'''
rec_1:左上角(rec_1[0],rec_1[1]) 右下角:(rec_1[2],rec_1[3])
rec_2:左上角(rec_2[0],rec_2[1]) 右下角:(rec_2[2],rec_2[3])
(rec_1)
1--------1
1 1----1------1
1---1----1 1
1 1
1-----------1 (rec_2)
'''
s_rec1=(rec_1[2]-rec_1[0])*(rec_1[3]-rec_1[1]) #第一个bbox面积 = 长×宽
s_rec2=(rec_2[2]-rec_2[0])*(rec_2[3]-rec_2[1]) #第二个bbox面积 = 长×宽
sum_s=s_rec1+s_rec2 #总面积
left=max(rec_1[0],rec_2[0]) #并集左上角顶点横坐标
right=min(rec_1[2],rec_2[2]) #并集右下角顶点横坐标
bottom=max(rec_1[1],rec_2[1]) #并集左上角顶点纵坐标
top=min(rec_1[3],rec_2[3]) #并集右下角顶点纵坐标
if left >= right or top <= bottom: #不存在并集的情况
return 0
else:
inter=(right-left)*(top-bottom) #求并集面积
iou=(inter/(sum_s-inter))*1.0 #计算IOU
print(iou)
if __name__ == '__main__':
rec_1=(663, 28, 683, 48) #四个值分别为左上角顶点(x1,y1),右下角坐标(x2,y2)
rec_2=(663, 28, 683, 48)
iou=compute_iou(rec_1,rec_2)
print(iou)
总结
有问题可在评论区留言,欢迎交流!
以上是关于IOU计算Python代码实现的主要内容,如果未能解决你的问题,请参考以下文章