IoU算法可用与评估两个多维度数据的相似度,举一个实际应用,做CV,目标检测,我们需要评估模型的识别准确率,不同于二元类问题,普通的评估算法不合适,于是用到了这个算法,这个算法简单易懂,评估效果也不错。

  这里主要讨论如何计算并评估两个矩形相交程度。有空再训练一个目标检测器,来试试水。。

  第一种对于数据形状是这样的 $ (x_{top-left}, y_{top-left}, w, h) $,意思是:给出了起始坐标,矩形沿着 $ w, h $ 扩展开。

  算法实现:

double IoU(int*a, int*b)
{
int overlap_w = min(a[0] + a[2], b[0] + b[2]) - max(a[0], b[0]);
int overlap_h = min(a[1] + a[3], b[1] + b[3]) - max(a[1], b[1]);
int overlap_s = overlap_w*overlap_h;
return overlap_s / double(a[2]*a[3] + b[2]*b[3] - overlap_s);
}

  第二种数据形状是这样的 $ (x_{top-left}, y_{top-left}, x_{right-down}, y_{right-down}) $,意思是:给出了起始坐标和终点坐标,如图:

  

  算法实现:

double IoU_2(int*a, int*b)
{
int overlap_w = min(a[2], b[2]) - max(a[0], b[0]);
int overlap_h = min(a[3], b[3]) - max(a[1], b[1]);
int overlap_s = overlap_w*overlap_h;
return overlap_s / double((a[2] - a[0])*(a[3] - a[1]) + (b[2] - b[0])*(b[3] - b[1]) - overlap_s);
}

  用这几组数据测试一下:

1: [39, 63, 203, 112], [54, 66, 198, 114]
2: [49, 75, 203, 125], [42, 78, 186, 126]
3: [31, 69, 201, 125], [18, 63, 235, 135]
4: [50, 72, 197, 121], [54, 72, 198, 120]
5: [35, 51, 196, 110], [36, 60, 180, 108]

  output:

0.825758
0.795771
=====================
0.809624
0.787838
=====================
0.791962
0.609319
=====================
0.947743
0.946628
=====================
0.79667
0.727656
=====================

  参考:

    1.https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

    2.https://en.wikipedia.org/wiki/Jaccard_index

Intersection over Union(IoU) algorithms的更多相关文章

  1. 论文阅读笔记四十七:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression(CVPR2019)

    论文原址:https://arxiv.org/pdf/1902.09630.pdf github:https://github.com/generalized-iou 摘要 在目标检测的评测体系中,I ...

  2. 目标识别(object detection)中的 IoU(Intersection over Union)

    首先直观上来看 IoU 的计算公式: 由上述图示可知,IoU 的计算综合考虑了交集和并集,如何使得 IoU 最大,需要满足,更大的重叠区域,更小的不重叠的区域. 两个矩形窗格分别表示: 左上点.右下点 ...

  3. 『计算机视觉』Generalized Intersection over Union: A Metric and A Loss for Bounding BoxRegression

    论文地址:Generalized Intersection over Union 一.相关工作 目标检测精度标准 度量检测优劣基本基于 IOU,mAP 是典型的基于 IOU 的标准,但是 mAP 仅有 ...

  4. Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression

    Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression 2019-05-20 19:3 ...

  5. Dice Similarity Coefficent vs. IoU Dice系数和IoU

    Dice Similarity Coefficent vs. IoU Several readers emailed regarding the segmentation performance of ...

  6. 评价目标检测(object detection)模型的参数:IOU,AP,mAP

    首先我们为什么要使用这些呢? 举个简单的例子,假设我们图像里面只有1个目标,但是定位出来10个框,1个正确的,9个错误的,那么你要按(识别出来的正确的目标/总的正确目标)来算,正确率100%,但是其实 ...

  7. Analyzing The Papers Behind Facebook's Computer Vision Approach

    Analyzing The Papers Behind Facebook's Computer Vision Approach Introduction You know that company c ...

  8. 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015

    Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...

  9. YOLO: You Only Look Once论文阅读摘要

    论文链接: https://arxiv.org/pdf/1506.02640.pdf 代码下载: https://github.com/gliese581gg/YOLO_tensorflow Abst ...

随机推荐

  1. (转)java中新生代和老年代

    转自:http://blog.csdn.net/lojze_ly/article/details/49456255 聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不 ...

  2. centos添加用户并赋予 root管理员权限

     centos添加用户并赋予 root管理员权限 用centos时,root用户一般都是超级管理员使用的,一般不轻易给别人,但是有时候同事安装软件时需要root账号,又不得不给,只能重新建一个用户,并 ...

  3. could not parse as expression: "/login" (template: "include/include" - line 32, col 42)

    <li><a href="login.html" th:href="/login">登录</a></li> or ...

  4. 手机app测试要点(复制文)

    一.简介 移动应用App已经渗透到每个人的生活.娱乐.学习.工作当中,令人激动.兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中.各类智能终端也在快速发布,而开发者对于全球移动设备的质量和性能 ...

  5. 动图演示23个鲜为人知的VSCode快捷键

    动图演示23个鲜为人知的VSCode快捷键 原文地址:dev.to/devmount/23… 代码同步浏览器 安装vccode 安装live server插件 尽管我在VS Code中经常使用许多快捷 ...

  6. svn checkout使用

    (1)需要知道三个东西:svn路径和号码和密码. (2)svn导出的地方建立需要的目录,然后在不同目录下svn check out,输入正确的路径和号码和密码,这样就可以正常svn下来目录了.

  7. VNCserver 安装 及 oracle过程总结

    一.安装桌面系统 1.命令   yum grouplist ---列举系统中以组安装的包(组安装的包会包括很多,组安装一下就就可以安装很多附在的包.) 2.  yum groupinstall &qu ...

  8. Hibernate项目的基本步骤和一些错误提示

    以数据库中有一张user表为例: 1.编写POJO持久化类User.javaPOJO(Plain Old Java Objects),简单的Java对象.一个POJO类不用继承任何类,也无须实现任何接 ...

  9. crowdfunding项目01——感人的错误

    四十搭环境,半个小时下载jar包,网速感人,一个半小时找bug真是感动 首先SSM项目,主要功能进行增删改查 建立父工程和子工程,产生依赖关系 父工程:pom 子工程:jar.war(web工程) 错 ...

  10. vga显示原理即相关计算

    行扫描周期:完成一行扫描所需时间: 行时序时间(a,b,c,d,e):完成一个像素点显示得时间 场扫描周期:完成所有行(一帧扫描所需时间) 场时序时间(o,p,q,r,s):完成一行显示得时间,一个完 ...