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小程序
Aug 15 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
python 平衡二叉树实现代码示例
Jul 07 Python
详解用Python实现自动化监控远程服务器
May 18 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
如何使用Python自动控制windows桌面
Jul 11 Python
Django之创建引擎索引报错及解决详解
Jul 17 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
python 实现压缩和解压缩的示例
Sep 22 Python
Django自带的用户验证系统实现
Dec 18 Python
如何利用python和DOS获取wifi密码
Mar 31 Python
Python学习之包与模块详解
Mar 19 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP无限分类(树形类)
2013/09/28 PHP
PDO::inTransaction讲解
2019/01/28 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
许愿墙中用到的函数
2006/10/07 Javascript
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Python文字截图识别OCR工具实例解析
2020/03/05 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
html5 学习简单的拾色器
2010/09/03 HTML / CSS
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
退休感言
2014/01/28 职场文书
五一手机促销方案
2014/03/08 职场文书
教师师德考核自我评价
2014/09/13 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
青岛海底世界导游词
2015/02/11 职场文书
观后感的写法
2015/06/19 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers