当前位置: 首页 > news >正文

【评估指标】IoU 交并比

IoU(交并比,Intersection over Union)

IoU(Intersection over Union)是计算机视觉和目标检测中最常用的评估指标之一,用于衡量预测边界框(Bounding Box)真实边界框(Ground Truth) 之间的重叠程度。它在目标检测、实例分割、语义分割等任务中广泛应用。

1. IoU 的定义

IoU 计算的是两个边界框的**交集(Intersection)并集(Union)**的比值:
在这里插入图片描述

其中:

  • A 是预测框(Predicted Box)
  • B 是真实框(Ground Truth Box)

取值范围:0(完全不重叠) ~ 1(完全重合)

2. IoU 的计算步骤

假设有两个矩形框:

  • 预测框(Predicted Box):坐标在这里插入图片描述

  • 真实框(Ground Truth Box):坐标 在这里插入图片描述

计算过程

  1. 计算交集(Intersection)
    在这里插入图片描述

  2. 计算并集(Union)
    在这里插入图片描述

    其中:
    在这里插入图片描述

  3. 计算 IoU
    在这里插入图片描述

3. IoU 的直观理解

  • IoU = 1:预测框和真实框完全重合(理想情况)。
  • IoU ≈ 0.5:部分重叠(通常作为目标检测的阈值,如 PASCAL VOC 使用 0.5)。
  • IoU = 0:完全不重叠(预测错误)。

示例

预测框 §真实框 (G)IoU 计算
(10, 10, 50, 50)(20, 20, 60, 60)IoU ≈ 0.5
(10, 10, 50, 50)(10, 10, 50, 50)IoU = 1
(10, 10, 20, 20)(30, 30, 40, 40)IoU = 0

4. IoU 的应用

(1) 目标检测中的评估

  • 判定预测框是否正确(True Positive, TP):
    • 如果 IoU ≥ 阈值(如 0.5),则认为是正确检测(TP)。
    • 否则,认为是误检(False Positive, FP)。
  • 计算 mAP(Mean Average Precision)
    • 不同 IoU 阈值(如 0.5:0.95)下的 AP 平均值(COCO 标准)。

(2) 非极大值抑制(NMS, Non-Maximum Suppression)

  • 用于去除冗余检测框:
    • 如果多个预测框 IoU > 阈值(如 0.5),只保留置信度最高的一个。

(3) 损失函数(IoU Loss)

  • 直接优化 IoU 以提高检测精度:
    • IoU Loss = 1 - IoU
    • 变种:GIoU、DIoU、CIoU(解决 IoU 的梯度问题)。

5. IoU 的局限性

问题说明改进方法
不相交时 IoU=0无法区分不同距离的预测框GIoU(考虑最小外接矩形)
尺度不变性对小目标和大目标的 IoU 敏感性不同DIoU(考虑中心点距离)
梯度消失IoU=0 时无法优化CIoU(结合中心点和长宽比)

6. 代码实现(Python)

def calculate_iou(box1, box2):# box1: [x1, y1, x2, y2]# box2: [x1, y1, x2, y2]# 计算交集x_left = max(box1[0], box2[0])y_top = max(box1[1], box2[1])x_right = min(box1[2], box2[2])y_bottom = min(box1[3], box2[3])intersection = max(0, x_right - x_left) * max(0, y_bottom - y_top)# 计算并集area1 = (box1[2] - box1[0]) * (box1[3] - box1[1])area2 = (box2[2] - box2[0]) * (box2[3] - box2[1])union = area1 + area2 - intersectioniou = intersection / (union + 1e-6)  # 避免除零return iou# 示例
box_p = [10, 10, 50, 50]
box_g = [20, 20, 60, 60]
iou = calculate_iou(box_p, box_g)
print(f"IoU: {iou:.2f}")  # 输出 IoU: 0.50

7. 总结

  • IoU 是衡量目标检测框重叠度的核心指标,广泛应用于 TP/FP 判定、NMS、损失函数等。
  • 标准 IoU 存在局限性,改进版本如 GIoU、DIoU、CIoU 能优化不同场景下的检测性能。
  • 代码实现简单,可直接用于自定义目标检测任务。
http://www.lryc.cn/news/575254.html

相关文章:

  • 工业“三体”联盟:ethernet ip主转profinet网关重塑设备新规则
  • 智哪儿专访 | Matter中国提速:开放标准如何破局智能家居“生态孤岛”?
  • Selenium 二次封装通用页面基类 BasePage —— Python 实践
  • GBDT:梯度提升决策树——集成学习中的预测利器
  • Git上传代码如何解决Merge冲突
  • 时序数据库 TDengine 助力华锐 D5 平台实现“三连降”:查询快了,机器少了,成本也低了
  • 【目标检测】平均精度(AP)与均值平均精度(mAP)计算详解
  • MicroPython网络编程:AP模式与STA模式详解
  • 大塘至浦北高速分布式光伏项目,让‘交通走廊’变身‘绿色能源带’
  • 深度学习入门--(二)感知机
  • python的kivy框架界面布局方法详解
  • react中使用3D折线图跟3D曲面图
  • Vue Devtools “Open in Editor” 配置教程(适用于 VSCode 等主流编辑器)
  • 大语言模型(LLM)初探:核心概念与应用场景
  • 【MongoDB】MongoDB从零开始详细教程 核心概念与原理 环境搭建 基础操作
  • DeepSeek模型接入LangChain流程(详细教程)
  • 永磁同步电机无速度算法--基于同步旋转坐标系锁相环的滑模观测器
  • PYTHON从入门到实践6-字典
  • MCP2518FD发送时有时候多发数据包问题
  • 【预告 大模型应用开发实战专栏 升级】将增加《大模型 Agent 应用实战指南》专题赋能 Agent 开发者
  • OpenGL模板缓冲:实现亮显外轮廓效果
  • C# LINQ语法
  • Python 爬虫入门:从数据爬取到转存 MySQL 数据库
  • Cookie 在 HTTP 中的作用HTTP 中的状态码
  • 北斗导航 | 基于改进奇偶矢量法的CAT I精密进近RAIM算法
  • 半导体芯闻--20250625
  • Linux离线安装jdk-11
  • AudioTrack使用
  • Kylin Linux Advanced Server V10 离线安装 Prometheus + Grafana + node_exporter指南
  • 【网站内容安全检测】之1:获取网站所有链接sitemap数据