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使用PIL库实现验证码图片的方法
Mar 11 Python
python将回车作为输入内容的实例
Jun 23 Python
Django的models中on_delete参数详解
Jul 16 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
python实现倒计时小工具
Jul 29 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
Python 识别12306图片验证码物品的实现示例
Jan 20 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
Python字典取键、值对的方法步骤
Sep 30 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
人族 Terran 基本策略
2020/03/14 星际争霸
php 删除无限级目录与文件代码共享
2008/11/22 PHP
php win下Socket方式发邮件类
2009/08/21 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
Track Image Loading效果代码分析
2007/08/13 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
个人简历自我鉴定
2013/10/11 职场文书
自荐信的格式
2014/03/10 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
oracle数据库去除重复数据
2022/05/20 Oracle