交并比(IOU)的计算方法
创始人
2024-05-30 22:56:22
0

        交并比(IOU, Intersetion Over Union),意思就是交集和并集的比值,用来评价两个几何图形的面积重合度,在目标检测算法模型中,通常被用来计算预测框与真实框的误差(损失函数)或者在非极大值抑制(NMS)算法中用于过滤多余重叠的目标,亦或者在计算mAP时用于判断目标是否被预测到。这是一个应用非常广泛的算法,这里详细介绍一下它的算法原理,以及代码的实现方式。

图1 交并比示意图

         如图1所示的是两个矩形方框的交并比示意图,中间重合部分就是矩形A和矩形B的交集,那么这两个矩形框的交并比计算公式如下:

IOU=\frac{A\cap B}{A\cup B}

其中,A与B的并集又可以通过以下公式计算:

A\cup B=A+B-A\cap B

定义矩形 A和矩形B的对角坐标分别为[\left ( xmin_{A},ymin_{A} \right ),\left ( xmax_{A},ymax_{A} \right )][\left ( xmin_{B},ymin_{B} \right ),\left ( xmax_{B},ymax_{B} \right )],同时又定义交集矩形的对角坐标为[\left ( xmin_{AB},ymin_{AB} \right ),\left ( xmax_{AB},ymax_{AB} \right )],那么交集矩形对角坐标的计算方法如下:

xmin_{AB}=max(xmin_{A},xmin_{B})

ymin_{AB}=max(ymin_{A},ymin_{B})

xmax_{AB}=min(xmax_{A},xmax_{B})

ymax_{AB}=min(ymax_{A},ymax_{B})

于是,交集和并集的计算如下:

A\cap B=\left ( xmax_{AB}-xmin_{AB} \right )*\left ( ymax_{AB} -ymin_{AB}\right )

W_{A}=xmax_{A}-xmin_{A}

H_{A}=ymax_{A}-ymin_{A}

W_{B}=xmax_{B}-xmin_{B}

H_{B}=xmax_{B}-xmin_{B}

A\cup B=W_{A}*H_{A}+W_{B}*H_{B}-A\cap B

以上公式,是根据两个矩形有交集的情况推导出来的,如果两个矩形没有交集,以上公式如何做出判断呢?如果是这两个矩形不存在交集,那么只要判断A\cap B\leq 0即可,即是说,如果两个矩形无交集,那么交并比为0。以下分别以python和C语言代码实现交并比的计算。

python代码实现如下:

def iou(b1,b2):xmin1,ymin1,xmax1,ymax1=b1xmin2,ymin2,xmax2,ymax2=b2w1=xmax1-xmin1h1=ymax1-ymin1w2=xmax2-xmin2h2=ymax2-ymin2xmin_inter=max(xmin1,xmin2)ymin_inter=max(ymin1,ymin2)xmax_inter=min(xmax1,xmax2)ymax_inter=min(ymax1,ymax2)inter=(xmax_inter-xmin_inter)*(ymax_inter-ymin_inter)union=w1*h1+w2*h2-interif inter<=0:return 0else:return inter/union

C语言代码实现如下:

struct Box
{double xmin;double ymin;double xmax;double ymax;
};double iou(Box b1, Box b2)
{double w1 = b1.xmax - b1.xmin;double h1 = b1.ymax - b1.ymin;double w2 = b2.xmax - b2.xmin;double h2 = b2.ymax - b2.ymin;double xmin_inter,ymin_inter,xmax_inter,ymax_inter;xmin_inter = (b1.xmin > b2.xmin) ? b1.xmin : b2.xmin;ymin_inter = (b1.ymin > b2.ymin) ? b1.ymin : b2.ymin;xmax_inter = (b1.xmax < b2.xmax) ? b1.xmax : b2.xmax;ymax_inter = (b1.ymax < b2.ymax) ? b1.ymax : b2.ymax;double inter=(xmax_inter-xmin_inter)*(ymax_inter-ymin_inter);double un=w1*h1+w2*h2-inter;if(inter<=0)return 0;else return inter/un;
}

相关内容

热门资讯

鹿邑老君台的导游词 鹿邑老君台的导游词  老君台原名升仙台或拜仙台,原为明道宫的一部分,位于老子故里鹿邑县城内东北隅,老...
彩色沙林导游词 彩色沙林导游词  导语:对于云南陆良的彩色沙林,导游们会怎样进行解说?下面是小编整理的彩色沙林导游词...
云台山的导游词 云台山的导游词  作为一位无私奉献的导游,往往需要进行导游词编写工作,导游词是导游人员引导游客观光游...
青岩古镇的导游词 青岩古镇的导游词三篇  青岩古镇,贵州四大古镇之一,位于贵阳市南郊,建于明洪武十年(1378年),原...
荔波樟江导游词 关于荔波樟江导游词  作为一名具备丰富知识的导游,时常会需要准备好导游词,导游词作为一种解说的文体,...
昆明石林导游词-导游词 昆明石林导游词-导游词范文  作为一位无私奉献的导游,常常需要准备导游词,导游词具有极强的实用性,涉...
广东第一高峰旅游风景区石坑崆 广东第一高峰旅游风景区石坑崆  广东第一峰旅游风景区是北回归线上最大的一片绿洲,拥有大面积原始森林,...
碧霞祠导游词 碧霞祠导游词碧霞祠导游词碧霞祠”创建于宋真宗东封泰山的时候,后世有过多次重修。碧霞祠最开始的时候是叫...
抱犊崮的导游词讲解 抱犊崮的导游词讲解  作为一名专门引导游客、助人为乐的导游,编写导游词是必不可少的,导游词不是以一代...
浙江大佛寺导游词 浙江大佛寺导游词  作为一名专门引导游客、助人为乐的导游,常常要写一份好的导游词,导游词作为一种解说...
丽江古城导游词作文 丽江古城导游词作文  作为一名可信赖的导游人员,可能需要进行导游词编写工作,导游词是我们引导游览时使...
普陀山导游词 普陀山导游词(精选5篇)  作为一名可信赖的导游人员,时常要开展导游词准备工作,导游词的主要特点是口...
洱海导游词 洱海导游词  大家好,欢迎各位来到“五朵金花”的故乡一大理,洱海导游词。现在我们的游船正行驶在洱海的...
中华民族园导游词 中华民族园导游词范文  中华民族园坐落在北京中轴线北端亚运村西南,1994年6月18日正式向游人开放...
北京故宫导游词 北京故宫导游词(精选6篇)  作为一名乐于助人的导游,通常会被要求编写导游词,导游词具有极强的实用性...
最新三峡大坝英文导游词 导语:各位导游请点击unjs.com了解详情三峡大坝位于中国湖北省宜昌市境内,距下游葛洲坝水利枢纽工...
避暑山庄的导游词 避暑山庄的导游词15篇  作为一名专门为游客提供优质服务的导游人员,有必要进行细致的导游词准备工作,...
嘉兴旅游景点简介及导游词 嘉兴旅游景点简介及导游词  嘉兴,自古为富庶繁华之地,素有“鱼米之乡,丝绸之府”之美誉。嘉兴旅游资源...
董永公园导游词 董永公园导游词范文  各位游客,欢迎光临孝感董永公园,我是(导游词),我代表我们旅行社欢迎大家到汉孝...
介绍趵突泉的导游词 介绍趵突泉的导游词  作为一名乐于助人的导游,常常需要准备导游词,导游词是讲解当地的基本情况,介绍风...