PAI3D: Painting Adaptive Instance-Prior for 3D Object Detection论文讲解

news2024/11/26 17:35:15

PAI3D: Painting Adaptive Instance-Prior for 3D Object Detection论文讲解

  • 1. 引言
  • 2. PAI3D框架
      • 2.1 Instance Painter
      • 2.2 Adaptive Projection Refiner
      • 2.3 Fine-granular Detection Head
  • 3. 实验结果
    • 3.1 消融实验

1. 引言

3D目标检测对于自动驾驶来说是一个非常重要的模块,主车通过检测得到的结果去进行后续的避障决策和路径规划。常用的传感器包括雷达,相机以及毫米波等,目前来说,单雷达传感器的感知能力已经能达到业界比较领先的水平,在多个大型的自动驾驶数据集上均能达到非常好的检测效果。但是因为雷达本身数据的稀疏属性,导致他在一些场景下表现得不太好,比如对于远处的物体,雷达能打到物体上的点非常少,或者是一些体型较小的物体,能被扫到的点也比较少,这就是检测任务带来的一定的难度,而单目视觉检测在这一方面有独特的优势,所以近些年来,大家都在研究雷达和相机两种互补的数据类型的融合检测。两种模态的数据融合面临比较大的挑战有两方面,一个是传感器数据的对齐,另外一个是模型的算力问题;为了解决这两个难题,目前已有的方法采用预测图像的类别标签,然后和点云做融合来进行检测,比如point painting,fusion painting,但是对于3D检测任务来说,他还是更关注实例之间的区别和信息,而这些方法忽略了从图像上获取实例级别的信息,也导致在后续的检测任务中很难明确的获取的物体之间的区别去指导学习任务,尤其在同类别之间的检测。基于此,我们提出了一种实例painting的检测方法,在nusense的测试集上做实验,mAP和NDS两个指标上均能超过当时已有的sota方法,并且有较高的性能,能够快速轻松的部署到实际车端上,该方法简单有效。不管在学术领域还是在工业领域都有着较大的意义。

2. PAI3D框架

在这里插入图片描述

Pai3D包含3个模块:

一个是instance painter,主要是从图像中预测每个实例的标签和instance mask,然后点云通过传感器之间的标定信息由3d投影到2d图像上,得到每个point对应的instance 信息。
但是有时候由于传感器之间的标定误差以及雷达和相机之间信息的不同步会造成投影有较大的偏差,为了纠正这个偏差,我们设计了一个Adaptive Projection Refiner 模块去做这个事情,保证我们最后能输出较为准确的painting信息,去做后面的检测任务。
在实际的检测任务中,不同的类别之间的尺寸差异较大,比如说一个行人和一个大卡车,如果只是从单一的feature map和detection head去做检测,效果会不那么理想,所以我们提出了一种基于多feature map的Fine- granular Detection Head 去解决这个问题
在这里插入图片描述

2.1 Instance Painter

接下来为大家介绍一下instance painter这个模块,这个模块主要是为了得到点云在2D图像上的instance mask信息和他的semantic 标签,以作为下一个模块的输入。
在这里插入图片描述

首先使用一个实例分割器对图像做实力分割,得到每个像素的实例信息,包括他的语义信息和mask信息,然后根据传感器之间的标定关系将3D点云图像投影到对应的2Drgb图像上,得到点云对应的像素的实例信息,就比如说这个点落在了一辆cyclist上,那么这个点的语义信息就是cyclist,因为做的是实例分割,所以每个实例之间是有区分的,所以最后我们得到的点云的paintig信息就是这样的,这几个点被paintig上cyclist的信息,这几个点被painting上的是第一辆车的信息,然后剩余这几个点被paintig上的是第二车的信息。
但是在这个过程中也会遇到一些问题,比如说图像的重叠问题,那么一个点云就会有两个实例信息,这个时候我们会选取confidence score比较高的那个instance作为最后的结果。
大家应该发现了,在投影paiting的过程中,会有一些建筑物上的点云被投影到实例上,打上车的标签,这是由于标定信息的不准确以及传感器之间不同步所造成的,这会给我们后期的任务造成一定的影响,我们下一个模块将会来解决这个问题

2.2 Adaptive Projection Refiner

