辅助功能IOU(交并比)_3.2

  • 实现两个目标框的交并比
  • 候选框在多目标跟踪中的表达方式及相应转换方法

IOU(Intersection over Union),“交并比”,是计算机视觉和图像处理中常用的一个评价指标,尤其在目标检测任务中用来衡量模型预测的目标框与真实目标框的重合程度。

具体计算方法如下:

  1. 首先计算预测框(Prediction Box)和真实框(Ground Truth Box)的交集区域面积(Intersection Area)。

  2. 然后分别计算预测框和真实框各自的总面积(Union Area)。

  3. 最后,IOU的值就是交集区域面积除以并集区域面积:

    IOU = (Intersection Area) / (Union Area) = (预测框与真实框交集面积) / (预测框面积 + 真实框面积 - 预测框与真实框交集面积)

IOU的取值范围在0到1之间,IOU值越接近1,说明预测框与真实框的重合度越高,模型预测效果越好;反之,IOU值越小,则表示预测效果越差。在许多目标检测任务中,通常会设定一个阈值(如0.5),只有IOU大于该阈值的结果才会被视为有效预测。

也是目标检测中使用的一个概念是产生的候选框(candidate bound)与原标记框(ground truth bound)的交叠率,即它们的交集与并集的比值。最理想情况是完全重叠,即比值为1。在多目标跟踪中,用来判别跟踪框和目标检测框之间的相似度。

1.计算交并比

IoU是两个区域的交除以两个区域的并得出的结果

def iou(bb_test, bb_gt):"""在两个box间计算IOU:param bb_test: box1 = [x1y1x2y2]:param bb_gt: box2 = [x1y1x2y2]:return: 交并比IOU"""xx1 = np.maximum(bb_test[0], bb_gt[0])yy1 = np.maximum(bb_test[1], bb_gt[1])xx2 = np.minimum(bb_test[2], bb_gt[2])yy2 = np.minimum(bb_test[3], bb_gt[3])w = np.maximum(0., xx2 - xx1)h = np.maximum(0., yy2 - yy1)wh = w * ho = wh / ((bb_test[2] - bb_test[0]) * (bb_test[3] - bb_test[1]) + (bb_gt[2] - bb_gt[0]) * (bb_gt[3] - bb_gt[1]) - wh)return o

2.候选框的表示形式

在该项目中候选框有两种表示形式:

  • [x1,y1,x2,y2] 表示左上角坐标和右下角坐标,目标检测的结果以该方式表示
  • [x,y,s,r]表示中心点坐标,s 是面积尺度,r是纵横比,卡尔曼滤波器中进行运动估计是使用该方式。

这两种方式要进行相互的转换。

  • 将候选框从坐标形式转换为中心点坐标和面积的形式

def convert_bbox_to_z(bbox):"""将[x1,y1,x2,y2]形式的检测框转为滤波器的状态表示形式[x,y,s,r]。其中x,y是框的中心坐标,s是面积,尺度,r是宽高比:param bbox: [x1,y1,x2,y2] 分别是左上角坐标和右下角坐标:return: [ x, y, s, r ] 4行1列,其中x,y是box中心位置的坐标,s是面积,r是纵横比w/h"""w = bbox[2] - bbox[0]h = bbox[3] - bbox[1]x = bbox[0] + w / 2.y = bbox[1] + h / 2.s = w * hr = w / float(h)return np.array([x, y, s, r]).reshape((4, 1))

  • 将候选框从中心面积的形式转换为坐标的形式

def convert_x_to_bbox(x, score=None):"""将[cx,cy,s,r]的目标框表示转为[x_min,y_min,x_max,y_max]的形式:param x:[ x, y, s, r ],其中x,y是box中心位置的坐标,s是面积,r:param score: 置信度:return:[x1,y1,x2,y2],左上角坐标和右下角坐标"""w = np.sqrt(x[2] * x[3])h = x[2] / wif score is None:return np.array([x[0] - w / 2., x[1] - h / 2., x[0] + w / 2., x[1] + h / 2.]).reshape((1, 4))else:return np.array([x[0] - w / 2., x[1] - h / 2., x[0] + w / 2., x[1] + h / 2., score]).reshape((1, 5))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(附源码)基于Spring Boot + Vue的招聘平台设计与实现

前言 💗博主介绍:✌专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2024年Java精品实战案例《100套》 🍅文末获取源码联系🍅 &#x1f31…

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖(刷新)5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…

【windows】安装 Tomcat 及配置环境变量

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

【学习】Python库addict,使用Dict 的类

from addict import Dict 这行代码导入了 Dict 类,它来自于 addict 模块。在这个上下文中,addict 是一个 Python 库,它提供了一个名为 Dict 的类,用于创建可通过属性访问的字典对象。 使用 addict 中的 Dict 类可以方便地创建字典…

【大模型】VS Code(Visual Studio Code)上安装的扩展插件用不了,设置VS Code工作区信任

