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中return语句用法实例分析
Aug 04 Python
python+Django+apache的配置方法详解
Jun 01 Python
Python正则表达式使用范例分享
Dec 04 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
Dec 25 Python
Python 使用PIL numpy 实现拼接图片的示例
May 08 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
了解一下python内建模块collections
Sep 07 Python
浅析Python实现DFA算法
Jun 26 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
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
PHP整合PayPal支付
2015/06/11 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
超全面的JavaScript开发规范(推荐)
2017/01/21 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
Vue 进阶教程之v-model详解
2017/05/06 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Python实现TCP通信的示例代码
2019/09/09 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
报到证丢失证明
2014/01/11 职场文书
档案检查欢迎词
2014/01/13 职场文书
2014年人事科工作总结
2014/11/19 职场文书
避暑山庄导游词
2015/02/04 职场文书
酒店辞职书范文
2015/02/26 职场文书
入伍通知书
2015/04/23 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android