论文:IoU Loss for 2D/3D Object Detection
摘要:在2D/3D目标检测任务中,IoU (Intersection-over- Union)作为一种评价指标,被广泛用于评价不同探测器在测试阶段的性能。然而,在训练阶段,通常采用常见的距离损失(如L1或L2)作为损失函数,以最小化预测值与真实值边界盒(Bbox)之间的差异。为了消除训练和测试之间的性能差距,在[1]和[2]中引入了IoU损失用于二维目标检测。不幸的是,所有这些方法都只适用于轴对齐的二维Bboxes,而不能应用于更一般的旋转Bboxes的目标检测任务。为了解决这个问题,我们首先研究了两个旋转Bbox的IoU计算,然后实现了一个统一的框架,IoU损失层用于二维和三维目标检测任务。通过将实现的 IoU损失集成到几个最先进的3D物体探测器中,在公共KITTI[3]基准上,2D检测和点云3D检测都取得了一致的改进。
- 记录这篇文章的原因,首先作者提出的iou理论上较于传统的更客观,其次他没公开源码,但是github有人进行了复现,论文中说要会提供源码这么多年了都没提供,挺难评的,但是还是感谢开源的力量,这里贴出别人非官方实现,实测代码没问题,用于学习和复现论文这篇论文还是有价值的。
引言
本文的主要贡献可以概括为:
- 我们研究了两个旋转2D和3D Bboxes的IoU损失计算;
- 我们为一般的2D和3D物体检测任务提供了一个统一的、独立于框架的IoU丢失层。
- 通过将IoU损耗层集成到几个最先进的3D物体检测框架中,如SEC-OND, PointPillars和Point R-CNN,其优势已在公共KITTI 3D物体检测基准上得到验证。
IOU

- 大多数2D检测任务都如图左边所示,通过计算得到iou配合数学函数max、min等,伪代码如下所示:轴向BBOX

旋转BBOX
- 如图的右边所示,轴向对齐的盒子并不适合在3D中表示目标物体,比如LiDAR点云中的物体,伪代码如下

IOU loss
在[1]和[2]中,IoU作为损失函数对于二维轴向BBox回归任务的有效性已经得到了很好的证明。从理论上讲,它也应该适用于旋转的BBox,因为唯一的区别是旋转的计算过程比轴对齐的计算过程更复杂。与[2]类似,我们将IoU损失定义为

针对旋转角度计算
- forward
-
- 计算Bd和Bg的面积,其中Bd和Bg分别代表预测的和真实的BBox;

-
- 确定Bd与Bg相交区域的顶点,有两种方法:一种是从两个BBox的边相交,另一种是从位于另一个BBox内的BBox的角。如果顶点不存在,则IoU值为零。
-
- 理论上,这些顶点形成一个凸壳。为了计算这个凸包的面积,我们需要按照逆时针(或顺时针)的顺序对顶点进行排序。首先,计算这些顶点的中心点。然后,计算每个顶点与中心形成的旋转角度。最后,通过旋转角度对顶点进行排序。
-
- 然后,通过将其划分为小的单个三角形来获得相交面积。根据Eq.(2)计算IoU值,通过Eq.(4)计算LIoU。
-
补充:GIOU
作为IoU的广义版本,GIoU已在b[2]中提出,用于处理两个形状没有相交的情况。在GIoU中,给出了确定两个不相交盒体之间距离的定义。一般来说,对于任意两个凸形状A, B,最小面积边界形状C定义为:同时包围A和B的最小凸形状。通常,C应与A和B共享相同的形状类型,以便于计算。最后,式中U = AreaA + AreaB−Areaoverlap。将GIoU定义为

