iou

更新时间:2022-12-31 11:59:27 阅读: 评论:0


2022年12月31日发(作者:curtain)

⽬标检测基本概念理解之IoU(交并⽐)以及Python代码实现

⽬标检测基本概念理解之IoU(交并⽐)

交并⽐理解

在检测任务中,使⽤交并⽐(InterctionofUnion,IoU)作为衡量指标。这⼀概念来源于数学中的集合,⽤来描述两个集合A和B之间

的关系,它等于两个集合的交集⾥⾯所包含的元素个数,除以它们的并集⾥⾯所包含的元素个数,具体计算公式如下:

我们将⽤这个概念来描述两个框之间的重合度。两个框可以看成是两个像素的集合,它们的交并⽐等于两个框重合部分的⾯积除以它们合并

起来的⾯积。下图“交集”中青⾊区域是两个框的重合⾯积,图“并集”中蓝⾊区域是两个框的相并⾯积。⽤这两个⾯积相除即可得到它们

之间的交并⽐,如图所⽰。

假设两个矩形框A和B的位置分别为:

假如位置关系如图所⽰:

如果⼆者有相交部分,则相交部分左上⾓坐标为:

相交部分右下⾓坐标为:

计算先交部分⾯积:

矩形框A和B的⾯积分别是:

计算相并部分⾯积:

IoU=

A∪B

A∩B

A:[x,y,x,y]a1a1a2a2

A:[x,y,x,y]b1b1b2b2

x=1max(x,x),y1=a1b1max(y,y)a1b1

x=2min(x,x),y2=a2b2min(y,y)a2b2

intertion=max(x−2x+11.0)∗(y−2y+11.0)

S=A(x−a2x+a11.0)∗(y−a2y+a11.0)

S=B(x−b2x+b11.0)∗(y−b2y+b11.0)

union=S+AS−Bintertion

计算交并⽐:

为了直观的展⽰交并⽐的⼤⼩跟重合程度之间的关系,⽰意了不同交并⽐下两个框之间的相对位置关系,从IoU=0.95到IoU=0.

Python代码实现

计算IoU,矩形框的坐标形式为xyxy

#计算IoU,矩形框的坐标形式为xyxy

#(x1,y1)是矩形框左上⾓的坐标,(x2,y2)是矩形框右下⾓的坐标

defbox_iou_xyxy(box1,box2):

#获取box1左上⾓和右下⾓的坐标

x1min,y1min,x1max,y1max=box1[0],box1[1],box1[2],box1[3]

#计算box1的⾯积

s1=(y1max-y1min+1.)*(x1max-x1min+1.)

#获取box2左上⾓和右下⾓的坐标

x2min,y2min,x2max,y2max=box2[0],box2[1],box2[2],box2[3]

#计算box2的⾯积

s2=(y2max-y2min+1.)*(x2max-x2min+1.)

#计算相交矩形框的坐标

xmin=m(x1min,x2min)#左上⾓的横坐标

ymin=m(y1min,y2min)#左上⾓的纵坐标

xmax=m(x1max,x2max)#右下⾓的横坐标

ymax=m(y1max,y2max)#右下⾓的纵坐标

#计算相交矩形的⾼度、宽度、⾯积

inter_h=m(ymax-ymin+1.,0.)

inter_w=m(xmax-xmin+1.,0.)

interction=inter_h*inter_w

#计算相并⾯积

union=s1+s2-interction

#计算交并⽐

iou=interction/union

returniou

bbox1=[100.,100.,200.,200.]

bbox2=[120.,120.,220.,220.]

iou=box_iou_xyxy(bbox1,bbox2)

print('IoUis{}'.format(iou))

IoUis0.47407

计算IoU,矩形框的坐标形式为xywh

IoU=

union

intertion

#计算IoU,矩形框的坐标形式为xywh

#(x,y)(x,y)(x,y)是矩形框中⼼点的坐标,www是矩形框的宽度,hhh是矩形框的⾼度。

defbox_iou_xywh(box1,box2):

#获取box1左上⾓的坐标

x1min,y1min=box1[0]-box1[2]/2.0,box1[1]-box1[3]/2.0

#获取box1右下⾓的坐标

x1max,y1max=box1[0]+box1[2]/2.0,box1[1]+box1[3]/2.0

#获取box1的⾯积

s1=box1[2]*box1[3]

#获取box2左上⾓的坐标

x2min,y2min=box2[0]-box2[2]/2.0,box2[0]-box2[2]/2.0

#获取box2右下⾓的坐标

x2max,y2max=box2[0]+box2[2]/2.0,box2[0]+box2[2]/2.0

#获取box2的⾯积

s2=box2[2]*box2[3]

#计算相交矩形框的坐标

xmin=m(x1min,x2min)#左上⾓的横坐标

ymin=m(y1min,y2min)#左上⾓的纵坐标

xmax=m(x1max,x2max)#右下⾓的横坐标

ymax=m(y1max,y2max)#右下⾓的纵坐标

inter_h=m(ymax-ymin,0.)

inter_w=m(xmax-xmin,0.)

interction=inter_h*inter_w

union=s1+s2-interction

iou=interction/union

returniou

bbox1=[100.,100.,200.,200.]

bbox2=[120.,120.,220.,220.]

iou=box_iou_xywh(bbox1,bbox2)

print('IoUis{}'.format(iou))

IoUis0.6931

本文发布于:2022-12-31 11:59:27,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/65323.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:什么是mp4
下一篇:vasectomy
标签:iou
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图