目标检测入门之矩形框IOU计算
1. 引言
在目标检测领域中,我们经常用IOU来衡量检测框和标注真实框之间的重叠程度,那么究竟该如何计算IOU呢?
闲话少说,我们直接进入今天的主题…
2. 什么是IOU?
- IOU(交并比 Intersection over Union)是一个术语,用于描述两个框的重叠程度。重叠区域越大,IOU越大。
- IOU主要用于与对象检测相关的应用程序中,在该应用程序中,我们训练模型输出一个完全包围目标的外接矩形框。例如,在上图中,我们有一个绿色框和一个蓝色框。绿色框表示真实框,蓝色框表示我们模型的预测框。训练模型的目的是不断改进其预测框的输出,直到蓝色框和绿色框完全重叠,即两个框之间的IOU等于1。
- IOU经常用于非最大值抑制中,基于检测框的置信度消除同一个对象的多个预测框,用以保留置信度最高的预测框.
3. IOU的计算
在目标检测中,我们假设框1由[x1,y1,x2,y2]表示,同样框2由[x3,y3,x4,y4]表示,如下图1所示。
此时IOU的计算公式如下:
用图2表示如下:
接下来我们来一步一步计算相应的矩形框的交集和并集对应的面积.
3.1. 计算交集面积
直观来看,两个矩形框的交集有多种情况,我们直观的来观察下图3,明显右下两个矩形框完全重合交集面积最大.
首先我们将相交矩形的坐标表示为 [x_inter1,y_inter1,x_inter2,y_inter2],分别代表相交矩形的左上角和右下角的坐标。
接着从定义参考坐标系开始。我们使用+X轴向右移动,+Y轴向下移动的计算机图形学惯例。
为了计算相交矩形的左上角坐标,我们比较每个框的左上角。我们可以从上面的例子中看到,x_inter1可以通过查看哪个框的左上角更靠右找到。类似地,可以通过查看哪个框的左上角低于另一个框来找到y_inter1。从数学上讲,它们可以总结为:
- 为了计算相交矩形的右下角坐标,我们比较每个框的右下角。x_inter2可以通过查看哪个框的右下角更偏左来找到。类似地,可以通过查看哪个框的右下角高于另一个框来找到y_inter2。类似地,它们可以总结为:
- 现在我们有了相交矩形的坐标,则交集的面积就是矩形的面积。(在实际应用中,我们将采用宽度和高度的绝对值,以确保即使框的顺序发生变化,宽度和高度仍为正值;即,如果x_inter1>x_inter2,我们仍将获得宽度的正值)
3.2. 计算并集面积
- 框的并集是两个框所覆盖的总面积,如图2所示。
- 为了找到总面积,我们首先计算各个矩形框的面积。
- 如果我们查看两个框所覆盖的总面积,我们会看到两个框都覆盖了相交矩形的部分,即相交矩形的面积包括在box1区域和box2区域中。
- 由于我们只想计算一次公共相交面积,我们可以从两个框的总面积中减去我们计算的相交面积。即:
3.3. 计算交并比
通过上述计算公式,我们计算出了两个矩形框相应的交集和并集的面积,此时矩形框的IOU计算公式如下:
观察上述公式,可以得到如下结论:
- 两个框的IOU可以取0到1之间的任何值。
- 如果两个框不相交,则它们的相交区域将为0,因此IOU也将为0。
- 如果两个完全重叠的矩形框,则交集的面积将等于其并集的面积,因此IOU将为1。
4. 代码实现
接着,让我们用python编写一个函数来计算开篇狸花锚图像中绿色和蓝色框的IOU。
- 函数IOU接受两个框,即box1和box2作为输入。每个框中的数据都是一个包含[x1,y1,x2,y2]的列表,它表示左上角和右下角的坐标。
- 如前文所述,我们先计算相交矩形的面积,然后是并集的面积。
- abs函数是python中用于计算取绝对值的内置函数。这确保了我们永远不会以负宽度或负高度计算结果。
- 返回的IOU是float类型的值,介于0和1之间。
运行结果如下:
5. 总结
本文介绍了目标检测中最常用的衡量预测框准确度的标注即IOU的概念和详细的图示,并给出了完整的代码.
您学废了吗?
关注公众号,后台回复 交并比 , 即可获取源码.
关注公众号《AI算法之道》,获取更多AI算法资讯。
参考链接
目标检测入门之矩形框IOU计算相关推荐
- 干货 | 目标检测入门,看这篇就够了(上)
作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾早期的经典工作,并对较新的趋势做一个全景 ...
- 【CV】目标检测入门和实现思路!
作者:徐和鼎,浙江大学,Datawhale优秀学习者 本文讲解了目标检测的基本概念,分析了实现目标检测的常用思路.下一篇将介绍目标检测经典数据集-VOC数据集的基本信息,和对VOC数据集进行处理的方法 ...
- 干货 | 目标检测入门,看这篇就够了(下)
作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾早期的经典工作,并对较新的趋势做一个全景 ...
- 目标检测入门和实现思路!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:徐和鼎,浙江大学,Datawhale优秀学习者 本文讲解了目标检测 ...
- 目标检测基本概念理解之IoU(交并比)以及Python代码实现
目标检测基本概念理解之IoU(交并比) 交并比理解 Python代码实现 计算IoU,矩形框的坐标形式为xyxy 计算IoU,矩形框的坐标形式为xywh 交并比理解 在检测任务中,使用交并比(Inte ...
- 目标检测入门之(二)综述(下)
作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾早期的经典工作,并对较新的趋势做一个全景 ...
- 【目标检测】什么是mAP?如计算模型的mAP?(mAP的相关概念以及求法)
文章目录 什么是mAP 相关概念 如何得到PR曲线 如何计算AP以及mAP 详细步骤分析 什么是mAP mAP(mean Average Precision 平均精度),是一个经常被用来衡量目标检测模 ...
- 目标检测中的mAP和AP计算原理
目录 前言 一. 基本概念 1.1 分类问题中的四类样本 1.2 精确率(precision) 1.3 召回率(recall) 1.4 准确率(accuracy) 1.5 其他 1.6 讨论 二. m ...
- 皮卡丘检测器-CNN目标检测入门教程
目标检测通俗的来说是为了找到图像或者视频里的所有目标物体.在下面这张图中,两狗一猫的位置,包括它们所属的类(狗/猫),需要被正确的检测到. 所以和图像分类不同的地方在于,目标检测需要找到尽量多的目标物 ...
最新文章
- Forerunner:首个面向“多未来”的推测执行技术
- query插件之ajaxForm ajaxSubmit的理解用法
- 如何监听Canvas上滚动条的出现或隐藏
- 很多女生都这么干!效果就是可以很快换电脑……
- Spring Boot 2 实战:利用Redis的Geo功能实现查找附近的位置
- java中双引号和单引号_Java中的单引号和双引号之间有区别吗?
- Python类私有方法的陷阱
- servlet监听器Listener(理论+例子)
- iOS NSData简单解析
- syslinux linux 启动盘,syslinux启动盘制作
- 《筑墙——只需一点点安全常识就能阻止网络犯罪》
- Android 学习笔记之二 Netspeed
- canvas教程12-阴影
- windows凭据管理
- labelImg打标签教程
- 如何在邮件正文显示自己的简历
- Windows10 SVG转PDF
- idea 中ctrl+shift+数字的作用
- JavaSe复习笔记
- EMC文件服务器,emc存储服务器
热门文章
- windows10下用解压包安装的Mysql远程登陆设置
- CorelDRAW 快捷键全攻略(1)
- Matlab 希腊字母
- 从开源时代进入到逆向时代
- Calling non-final function sound in constructor
- GNU Makefile中文手册
- Astra Pro - Astra主题高级插件 v3.9.0
- LeetCode 395. 至少有 K 个重复字符的最长子串--二分查找+前缀和+优先队列
- Android音频管理总结(个人笔记)
- 关于Antd的Affix突然不好用了,或者Window的scroll监听不好用了