在这里插入图片描述
除了标定误差和传感器之间的不同步的影响因素,3D空间到2D空间的投影路径,也会导致3D中锥形的空间所有物体全部投影到2D的某一部分平面上,造成投影误差,就比如说这个误投影到建筑物上的点,因为我们后期需要用到这个实例的center信息,如果以这种方式去算这个物体的center,就会得到一个错误的结果,就是这个红色的点,而正确的物体的中心点应该在物体的内部,即下面这个黄色的点,为了解决这个问题,我们使用一种Salient Cluster Detection 的方法去做一个聚类,得到不同的cluster,然后怎么去选择正确的cluster呢,我们知道雷达的成像原理是,激光射出去后遇到的第一个障碍物即往回反射,而同一个物体不可能在空间上出现分裂,基于这一个先验知识,我们选择离雷达最近的那个cluster作为正确的物体,而远处的就抛弃掉,然后基于这个正确的cluster去做center的计算。最终得到的数据类型就是,前四维还是点云的原始信息,后面几维是物体类别的one hot编码,最后3维是物体的center信息,xyz。然后作为模型的输入。为了给这几维信息中,对最终检测结果有较大贡献的几个channel给予较高的权重,我们用了一个attention模块去做这么个事情,然后就是常规的3D检测模块,点云的voxelization,point pillar和voxel的encoder,2D或者3D的backbone。

2.3 Fine-granular Detection Head

在这里插入图片描述
常规的检测方法是使用单一的feature map,然后所有的类别使用同一个deteciton head去做检测,但是我们所检测的物体之间的尺寸差异较大,从大卡车到行人,他们之间的特征提取很难做到统一化提取,所以我们使用一种基于多feature map的不同粒度检测head去解决这个问题,具体的做法就是当backbone接fpn出来后,我们在尺寸较大的feature map上去接检测物体尺寸较小的物体,因为这一层的feature map能保留更多细节信息,对小物体的检测较为友好,然后在中间这一层的feature map再接一个检测头去检测一些中型物体,比如汽车或者小型卡车,在最后一层feature map去检测较大的物体,因为他的感受野比较大,能够看到更多的信息,比较有理由大尺寸物体的检测。

3. 实验结果

在这里插入图片描述

我们可以看下实验结果,我们实验的数据集是自动驾驶领域权威的数据集,nusencese,它的数据集包含多达700个不同场景的数据,共计40w帧数据。左边这个表格是我们和目前比较前沿方法的对比,可以看到我们在这些方法中,无论是mAP和nds指标,都是最高的;右边是nusense世界级别的榜单,然后我们这个方法是在不使用额外数据的多模态方法中是当时排名第一的。

3.1 消融实验

在这里插入图片描述
这是我们对不同的feature所做的消融实验,我们的basecode是counterpoint,第一行是他们论文的结果,第二行是我们复现的结果,会比他们公布的高接近两个点,我们后续的实验都是基于这个baseline去做的比较,FDH是我们多粒度检测头的那个feature,可以看到这个feature能够长0.5个点,IP是前面所讲到的instance painter,这个大模块整体涨点11.5个点,我们对他做了拆分,分别去验证semantic lable以及instance center所带来的收益,可以看到sementic label能涨9.6个点,instence center能涨1.9个点,效果还是比较可观的,APR是做了矫正投影所带来偏差的那个feature,有实验结果能看出,涨点0.4个点。FPA是一个数据增强的方法,false positive augmentention,就是我们在训练的过程中会随机粘贴那些false positive(识别错误,较难识别的证样本)的样本,以增强模型对这些较难识别的正样本的学习能力,然后这个feature能涨大概0.2个点。最终再不使用tta的方法时,我们的模型能够达到64.7.

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

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

相关文章

wsl ubuntu 安装Anaconda3步骤

如何在Ubuntu上安装Anaconda3呢?本章记录整个安装过程。 1、下载脚本 https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh 下载之后,将脚本上传到Ubuntu里。 2、安装脚本 bash Anaconda3-2021.11-Linux-x86_64.sh根据提示进行安装,提示输…

NIVision-LabVIEW在灰度图上画圆

问题来源 在csdn上看到的这样一个问题,好像也没个正经答案,都用chatGPT回答,挺没劲的。不说提供个vi源代码,至少也来张截图嘛。我想着问题也不难,就自己动动手吧。 代码展示1 1、首先使用imaq ArrayToImage.vi创建了一…

抖音微短剧小程序源码搭建:实现巨量广告数据高效回传

在数字化营销日益盛行的今天,抖音微短剧小程序已成为品牌与观众互动的新渠道。这些短小精悍的剧目不仅能迅速抓住用户的注意力,还能有效提升品牌的知名度和用户黏性。然而,想要充分利用这一营销工具,关键在于如何高效地追踪广告数…

effective java (1)(考虑使用!)静态工厂方法代替构造方法

只是目前阶段 对本书第一章内容的浅显认知,说实话 这一章 我看了4遍左右,每一遍感觉都不一样 他的创建模式 有时候像设计模式,但作者已经在原文中描述,它并不等价于 设计模式 我们正常 创建一个年级类 是长这样的 我们不写成标准…

day57---面试专题(框架篇)

框架篇 1. Spring refresh 流程 要求 掌握 refresh 的 12 个步骤Spring refresh 概述 refresh 是 AbstractApplicationContext 中的一个方法,负责初始化 ApplicationContext 容器,容器必须调用 refresh 才能正常工作。它的内部主要会调用 12 个方法,我们把它们称为 refre…

