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 相关文章推荐
python3使用tkinter实现ui界面简单实例
Jan 10 Python
Python简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
python 根据正则表达式提取指定的内容实例详解
Dec 04 Python
Python 文件处理注意事项总结
Apr 10 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
详解Python中where()函数的用法
Mar 27 Python
TensorFlow实现卷积神经网络
May 24 Python
详解Python在使用JSON时需要注意的编码问题
Dec 06 Python
django框架ModelForm组件用法详解
Dec 11 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
Python实现http接口自动化测试的示例代码
Oct 09 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二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
python求列表交集的方法汇总
2014/11/10 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python构造函数init实例方法解析
2020/01/19 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
体育老师的教学自我评价分享
2013/11/19 职场文书
出纳员岗位责任制
2014/02/11 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android