文章目录

  • 一、 IOU概述
  • 二、IOU计算
  • 三、IOU代码实现

一、 IOU概述

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

二、IOU计算

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

在对象检测任务中,你希望能够同时定位对象,所以如果实际边界框是这样的,你的算法给出这个紫色的边界框,那么这个结果是好还是坏?

所以交并比(loU)函数做的是计算两个边界框交集和并集之比。两个边界框的并集是这个区域,就是属于包含两个边界框区域(绿色阴影表示区域),而交集就是这个比较小的区域(橙色阴影表示区域),那么交并比就是交集的大小,这个橙色阴影面积,然后除以绿色阴影的并集面积。

一般约定,在计算机检测任务中,如果loU≥0.5,就说检测正确,如果预测器和实际边界框完美重叠,loU就是1,因为交集就等于并集。但一般来说只要loU≥0.5,那么结果是可以接受的,看起来还可以。一般约定,0.5是阈值,用来判断预测的边界框是否正确。一般是这么约定,但如果你希望更严格一点,你可以将loU定得更高,比如说大于0.6或者更大的数字,但loU越高,边界框越精确。

所以这是衡量定位精确度的一种方式,你只需要统计算法正确检测和定位对象的次数,你就可以用这样的定义判断对象定位是否准确。再次,0.5是人为约定,没有特别深的理论依据,如果你想更严格一点,可以把阈值定为0.6。有时我看到更严格的标准,比如0.6甚至0.7,但很少见到有人将阈值降到0.5以下。

三、IOU代码实现

现在有两个框A和B,如下图。A=[ a x 1 a_x1 ax​1, a y 1 a_y1 ay​1, a x 2 a_x2 ax​2, a y 2 a_y2 ay​2],B=[ b x 1 b_x1 bx​1, b y 1 b_y1 by​1, b x 2 b_x2 bx​2, b y 2 b_y2 by​2]。接下来想统计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。

def iou(box1, box2):'''两个框(二维)的 iou 计算注意:边框以左上为原点box:[x1,y1,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. 目标检测 - IoU和GIoU作为边框回归的损失和代码实现

    目标检测 - IoU和GIoU作为边框回归的损失和代码实现 flyfish GIoU =General-IOU =Generalized Intersection over Union 论文<G ...

  2. 【mAP】关于目标检测mAP的一些理解

    mAP是目标检测中的基本指标,详细理解有助于我们评估算法的有效性,并针对评测指标对算法进行调整. 1.基本概念定义 在目标检测中IoU为检测框与GroundTruth重叠的比例,如果大于0.5则算作正 ...

  3. 论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=>翻译及理解(持续更新中)

    论文题目:End-to-End Object Detection with Transformers 2020 论文复现可参考:项目复现 | DETR:利用transformers端到端的目标检测_夏 ...

  4. 【目标检测】FSSD论文理解

    摘要   SSD (Single Shot Multibox Detector):   是目前最好的目标检测算法之一,它具有精度高.速度快的优点.然而SSD的特征金字塔检测方法难以融合不同尺度的特征. ...

  5. YOLO目标检测算法的深入理解

    YOLO框架概述 YOLO(You only look once)是一种目标检测算法,目标检测算法分为两大任务:目标分类和定位,YOLO创造性的将候选区和对象识别这两个阶段合二为一,看一眼图片(不用看 ...

  6. 目标检测FCOS的初步理解

    FCOS FCOS是一阶段anchor free目标检测算法,其主要的卖点为无锚.通过回归特征图上每个位置距离目标框的上下左右距离来实现目标检测.如果一个位置落在了多个目标框内,文中的方法是通过多尺度 ...

  7. 【目标检测 DeformableDETR】通俗理解 DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION,值得一看。

    文章目录 DeformableDETR 1. 引言 1.1 E to E 1.2 远近高低各不同 1.3 先CNN,在DETR 1.4 DETR未解决的问题 2. 背景知识 2.1 NMS 2.2 t ...

  8. [目标检测]论文翻译代码理解-SCRDet: Towards More Robust Detection for Small, Cluttered and Rotated Objects

    2019.12.10 更新 未完结 3. The Proposed Method 首先,我们在图1中概述了我们的两阶段方法: 在第一阶段,通过添加SF-Net和MDA-Net,可以期望特征图包含更多的 ...

  9. [目标检测] Faster R-CNN 深入理解 改进方法汇总

    Faster R-CNN 从2015年底至今已经有接近两年了,但依旧还是Object Detection领域的主流框架之一,虽然推出了后续 R-FCN,Mask R-CNN 等改进框架,但基本结构变化 ...

最新文章

  1. Fragment 和 FragmentActivity的使用
  2. linux nginx php 目录权限,Nginx环境中配置网站目录权限设置
  3. 关于无人驾驶商业化现状的一个小研究
  4. Android硬件抽象层(HAL)深入剖析(一)
  5. eclipse egit(分支管理 上)
  6. 清华大学贾宁_《财务思维》_体系结构
  7. access开发精要(7)-定位记录、查找空值
  8. stringstream的用法
  9. [人生百态]爱的样子
  10. CentOS6.5升级内核到3.10.28
  11. spring源码-第三个后置处理器
  12. Android文字图像识别并翻译的简单实现
  13. 常见的HTTP状态码大全
  14. 枚举算法,常用的三种
  15. osgEarth加载二维地图
  16. 网络编程之OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程...
  17. SQL-聚合函数结果作为筛选条件时where与having用法的区别
  18. JavaScript 求平均数的方法(实参个数不确定)
  19. Substrate是什么,为什么要选择Substrate
  20. 大数据杀熟对哪些人有害?

热门文章

  1. “抵制不孝言行·村立孝老爱亲”
  2. asp.net高校心理辅导站系统
  3. goccess 导出html设置参数,GoAccess中文界面显示配置
  4. PHP JSON格式的输出和解析
  5. 姚劲波:冷门行业更适合普通的创业者
  6. android h5 唤起app,h5唤起app解决方案
  7. Echarts 饼图基本用法
  8. 英语知识点-填空-考试酷
  9. 分享一个Chrome小技巧---多用户登录同一网站不串信息
  10. python从小到大排列列表元素_python怎样对列表进行排序 需要技巧