【期末速成】计算机操作系统 EP02 | 学习笔记

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️2.1 考点二:操作系统的功能及接口2.2 考点三:操作系统的发展及分类2.2 考点四:操作系统的运行环境(重要) 一、前言&#x…

LabVIEW航空用电缆检测

系统通过集成LabVIEW平台,实现了航空用电缆检测过程中的自动数据收集、处理和报告生成,显著提升了检测效率和数据准确性,降低了人工干预,提高了电缆检测的可靠性。 项目背景 在航空领域,电缆的质量检测对确保飞机及其…

【Python】已解决:TypeError: Object of type JpegImageFile is not JSON serializable

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:TypeError: Object of type JpegImageFile is not JSON serializable 一、分析问题背景 在进行Python编程时,特别是处理图像数据和JSON序列化时&…

星光云720全景VR系统源码

星光云720全景VR系统源码 系统体验地址项目介绍JDK版本后端主要依赖前端框架前端node 版本用户端框架介绍技术选型依赖全景内容简介系统图片部分功能截图系统体验地址 系统体验地址 VR全景系统体验地址 账号:18175760278 密码:12345678 项目介绍 JDK版…

如何应对pcdn网络拥塞和设备性能限制?

应对PCDN网络拥塞和设备性能限制,可以采取以下操作: 一、应对网络拥塞 1.优化路由选择:通过选择最优的路由路径,降低数据包在传输过程中的拥堵概率,从而减少网络拥塞的发生。 2.流量控制与调度: 3.流量…

安装 Kali NetHunter (完整版、精简版、非root版)、实战指南、ARM设备武器化指南、andrax、安卓渗透drozer

From:https://www.kali.org/docs/nethunter/ NetHunter 实战指南:https://www.vuln.cn/6430 乌云 存档:https://www.vuln.cn/wooyundrops 1、Kali NetHunter Kali NetHunter 简介 Net(网络),hunter&#x…

Animate软件基础:从图层文件夹复制帧

图层文件夹是用来对图层进行管理的功能,可以参考系统中文件夹的作用,而且同样可以多重文件夹进行放置,直接使用鼠标拖动就可以改变文件夹的位置和所属层级: 要选择整个文件夹,请折叠文件夹(单击时间轴中文件…

一篇大模型 Agent 工具使用全面研究综述

使用大型语言模型(LLMs)进行工具学习已成为增强LLMs能力以解决高度复杂问题的一个有希望的范式。尽管这一领域受到越来越多的关注和快速发展,但现有的文献仍然分散,缺乏系统性的组织,为新来者设置了进入障碍。因此对LL…

chatTTS 最强文字转语音模型本地部署!

今天本地部署了下传说中的语音合成大模型chatTTS,合成效果非常不错,比市面上其他工具合成的感情更丰富,语气更自然一些,一起来听听。 英文: React apps are made out of components. A component is a piece of the UI…

【Vue】Vue.js中常见的几种语法

在 Vue.js 中,主要的语法可以分为以下几种: 插值语法 (Interpolation) 使用双大括号 {{ }} 进行文本插值。 示例: {{ message }} 指令语法 (Directives) 指令是特殊的标记,用于告诉Vue框架如何操作DOM。Vue提供了多种内置指…

elasticsearch导出和导入数据

这里我使用的是离线操作的方式, 前提:安装了node, 安装elasticdump命令: npm install elasticdump -g 安装成功后进入elasticdump所在的目录: cd /usr/local/nodejs/lib/node_modules/elasticdump/bin 导出目标索引的映射结构…

黄子韬直播风暴揭秘经济人风波

黄子韬直播风暴:揭秘经纪人风波,真诚道歉小马丁6月27日晚,娱乐圈再次掀起波澜,黄子韬在直播中罕见地谈及了去年那场业界的经纪人风波,并意外地再次回应了与DJ小马丁的演出争议,这无疑让广大粉丝和网友们热血…

QT QThread 线程类的使用及示例

QThread 是 Qt 框架提供的一个用于处理多线程的类,它允许开发者编写具有并发功能的应用程序,提高程序的响应速度、执行效率和用户体验。 在操作系统中,线程是进程内的执行单元,拥有独立的执行路径。每个线程有自己独立的栈空间&a…

压缩pdf在线工具,压缩pdf大小的软件

如何有效地压缩PDF文件大小却是个问题,为了获得最佳的压缩效果,我们必须依赖专业的压缩工具,采用错误的方法可能会对文件内容产生负面影响,甚至导致文件无法打开,今天,我将分享一些独特的压缩技巧&#xff…

Spark基于DPU的Native引擎算子卸载方案

1.背景介绍 Apache Spark(以下简称Spark)是一个开源的分布式计算框架,由UC Berkeley AMP Lab开发,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习&a…