python实现IOU计算案例


Posted in Python onApril 12, 2020

计算两个矩形的交并比,通常在检测任务里面可以作为一个检测指标。你的预测bbox和groundtruth之间的差异,就可以通过IOU来体现。很简单的算法实现,我也随便写了一个,嗯,很简单。

1. 使用时,请注意bbox四个数字的顺序(y0,x0,y1,x1),顺序不太一样。

#!/usr/bin/env python
# encoding: utf-8
 
def compute_iou(rec1, rec2):
  """
  computing IoU
  :param rec1: (y0, x0, y1, x1), which reflects
      (top, left, bottom, right)
  :param rec2: (y0, x0, y1, x1)
  :return: scala value of IoU
  """
  # computing area of each rectangles
  S_rec1 = (rec1[2] - rec1[0]) * (rec1[3] - rec1[1])
  S_rec2 = (rec2[2] - rec2[0]) * (rec2[3] - rec2[1])
 
  # computing the sum_area
  sum_area = S_rec1 + S_rec2
 
  # find the each edge of intersect rectangle
  left_line = max(rec1[1], rec2[1])
  right_line = min(rec1[3], rec2[3])
  top_line = max(rec1[0], rec2[0])
  bottom_line = min(rec1[2], rec2[2])
 
  # judge if there is an intersect
  if left_line >= right_line or top_line >= bottom_line:
    return 0
  else:
    intersect = (right_line - left_line) * (bottom_line - top_line)
    return (intersect / (sum_area - intersect))*1.0
 
 
if __name__=='__main__':
  rect1 = (661, 27, 679, 47)
  # (top, left, bottom, right)
  rect2 = (662, 27, 682, 47)
  iou = compute_iou(rect1, rect2)
  print(iou)

补充知识:基于Python实现的IOU算法---最简单易懂的代码实现

概念介绍:

交并比:(Intersection over Union)

python实现IOU计算案例

如上图所示,IOU值定位为两个矩形框面积的交集和并集的比值。即:

python实现IOU计算案例

交并比的实现也是非常简单的,执行过程如下:

python实现IOU计算案例

1. 交集形状的宽度计算为:

IOU_W = min(x1,x2,x3,x4)+w1+w2-max(x1,x2,x3,x4)

2. 交集形状的高度计算为:

IOU_H = min(y1,y2,y3,y4)+h1+h2-max(y1,y2,y3,y4)

其实是很简单的几何关系变换,上面的图可以帮助你很好的理解这个意思。

代码实现:001-IOU计算

以上这篇python实现IOU计算案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
Flask框架实现给视图函数增加装饰器操作示例
Jul 16 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
python中字典增加和删除使用方法
Sep 30 Python
Python pickle模块常用方法代码实例
Oct 10 Python
教你漂亮打印Pandas DataFrames和Series
May 29 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 #Python
python 已知三条边求三角形的角度案例
Apr 12 #Python
python实现输入三角形边长自动作图求面积案例
Apr 12 #Python
Python3如何判断三角形的类型
Apr 12 #Python
Python判断三段线能否构成三角形的代码
Apr 12 #Python
Python 实现打印单词的菱形字符图案
Apr 12 #Python
python 使用while循环输出*组成的菱形实例
Apr 12 #Python
You might like
分享自定义的几个PHP功能函数
2015/04/15 PHP
PHP实现支持加盐的图片加密解密
2016/09/09 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
如何动态加载外部Javascript文件
2015/12/02 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
Django 批量插入数据的实现方法
2020/01/12 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
Django封装交互接口代码
2020/07/12 Python
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
大学三年计划书范文
2014/04/30 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
助学感谢信范文
2015/01/21 职场文书
英语通知范文
2015/04/22 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
配置nginx 重定向到系统维护页面
2021/06/08 Servers
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android