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

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.mzph.cn/bicheng/38587.shtml

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

相关文章

如何现代的编译和安装内核

前言:本文是在阅读书目时找到了一篇非常高质量的文章。的原文是英文,现在我自己手头翻译了一下,发布到这里。 原文连接:How to compile a Linux kernel in the 21st century | Opensource.com 目录 更新内核的现代方法 安装内…

C++知识点总结全系列 (05):IO 类的详细总结和分析

1、基类 istream 和 ostream (1)istream A.What 输入流的抽象类,是所有输入流类的基类 B.Why(输入流的作用) 用于从数据源(如文件、标准输入设备等)读取数据 (2)ostream A.What 输出流的抽象类,是所有输…

grpc学习golang版( 六、服务器流式传输 )

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、拷贝任意文件进项目四、编写serve…

复制完若依后,idea没有maven窗口

右击项目 添加框架 添加maven框架就可以了

大数据开发中的数据倾斜问题

数据倾斜是大数据开发中常见的性能瓶颈,了解其原因并采取有效的解决方案对系统性能至关重要。本文将从数据倾斜的影响、解决方法及示例代码等方面进行详细讨论。 目录 1. 数据倾斜的影响2. 解决数据倾斜的方法调整分区键预聚合倾斜处理逻辑 3. 进一步解决数据倾斜的…

vue3.0 + vant实现下拉刷新上拉加载

在vue中使用vant组件库有个van-pull-refresh下拉组件,配合van-list列表组件实现页面的下拉刷新和上拉加载,原理简单,适用场景在列表页面内容展示。 下拉刷新 PullRefresh 实现下拉刷新的效果。 PullRefresh组件中的searchRefreshing属性&…

51单片机嵌入式开发:STC89C52环境配置到点亮LED

STC89C52环境配置到点亮LED 1 环境配置1.1 硬件环境1.2 编译环境1.3 烧录环境 2 工程配置2.1 工程框架2.2 工程创建2.3 参数配置 3 点亮一个LED3.1 原理图解读3.2 代码配置3.3 演示 4 总结 1 环境配置 1.1 硬件环境 硬件环境采用“华晴电子”的MINIEL-89C开发板,这…

安卓app开发-基础-本地环境安装android studio且配置参数

安卓app开发-基础-本地环境安装android studio且配置参数!今天为大家介绍一下,如何在自己本地电脑安装android ,studio和启动一个简单的java版本的项目。 第一步,去下面的地址,下载一个安装文件。 地址:AndroidDevToo…

root密码忘了怎么办(从系统引导过程解决)

目录 1.Linux系统密码忘记 2.系统引导过程 2.1 systemd 2.2 GRUB和GRUB2 2.3 运行级别 3.修复MBR扇区故障和GRUB引导故障 3.1 MBR扇区故障 3.2 GRUB引导故障 1.Linux系统密码忘记 我们在生活中经常遇到这类困扰,就是某个账号还是账户密码忘了,这…

Docker的理解

Docker的理解 Docker为什么用Docker?1.提升系统资源利用率2.更快速的交付和部署3.高效的部署和扩容4.更简单的管理 Docker核心技术Docker镜像Docker容器Docker仓库 Docker实现原理Linux NamespaceCgroupUnion FS Docker的应用场景1.微服务架构2.持续集成3.快速部署和…

DP V2.1a标准学习

一、说明 DP是DisplayPort的简写,是视频电子标准协会(VESA)标准化的数字式视频接口标准,可用于板内芯片之间的连接,也可用于输出接口连接外部设备。DisplayPort是一种基于数据包的可扩展协议,用于传输视频和音频数据。DisplayPort 具有高度可扩展性,并具有保持向后兼容…

【一步一步了解Java系列】:对这个系列的总结以及对缺漏内部类知识的补充

看到这句话的时候证明:此刻你我都在努力 加油陌生人 br />个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xf…

《昇思25天学习打卡营第27天 | 昇思MindSporeShuffleNet图像分类》

27天 本节学习了ShuffleNet图像分类 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一样主要应用在移动端,模型的设计目标就是利用有限的计算资源来达到最好的模型精度。设计核心是引入了两种操作:Pointwis…

【Python机器学习】模型评估与改进——分组交叉验证

分组交叉验证是非常常见的一种交叉验证策略,它适用于数据中的分组高度相关时。比如我们想构建一个从人脸图片中识别情感的系统,并且收集了100个人的照片的数据集,其中每个人都进行了多次拍摄,分别展示了不同的情感。我们的目标是构…

使用gradle上传maven工件到新版maven central仓库central.sonatype.com

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。 该文件夹的生成也十分简单,不用担心。 前言 最近在研究maven插件的时候发现发布的网站发生了变化,使用之前的一些插件没能满足我发布依赖的需求,也可…

数据结构与算法笔记:实战篇 - 剖析Redis常用数据类型对应的数据结构

概述 从本章开始,就进入实战篇的部分。这部分主要通过一些开源醒目、经典系统,真枪实弹地教你,如何将数据结构和算法应用到项目中。所以这部分的内容,更多的是知识点的回顾,相对于基础篇和高级篇,其实这部…

fastapi swagger在线接口文档报错

fastapi swagger在线接口文档报错 1、报错信息 Unable to render this definition The provided definition does not specify a valid version field. Please indicate a valid Swagger or OpenAPI version field. Supported version fields are swagger: “2.0” and those …

【收藏】SaaS运营方法论:寻找合适的合作伙伴的四大方法

一、使用关键字研究工具查找您所在行业的相关博客、频道和网站 但是,根据你的业务规模和性质,如果你需要主动出击寻找合适的推广伙伴,而不仅限于让潜在合作伙伴找你,你可以使用关键字研究工具。 实话实说,最好的联盟营…

告别手工录入,企业财务凭证同步迈入智能新时代!

一、客户介绍 某金融租赁股份有限公司作为一家领先的金融租赁企业,一直秉持着创新驱动、服务至上的经营理念。随着业务的快速发展,该公司在财务管理和凭证管理方面遇到了新的挑战。为了更好地提升工作效率,降低运营成本,该公司决…

Spring两大核心思想 IoC和AoP

目录 ✨ 一、什么是IoC 1、定义 🎊 2、IoC思想 🎊 3、优势 🎊 4、对象的管理 🎊 存对象:Component 取对象:AutoWired ✨二、什么是DI 1、定义 🎊 2、IoC和DI的关系🎊 可…