相关文章:
论文:IoU Loss for 2D/3D Object Detection
摘要:在2D/3D目标检测任务中,IoU (Intersection-over- Union)作为一种评价指标,被广泛用于评价不同探测器在测试阶段的性能。然而,在训练阶段,通常采用常见的距离损失(如L1或L2)作为损失函数,以最小化预测值…...
2411mfc,修改按钮颜色
添加消息:ON_WM_CTLCOLOR() //在OnInitDialog()方法中添加{HWND hSatateWnd GetDlgItem(IDC_CHK)->GetSafeHwnd();SetWindowTheme(hSatateWnd, _T(""), _T(""));}头文件中: afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);HBRUSH O…...
互联网 Java 面试八股文汇总(2025 最新整理)
我分享的这份 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都…...
如何在 Ubuntu 中更新 Linux 内核
Linux内核是操作系统的基础,对操作系统的性能起着至关重要的作用。Linux开发人员通过补丁和更新不断增强内核,解决安全性、功能性和速度问题。及时了解这些发展对于确保机器以最佳方式运行至关重要。 本文教您如何使用三种不同的方法更新 Ubuntu 中的 L…...
FilterListenerAjax
今日目标: 能够使用 Filter 完成登陆状态校验功能能够使用 axios 发送 ajax 请求熟悉 json 格式,并能使用 Fastjson 完成 java 对象和 json 串的相互转换使用 axios + json 完成综合案例1,Filter 1.1 Filter概述 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、…...
27. 移除元素 C++
文章目录 一、题目链接二、参考代码三、所思所悟 一、题目链接 链接: 27. 移除元素 二、参考代码 思路1:找到需要移除的数组元素,将右侧全部元素向左覆盖 int removeElement(vector<int>& nums, int val) {int size nums.size();for (int …...
大模型专栏--Spring Ai Alibaba介绍和功能演示
Spring AI Alibaba 介绍和功能演示 背景 Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。…...
Redis设计与实现第17章 -- 集群 总结2(执行命令 重新分片)
17.3 在集群中执行命令 接收命令的节点会计算出命令要处理的数据库键属于哪个槽,并检查这个槽是否指派给了自己: 如果是的话,直接执行这个命令 否则,节点向客户端返回一个MOVED错误,指引客户端转向redirect至正确的节…...
微服务搭建----springboot接入Nacos2.x
springboot接入Nacos2.x nacos之前用的版本是1.0的,现在重新搭建一个2.0版本的,学如逆水行舟,不进则退,废话不多说,开搞 1、 nacos2.x搭建 1,首先第一步查询下项目之间的版本对照,不然后期会…...
3.建立本地仓库及常用命令
1.建立本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 1)在电脑的任意位置创建一个空目录,作为我们的本地Git仓库 2)进入这个目录,右键点击Git Bash 窗口 3)执行命令git init 4) 如果创…...
linux arm下获取屏幕事件(rk3588)
1、找到屏幕设备名称 cat /proc/bus/input/devices我的屏幕设备是ILITEK ILITEK-TP,它的设备名称是event1. 2、读取屏幕事件。 方法1: cat /dev/input/event1 | hexdump方法2: 3、c代码实现 #include <stdio.h> #include <unis…...
【机器学习】人工智能与气候变化:利用深度学习与机器学习算法预测和缓解环境影响
📝个人主页:哈__ 期待您的关注 目录 🔥引言 1.1 背景介绍 1.2 人工智能与机器学习的崛起 1.3 本文内容概述 🔨气候变化的挑战 2.1 现今气候变化带来的影响和挑战 2.2 引发关注的气候变化趋势和数据 🤖人工智能…...
物联网射频识别和RFID开发(二):RFID原理及硬件组成
一、RFID无线识别的原理 (一)读写器与标签之间的无线电波交互方式 1、电感耦合 2、电磁反向散射耦合 (二)标签是如何将数据反馈给读写器的 1、电感耦合中的负载调试 2、电磁反向散射耦合中的负载调制 二、RFID无线通信中的调制…...
LeetCode763. 划分字母区间(2024冬季每日一题 23)
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 示例 1&a…...
python调用GPT-4o实时音频 Azure OpenAI GPT-4o Audio and /realtime
发现这块网上信息很少,记录一下 微软azure入口 https://learn.microsoft.com/zh-cn/azure/ai-services/openai/realtime-audio-quickstart?pivotsprogramming-language-ai-studio sdk文档 https://github.com/azure-samples/aoai-realtime-audio-sdk?tabread…...
Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署
文章目录 前言一、Zookeeper单机部署(手动部署)1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…...
LuaJava
一、什么是LuaJava LuaJava是一个Java脚本工具。该工具的目标是允许用Lua编写的脚本操纵用 Java开发的组件。LuaJava允许使用与访问Lua的本机对象相同的语法从Lua访问Java组件,而不需要任何声明或任何类型的预处理。 LuaJava还允许在Lua中实现任何Java接口&#x…...
Maven下载安装、环境配置(超详细)(包括Java环境配置(Windows)、在IDEA中配置Maven)
目录 一、引言 二、下载和安装 Maven (1)首先保证 Java 的环境是正常的。 1、电脑桌面上右击 " 此电脑 ",点击属性。 2、点击高级系统设置。 3、点击环境变量。 4、找到系统变量中的 Path。 5、点击新建,然后把想要配置…...
Python中的实例方法、静态方法和类方法三者区别?
1、实例方法 不用classmethod和staticmethod修饰的方法为实例方法。在类中定义的方法默认都是实例方法。实例方法最大的特点是它至少要包含一个self参数,用于绑定调用此方法的实例对象,实例方法通常可以用类对象直接调用。 2、类方法 采用classmethod…...
【学习Go编程】
了解Go语言的基本概念: 学习Go的基本语法、数据类型、控制结构等。可以参考官方文档或基础教程来入门。 安装Go环境: 访问Go语言的官方网站,下载并安装适合你操作系统的Go编程环境。配置好环境变量,确保可以在命令行中使用go命令…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
