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 相关文章推荐
使用url_helper简化Python中Django框架的url配置教程
May 30 Python
Python爬取京东的商品分类与链接
Aug 26 Python
python daemon守护进程实现
Aug 27 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
python 重定向获取真实url的方法
May 11 Python
python实现批量注册网站用户的示例
Feb 22 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
DRF使用simple JWT身份验证的实现
Jan 14 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 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
会计大学生职业生涯规划书范文
2014/01/13 职场文书
小区消防演习方案
2014/02/21 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
分公司负责人任命书
2014/06/04 职场文书
英语课前三分钟演讲稿
2014/08/19 职场文书
大型公益活动策划方案
2014/08/20 职场文书
期末个人总结范文
2015/02/13 职场文书
教学督导岗位职责
2015/04/10 职场文书
房屋所有权证明
2015/06/19 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS