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从入门到精通(DAY 1)
Dec 20 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
TensorFlow如何实现反向传播
Feb 06 Python
理论讲解python多进程并发编程
Feb 09 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
python脚本定时发送邮件
Dec 22 Python
pytorch查看网络参数显存占用量等操作
May 12 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
一个改进的UBB类
2006/10/09 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
python函数返回多个值的示例方法
2013/12/04 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
python关闭占用端口方式
2019/12/17 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
python Tensor和Array对比分析
2020/01/08 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
自我鉴定怎么写
2014/01/12 职场文书
模具数控专业自荐信
2014/01/27 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
有创意的广告词
2014/03/18 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
升学宴来宾致辞
2015/07/27 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
Python爬取某拍短视频
2021/06/11 Python