1. IOU概述

IoU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是“预测的边框”和“真实的边框”的交叠率-,即它们的交集和并集的比值。最理想情况是完全重叠,即比值为1。

2. IoU计算

IoU等于“预测的边框”和“真实的边框”之间交集和并集的比值。IoU计算如下图,B1为真实边框,B2为预测边框。

3. IoU代码实现

现在有两个框A和B,如下图。A=[ax1,ay1,ax2,ay2],B=[bx1,by1,bx2,by2]。接下来想统计A和B的交集面积,A自己的面积和B自己的面积。三个待求值里面最关键的就是怎么求交集面积(图中红色框)。

假设A和B是相交的,存在交集。这个时候怎么求交集框(红色框)的左上角坐标和右下角坐标呢?我们发现,当A和B有交集的时候,交集框(红色框)的左上角坐标是max(A的左上角坐标,B的左上角坐标),右下角是min(A的右下角坐标,B的右下角坐标)。那么:


       那么当A和B没有交集的时候,h和w的值小于0,如果没有交集,被减数一定小于减数。所以为了鲁棒性,我们最终的inter是这样计算的:

       这样当A和B没有交集,inter的值就是0.分子为0,则IoU为0。

● Python代码:

def iou(box1, box2):'''两个框(二维)的 iou 计算注意:边框以左上为原点box:[x1,y2,x2,y2],依次为左上右下坐标'''h = max(0, min(box1[2], box2[2]) - max(box1[0], box2[0]))w = max(0, min(box1[3], box2[3]) - max(box1[1], box2[1]))area_box1 = ((box1[2] - box1[0]) * (box1[3] - box1[1]))area_box2 = ((box2[2] - box2[0]) * (box2[3] - box2[1]))inter = w * hunion = area_box1 + area_box2 - interiou = inter / unionreturn ioubox1 = [0,0,2,2]
box2 = [1,1,3,3]
IoU = iou(box1,box2)
print(IoU)

输出:

【目标检测】IoU(交并比)详解及代码实现相关推荐

  1. 目标检测算法YOLO-V1算法详解

    ❝ 前面我们一起学了SSD算法的相关知识,如下: SSD目标检测算法必须知道的几个关键点 目标检测算法SSD结构详解 ❞ 今天我们学习另一系列目标检测算法YOLO(You Only Look Once ...

  2. 目标检测模型YOLO-V1损失函数详解

    ❝ 上期我们一起学习了YOLOV1算法的原理框架,如下: 目标检测算法YOLO-V1算法详解 今天我们深入一步,一起学习下关于YOLO-V1算法的损失函数和优缺点. ❞ YOLO-V1损失函数 从上期 ...

  3. 【动手学PaddlePaddle2.0系列】目标检测理论与YOLOv4详解

    对计算机而言,能够"看到"的是图像被编码之后的数字,所以它很难理解高层语义概念,比如图像或者视频帧中出现的目标是人还是物体,更无法定位目标出现在图像中哪个区域.目标检测的主要目的是 ...

  4. 深度学习-目标检测YOLOV3 YOLOv4原理详解

    2.YoloV3核心基础内容 2.1 网络结构可视化 Yolov3是目标检测Yolo系列非常非常经典的算法,不过很多同学拿到Yolov3或者Yolov4的cfg文件时,并不知道如何直观的可视化查看网络 ...

  5. 目标检测网络之SPP-net详解

    SPP-net详解: 简要概述:SPP-net网络是基于R-CNN结构改进,且仅在候选区域特征提取,以及特征向量大小转化两个方面做出改进,如详细理解SPP-net请先阅读目标检测开山之作R-CNN详解 ...

  6. 目标检测-Iou(交并比)理解

    文章目录 一. IOU概述 二.IOU计算 三.IOU代码实现 一. IOU概述 IOU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是&q ...

  7. 基于双目视觉的目标检测与追踪方案详解

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者 | Aimme 出品 |  焉知智能汽车 一直想通过计算机视觉的角度好好地把其在自动驾驶视觉检测 ...

  8. YOLOv7(目标检测)入门教程详解---环境安装

    目录 一.前言 二.yolov7环境搭建 直接进入正题,环境搭建开始: Anaconda: Pycharm: cuda: cuda安装: cudnn: 三.虚拟环境安装 创建虚拟python环境: P ...

  9. 【论文解读】深度学习目标检测的开山鼻祖 |R-CNN详解 | 两阶段目标检测代表

    目录 前言 目标检测近年里程碑 深度学习目标检测 1 R-CNN简介 1.1 何为R-CNN? 1.2 摘要 1.2.1 论文综述 1.2.2 优点汇总 1.2.3 缺点汇总 2. RCNN网络结构解 ...

  10. 【目标检测】yoloV5算法详解

    一.与yoloV4相比,yoloV5的改进 输入端:在模型训练阶段,使用了Mosaic数据增强.自适应锚框计算.自适应图片缩放 基准网络:使用了FOCUS结构和CSP结构 Neck网络:在Backbo ...

最新文章

  1. Glide的缓存机制
  2. 《JAVA练习题目5》 请在类中定义计算阶乘的方法完成本题目的求解
  3. struts2中解决下载文件名中文乱码问题
  4. windows/ubuntu 文件共享之 Samba 配置
  5. Spring MVC之异常处理
  6. 综合-某假期欢乐赛 (Apri, 2018)
  7. SORT,DELETE ADJACEN DUPLICATES FROM保留有效数据
  8. python中json.dumps和json.loads,get和post
  9. python笔记之序列(dict的基本使用和常用操作)
  10. live555 接收rtsp视频流流程分析
  11. 435. 无重叠区间(JavaScript)
  12. php笔试完就让我回去了,昨晚hr给了我一个面试题,说过了就安排我面试
  13. 价值连城 图灵奖得主Yoshua Bengio约书亚·本吉奥的采访 给AI从业者的建议
  14. 织梦dedecms全自动采集的方法
  15. 自己编写DLL文件——注册——VB工程引用——标准EXE调用(含例子)
  16. mysql 分组求和_MySQL 分组最值、分组均值、分组求和
  17. 方方格子access_FX Console(AE工作流程插件)
  18. Smobiler资料准备与环境搭建——C# 或.NET Smobiler实例开发手机app(一)
  19. opencv遍历像素输出像素值
  20. 【分享实录-猫眼电影】业务纵横捭阖背后的技术拆分与融合

热门文章

  1. FPGA积沙成塔(目录篇)
  2. java限制符含义_JAVA的访问控制符private,default,protected,public
  3. MySQL等级考试题目练习_全国计算机等级考试二级MySQL练习题
  4. php 获取变量指针_PHP 底层的运行机制与原理
  5. 杂:(4)NE555
  6. 04.通过qss文件设置setStyleSheet
  7. 【嵌入式Linux】嵌入式Linux驱动开发基础知识之驱动设计的思想:面向对象/分层/分离
  8. 向shell脚本中传入参数
  9. Linux netfilter源码分析(5)
  10. linux NAND驱动之四:6410上的NAND读写流程