【目标检测】IoU(交并比)详解及代码实现
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(交并比)详解及代码实现相关推荐
- 目标检测算法YOLO-V1算法详解
❝ 前面我们一起学了SSD算法的相关知识,如下: SSD目标检测算法必须知道的几个关键点 目标检测算法SSD结构详解 ❞ 今天我们学习另一系列目标检测算法YOLO(You Only Look Once ...
- 目标检测模型YOLO-V1损失函数详解
❝ 上期我们一起学习了YOLOV1算法的原理框架,如下: 目标检测算法YOLO-V1算法详解 今天我们深入一步,一起学习下关于YOLO-V1算法的损失函数和优缺点. ❞ YOLO-V1损失函数 从上期 ...
- 【动手学PaddlePaddle2.0系列】目标检测理论与YOLOv4详解
对计算机而言,能够"看到"的是图像被编码之后的数字,所以它很难理解高层语义概念,比如图像或者视频帧中出现的目标是人还是物体,更无法定位目标出现在图像中哪个区域.目标检测的主要目的是 ...
- 深度学习-目标检测YOLOV3 YOLOv4原理详解
2.YoloV3核心基础内容 2.1 网络结构可视化 Yolov3是目标检测Yolo系列非常非常经典的算法,不过很多同学拿到Yolov3或者Yolov4的cfg文件时,并不知道如何直观的可视化查看网络 ...
- 目标检测网络之SPP-net详解
SPP-net详解: 简要概述:SPP-net网络是基于R-CNN结构改进,且仅在候选区域特征提取,以及特征向量大小转化两个方面做出改进,如详细理解SPP-net请先阅读目标检测开山之作R-CNN详解 ...
- 目标检测-Iou(交并比)理解
文章目录 一. IOU概述 二.IOU计算 三.IOU代码实现 一. IOU概述 IOU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是&q ...
- 基于双目视觉的目标检测与追踪方案详解
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者 | Aimme 出品 | 焉知智能汽车 一直想通过计算机视觉的角度好好地把其在自动驾驶视觉检测 ...
- YOLOv7(目标检测)入门教程详解---环境安装
目录 一.前言 二.yolov7环境搭建 直接进入正题,环境搭建开始: Anaconda: Pycharm: cuda: cuda安装: cudnn: 三.虚拟环境安装 创建虚拟python环境: P ...
- 【论文解读】深度学习目标检测的开山鼻祖 |R-CNN详解 | 两阶段目标检测代表
目录 前言 目标检测近年里程碑 深度学习目标检测 1 R-CNN简介 1.1 何为R-CNN? 1.2 摘要 1.2.1 论文综述 1.2.2 优点汇总 1.2.3 缺点汇总 2. RCNN网络结构解 ...
- 【目标检测】yoloV5算法详解
一.与yoloV4相比,yoloV5的改进 输入端:在模型训练阶段,使用了Mosaic数据增强.自适应锚框计算.自适应图片缩放 基准网络:使用了FOCUS结构和CSP结构 Neck网络:在Backbo ...
最新文章
- Glide的缓存机制
- 《JAVA练习题目5》 请在类中定义计算阶乘的方法完成本题目的求解
- struts2中解决下载文件名中文乱码问题
- windows/ubuntu 文件共享之 Samba 配置
- Spring MVC之异常处理
- 综合-某假期欢乐赛 (Apri, 2018)
- SORT,DELETE ADJACEN DUPLICATES FROM保留有效数据
- python中json.dumps和json.loads,get和post
- python笔记之序列(dict的基本使用和常用操作)
- live555 接收rtsp视频流流程分析
- 435. 无重叠区间(JavaScript)
- php笔试完就让我回去了,昨晚hr给了我一个面试题,说过了就安排我面试
- 价值连城 图灵奖得主Yoshua Bengio约书亚·本吉奥的采访 给AI从业者的建议
- 织梦dedecms全自动采集的方法
- 自己编写DLL文件——注册——VB工程引用——标准EXE调用(含例子)
- mysql 分组求和_MySQL 分组最值、分组均值、分组求和
- 方方格子access_FX Console(AE工作流程插件)
- Smobiler资料准备与环境搭建——C# 或.NET Smobiler实例开发手机app(一)
- opencv遍历像素输出像素值
- 【分享实录-猫眼电影】业务纵横捭阖背后的技术拆分与融合
热门文章
- FPGA积沙成塔(目录篇)
- java限制符含义_JAVA的访问控制符private,default,protected,public
- MySQL等级考试题目练习_全国计算机等级考试二级MySQL练习题
- php 获取变量指针_PHP 底层的运行机制与原理
- 杂:(4)NE555
- 04.通过qss文件设置setStyleSheet
- 【嵌入式Linux】嵌入式Linux驱动开发基础知识之驱动设计的思想:面向对象/分层/分离
- 向shell脚本中传入参数
- Linux netfilter源码分析(5)
- linux NAND驱动之四:6410上的NAND读写流程