简单理解目标检测的IOU究竟是什么

简介: 简单理解目标检测的IOU究竟是什么

目标检测中有一个很重要的概念便是IOU


那么什么是IOU?


IOU是一种评价目标检测器的指标。


下图是一个示例:图中绿色框为实际框,红色框为预测框,当我们需要判断两个框之间的关系时,需要用什么指标呢?

此时便需要用到IOU。


1dc618a0ed9580ce8bfa6facb208c08f.png


计算IOU的公式为:


5d4c6812c8535adbb050f4ddf2e1bce8.png


可以看到IOU是一个比值,即交并比。


在分子部分,值为预测框和实际框之间的重叠区域;


46a9d80a6e05e4e3b19d57a0ee70bcdf.png



在分母部分,值为预测框和实际框所占有的总区域。


66ba272a0bfc97be54a5fa679e3d5482.png


交区域和并区域的比值,就是IOU。


那么我们为什么要用IOU?


目标检测任务的结果是框的锁定,


因此当我们输入图片时,模型应该给出一个推测,也就是它认为在照片中哪些地方有物体,以及物体的范围。由此,模型推测的结果和目标之间就会出现一个误差,而评价这个误差程度的方法就是IoU。


Iou是一种评价指标,让我们能够比较不同的目标检测任务或者模型的优劣。


问题:给出两个矩形框,请计算出它们两个的IOU。


实现代码:


import cv2
import numpy as np
def CountIOU(RecA, RecB):
    xA = max(RecA[0], RecB[0])
    yA = max(RecA[1], RecB[1])
    xB = min(RecA[2], RecB[2])
    yB = min(RecA[3], RecB[3])
    # 计算交集部分面积
    interArea = max(0, xB - xA + 1) * max(0, yB - yA + 1)
    # 计算预测值和真实值的面积
    RecA_Area = (RecA[2] - RecA[0] + 1) * (RecA[3] - RecA[1] + 1)
    RecB_Area = (RecB[2] - RecB[0] + 1) * (RecB[3] - RecB[1] + 1)
    # 计算IOU
    iou = interArea / float(RecA_Area + RecB_Area - interArea)
    return iou
img = np.zeros((512,512,3), np.uint8)   
img.fill(255)
RecA = [50,50,300,300]
RecB = [60,60,320,320]
cv2.rectangle(img, (RecA[0],RecA[1]), (RecA[2],RecA[3]), (0, 255, 0), 5)
cv2.rectangle(img, (RecB[0],RecB[1]), (RecB[2],RecB[3]), (255, 0, 0), 5)
IOU = CountIOU(RecA,RecB)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,"IOU = %.2f"%IOU,(130, 190),font,0.8,(0,0,0),2)
cv2.imshow("image",img)
cv2.waitKey()
cv2.destroyAllWindows()


相关文章
|
算法 搜索推荐 计算机视觉
图片相似度计算及检索调研
图片相似度计算和相似图片搜索,是图片识别领域两个常见的应用场景。例如搜索相似商品,和相似的图片,在百度、淘宝中都有应用。在某些业务中,也存在对图片相似度的计算和判断。因此,在这里简单介绍一下相关算法。
2449 0
|
9月前
|
Kubernetes 调度 开发者
qwen模型 MindIE PD分离部署问题定位
使用MindIE提供的PD分离特性部署qwen2-7B模型,使用k8s拉起容器,参考这个文档进行部署:https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0060.html,1个Prefill,1个Decode。 最后一步测试推理请求的时候,出现报错:model instance has been finalized or not initialized。
599 1
|
3月前
|
人工智能 测试技术
NeurlPS 2025!多伦多大学TIRE助力3D/4D 生成精准保留主体身份
TIRE提出“追踪-补全-重投影”三阶段方法,实现主体驱动的3D/4D生成。通过视频跟踪识别缺失区域,定制2D模型补全纹理,并重投影至3D空间,提升生成一致性与质量,推动动态场景生成新进展。
162 8
NeurlPS 2025!多伦多大学TIRE助力3D/4D 生成精准保留主体身份
|
5月前
|
并行计算 数据格式 异构计算
完整教程:从0到1在Windows下训练YOLOv8模型
本文详细介绍在Windows系统下使用YOLOv8训练目标检测模型的完整步骤,涵盖环境配置、数据集准备、模型训练与测试、常见问题解决及GPU加速技巧。提供详细命令与代码示例,并推荐现成数据集与工具,助您高效完成模型训练。
2446 17
完整教程:从0到1在Windows下训练YOLOv8模型
|
6月前
|
测试技术 API 开发工具
API文档该怎么写,开发效率能翻几倍?
API文档是提升开发效率与协作的关键因素,本文探讨了API文档的核心要素、常见类型及编写规范,并介绍了如何借助现代化工具如Apifox实现高效管理与维护,助力团队打造高质量的API文档体系。
|
8月前
|
人工智能 搜索推荐 测试技术
通义灵码 Agent+MCP:打造自动化菜品推荐平台,从需求到部署实现全流程创新
通过通义灵码编程智能体模式和 MCP 的集成,开发者可以高效构建在线菜品推荐网站。智能体模式大幅提升了开发效率,MCP 服务则为功能扩展提供了无限可能。
|
10月前
|
API
Postman 可以将文档导出为 HTML/Markdown 吗?
Postman 没有提供直接将你的文档导出为 HTML 或 Markdown 的途径。太糟糕了
|
容器
【qt】下拉列表组件
【qt】下拉列表组件
257 0
|
12月前
|
人工智能
SPO来袭:Prompt工程师90%不存在了?AI自动优化时代开启!
当你点进这个标题时内心是怎样复杂的心情,质疑,鄙夷,或者是惊讶?这也正是我们最初点开这篇论文时的心情。然而, 在完成项目测试后, 我们瘫坐在椅子上, 默默打下了 'Prompt工程师,不存在' 这几个
570 0
|
Python
Jetson环境安装(二):ubuntu18.0卸载和安装python3
在Jetson Nano上如何卸载Python 3.7并重新安装Python 3.7.0版本的详细步骤,包括卸载命令、安装依赖库、下载和编译Python源码以及建立软链接等。
514 2