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. 树莓派操作案例1-使用python GPIO+TB6612驱动步进电机

    原理图: 接口说明 A控制信号输入------PWMA               VM ------电机驱动电压输入端(4.5V-15V) A电机输入端2 ------AIN2           ...

  2. openstack入门及应用

    一.OpenStack云计算的介绍 (一)云计算的服务类型 IAAS:基础设施即服务,如:云主机 PAAS:平台即服务,如:docker SAAS:软件即服务,如:购买企业邮箱,CDN 传统IT IA ...

  3. 使用TensorFlow训练模型的基本流程

    本文已在公众号机器视觉与算法建模发布,转载请联系我. 使用TensorFlow的基本流程 本篇文章将介绍使用tensorflow的训练模型的基本流程,包括制作读取TFRecord,训练和保存模型,读取 ...

  4. python:删除文件及文件夹

    #!/usr/bin/python# -*- coding:utf-8 -*- import os import shutil os.remove(path) #删除文件shutil.rmtree(p ...

  5. git的安装方法

    下载:https://git-scm.com/downloads

  6. Winfrom控件 特效

    链接:https://pan.baidu.com/s/1O9e7sxnYFYWD55Vh5fxFQg 提取码:5cey 复制这段内容后打开百度网盘手机App,操作更方便哦 Winfrom控件查询手册. ...

  7. 期货homes平台以及仿ctp接口

    实盘账户或者模拟账户可以下挂多个子账户 子账户也可以是homes母账户,理论上可以一层一层套下去. 所有交易细节全部保存,收盘定时结算. 功能很强大,并且还有很多拓展空间. 连接homes平台,需要用 ...

  8. centos 7安装jdk8

    前提 执行安装的当前用户为root 下载安装包 现在oracle官网下载jdk需要登录才可以下载,故下载安装包比较麻烦.下载地址: http://www.oracle.com/technetwork/ ...

  9. JS点击显示隐藏内容

    JS点击显示隐藏密码 思路:获取元素,判断点击,如果DIV显示就隐藏,如果DIV隐藏就显示出来. 1 if(DIV是显示的){ 2 div.style.display='none'; 3 } 4 el ...

  10. maskrcnn实现.md

    mask rcnn学习 Mask R-CNN实现(https://engineering.matterport.com/splash-of-color-instance-segmentation-wi ...