文章目录 一、找到【管理工作区信任】二、页面显示处于限制模式,改为【信任】三、测试四、总结 【运行环境】win 11 相关文章: 【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程 【问题】之前在 VS Code上安装 CodeGeeX 插件后&…

Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog

QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口,从而实现复杂的用户界面。 特性 提供了窗口的基本功能,包括绘制、事件处理、…

Linux命令学习入门

文章目录 登录注销关机重启Vim编辑器快捷键文件目录类打包、解包、压缩和解压指令输出重定向>和追加>>指令时间日期类搜索查找类用户管理文件所有者所在组权限管理变更权限crond任务时间调度crond相关指令:特殊符号说明: at定时任务磁盘分区磁盘…

作用域闭包

一、闭包的概念 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数时在当前词法作用域之外执行。 下面用一些代码来解释这个定义。 function foo(){var a 2;function bar() {console.log(a);}bar(); }foo();这段代码看起来和嵌套作用域…

记录三菱:Works2-FB块

创建一个FB块,启保停,定义输入输出引脚,注意这里的数据类型是Bit 打开主程序,将FB块拖出来 启保停:加入时间设定,时间显示倒着

nginx集群部署访问不了怎么解决

如果你的Nginx集群部署无法访问,可能有多种原因导致,以下是一些常见的解决方法: 检查网络连接:确保服务器之间的网络连接是正常的,可以通过ping命令或telnet命令检查服务器之间的网络连通性。 检查防火墙设置&#xff…

docker基础(四)之docker run(第一弹)

目录 概述语法命令选项用法速查OPTIONS说明:-a stdinSTDIN/STDOUT/STDERR指的是什么?举例将容器的标准输入、标准输出、标准错误重定向到本地文件将容器的标准流重定向到设备将容器的标准流重定向到网络 -d示例应用场景返回的容器ID作用怎么通过容器ID查…

基于C/C++的easyx实现贪吃蛇游戏

文章目录: 一:运行效果 1.演示 2.思路和功能 二:代码 文件架构 Demo 必备知识:基于C/C的easyx图形库教程 一:运行效果 1.演示 效果图◕‿◕✌✌✌ 基于C/C的easyx实现贪吃蛇游戏运行演示 参考:【C语…

5.5.5、【AI技术新纪元:Spring AI解码】使用PGvector设置向量存储及进行相似性搜索

使用PGvector设置向量存储及进行相似性搜索 本节指导您如何设置PGvector VectorStore来存储文档嵌入并执行相似性搜索。 PGvector是一个开源的PostgreSQL扩展,能够支持存储和搜索机器学习生成的嵌入向量,提供查找精确和近似最近邻的功能。它设计得与PostgreSQL的其他特性无…

Oracle:ORA-01830错误-更改数据库时间格式

1,先把报错SQL语句拿出来执行,看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2,然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”(正确格式)。; 执行: SELECT * FRO…

citus的快速开始

准备 dockercitus最新版本(docker pull citusdata/citus) docker网络 docker network create --subnet172.72.9.0/24 citus-test docker network ls启动citus服务 启动协调节点 docker run -dit --name citus-cod -p 5433:5432 -e POSTGRES_PASSWOR…

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别)

Self-Attention和RNN、LSTM的区别 RNN的缺点:无法做长序列,当输入很长时,最后面的输出很难参考前面的输入,即长序列会缺失上文信息,如下: 可能一段话超过50个字,输出效果就会很差了 LSTM通过忘…

【SAP-ABAP】CO01保存时错误DBSQL_DUPLICATE_KEY_ERROR

找到该表的主键OBJNR,事务代码SM56中查看当前缓冲到该key的号码段,事务代码SNRO修改对象名称OBJNR编号范围状态。 事务代码SM13查看数据更新记录

静态路由实验配置

题目及实验图 第一步划分IP IP配置如下 1&#xff09;R1&#xff1a; <Huawei>sy Enter system view, return user view with CtrlZ. [Huawei]sy R1 [R1]int g 0/0/0 [R1-GigabitEthernet0/0/0]ip ad 192.168.1.1 30 [R1-GigabitEthernet0/0/1]ip ad 192.168.1.5…

LeetCode 热题 HOT 100(P21~P30)

系列文章&#xff1a; LeetCode 热题 HOT 100(P1~P10)-CSDN博客 LeetCode 热题 HOT 100(P11~P20)-CSDN博客 LeetCode 热题 HOT 100(P21~P30)-CSDN博客 LC48rotate_image . - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个 n n 的二维矩阵 matrix 表…

for循环三种跳出循环的方法(retrun、continue、break)

return return是最常用的&#xff0c;不能单独在for循环中使用&#xff0c;要在函数中配合使用。 function fn () {for (var i 1; i < 5; i) {if (i 4) {return false;}console.log(i); // 分别输出 1&#xff0c;2, 3}console.log(end); // 未执行 } fn();使用return会…