论文阅读笔记 | 三维目标检测——VoxelRCNN算法

news2025/7/19 4:46:08

如有错误,恳请指出。


文章目录

  • 1. 背景
  • 2. 网络结构
    • Voxel Query
    • Voxel ROI Pooling
    • Accelerated Aggregation
    • Loss Compute
  • 3. 实验结果

paper:《Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection》

1. 背景

现有很多的point-based检测器获得比较好的效果,精确度要比voxel-based检测器要好,为此不少观点认为原始点云中的精确位置信息对于精确的目标定位是至关重要的。VoxelRCNN的动机就是能否保持voxel-based方法速度优势下,获取与point-based方法相当的性能,希望在准确性和效率之间取得平衡。作者通过实验分析,发现现有voxel-based方法的主要缺点是将3d特征体转换为BEV表示,而从未恢复3D结构上下文,这样就找到了需要提高的方向。对于voxel-based的方法,BEV表征能力不足,所以需要转换成BEV前的3d voxel-wise特征。

VoxelRCNN的主要创新点是提出了一种Voxel ROI pooling方式,利用生成的候选框直接在3d tensor中获取对应的voxel-wise特征进行特征聚合操作,提出了neighbor-aware聚合策略。实验结果也表面,这种粗粒度信息同样可以为检测任务提供足够的空间上下文信息,VoxelRCNN的实验结果超过了那时最好的point-based方法,进一步说明3d的tensor结构信息对检测器至关重要,而BEV的表征能力是不足以精确预测3d空间的边界框的。这也很好理解,毕竟丢失了z轴上的信息,只投影到了xy平面进行后续处理。


2. 网络结构

VoxelRCNN是一个two-stage、anchor-based的voxel-based检测方法(这里的anchor-based存疑,后续我会讨论讨论),其网络结构如下所示。其核心是提出了Voxel ROI pooling,通过候选框在3d tensor中聚合相关的voxel query信息。
在这里插入图片描述

对于体素化后的3d特征,这里通过3d稀疏卷积进行(3D backbone network)特征提取,随后将z轴的特征进行拼接转化成bev视图上的一个二维特征,再进行过一个2d卷积backbone进行特征提取,后续接两个分支来进行候选框的生成以及socre预测。这里的3d稀疏卷积网络以及RPN的2d卷积网络与SECOND、PV-RCNN的一致。

Voxel Query

对于以往的ROI操作,一般是对候选框中的point-wise特征进行聚合操作,这种方法称为Ball Query。在voxel-based的方法中,由于点云被转化为了规则化的一个个体素,所以在这些规则化的体素空间中进行距离的偏移是比较容易的一件事情。因此VoxelRCNN中提出了Voxel Query的概念,从三维的特征体中寻找相邻的voxel,以有效地对体素进行分组。如下所示。假设3d空间中有N个非空体素,通过Voxel Query寻找K个邻值,其时间复杂度为O(K),而这里Ball Query的时间复杂度是O(N),所以从效率上Voxel Query是更加高效的。
在这里插入图片描述

Voxel ROI Pooling

具体来说,对于生成的候选框先切分为GxGxG大小的体素(称为subvoxel),每一个subvoxel也可以看成是候选框中的一个网格grid。此时,不再是简单的聚合候选框中的voxel-wise特征,而是利用Voxel Query,对每一个grid利用设定的哈曼顿距离获取其相邻K个voxel特征。此时,这grid网格点与其K个neighboring voxel就是一个groups,可以利用PointNet网络对其特征进行聚合。假设这里每个voxel的特征维度是C,对于每个邻居voxel都可以分别构建起与grid的相对位置信息(xp,yp,zp),将相对位置信息与原本的voxel-wise特征拼接在一起,其维度即为C+3。后续进行PointNet网络聚合,即可输出dim=C’的特征向量。如下图(a)所示。
在这里插入图片描述

此外,考虑到多尺度信息,这里的ROI Pooling是从3d稀疏卷积骨干网络最后两个阶段的3d特征图中提取voxel特征,同时对于每个阶段再设置两个曼哈顿距离阈值进行分组。对于每一个阶段的某个曼哈顿距离分组都可以聚合一个vector特征,所以这里的多尺度处理会将不同阶段不同尺度的特征进行拼接,作为最后的ROI特征。所以这里每一个ROI特征一共会结合4种不同层次与尺度信息。

Accelerated Aggregation

上述所提出的聚合方法计算复杂度仍然比较高,假设阶段一生成r个候选框,每个候选框中切分G3的大小,那么一共需要处理的grid网格数量M=rxG3。这里每个网格假设分组的Neighbor为K,每个邻居voxel具有3维度的相对位置信息以及C维度的voxel-wise特征,拼接起来的特征维度即为(3+C),对其进行全连接操作降维到C‘的浮点计算量为:FLOPs (O(M×K × (C + 3) ×C’))。这么庞大的计算量需要进一步优化,所有聚合网络改进为如下图(b)所示。

简单来说就是对voxel-wise特征以及相对信息特征进行分开编码。对于每个网格的K个邻居,将其相对位置特征信息编码为C’,这个步骤的计算量为:MxKx3xC‘。而但由于邻居的C维voxel特征信息是独立,直接利用fc层对其编码为C’,计算量只为:NxCxC’,选取Voxel Query所选取的K个voxel特征,与位置信息进行相加再聚合。于分组体素的数量(M×K)比N高一个数量级,因此加速的PointNet模块比原始模块更有效。
在这里插入图片描述

这里以实际例子进行对比,一般来说KITTI数据集中非空体素的数量最多也就16k左右,但假设生成的候选框为150,分成6x6x6的大小,那么需要处理的网格点数也达到了43.2k个,大约是非空体素N的3倍。所以在实际上还是存在一定的加速效果的。

Loss Compute

以上即为VoxelRCNN的重点内容,对于其他部分paper中没有细说。对于3d稀疏卷积backbone采用类似SECOND、SA-SSD、PV-RCNN的设计。其中,2d的RPN网络应该是也是与SECODN的一致。

在损失设计这里,paper也没有提到什么,只是简要说了声是follow前人SECOND与PointPillars的工作,对于这两个工作都是one-sate、anchor-based的工作,损失是包括边界框直接回归,候选框类别以及边界框方向分类三个部分,所以这里也只能认为其RPN网络也是anchor-based的方法进行设置。但是,全文没有提及先验框尺寸等信息,这一点比较奇怪。


3. 实验结果

VoxelRCNN在kitti数据集上只提供了car类别的精度对比:
在这里插入图片描述

此外,分别对detect head、voxel query以及acceleated module在验证集上进行消融实验
在这里插入图片描述

思考:

这个消融实验的结果个人觉得相当尴尬,增加使用Voxel Query的精度只提高了0.12%。感觉整个消融实验做得不算太完整,比如:
1)在具体的pooling操作时,如果只使用单一的曼哈顿距离以及只使用单一的3d特征层时是否有影响,使用多尺度多阶段带来的提升有多大?
2)使用这种voxel roi pooling比普通的直接聚合候选框中的point-wise特征会带来多少提升?

总的来说,VoxelRCNN又是在ROI聚合这个点上进行改进,继承了PaetA2中对候选框进行切分的想法,通过Voxel Query对每个候选框的subvoxel进行分组聚合其K个Neighbor的3d tensor信息,在数据集上证明3d稀疏卷积提取出来的特征的有效性。但是消融实验的结果让我对Voxel Query的有效性存疑。


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

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

相关文章

R语言鸢尾花iris数据集的层次聚类分析

介绍 本文在数据集上展示了如何使用dendextend R软件包来增强Hierarchical Cluster Analysis(更好的可视化和灵敏度分析)。最近我们被客户要求撰写关于鸢尾花iris的研究报告,包括一些图形和统计输出。 【视频】KMEANS均值聚类和层次聚类&…

从0开始配置深度学习环境(Python)

写这篇文章的起因是因为重装了电脑,之前配好的深度学习环境没了,又在网上找了很久,所以决定记录一下,以备后续刷机。 环境: 显卡:GTX1060 6G CUDA驱动版本:457.20 ——11.1.114 Python版本&…

常用的JVM配置参数说明

工作中常用的JVM参数配置,以Java8为例: 日志相关 -XX:PrintFlagsFinal,打印JVM所有参数的值 -XX:PrintGC,打印GC信息 -XX:PrintGCDetails,打印GC详细信息 -XX:PrintGCTimeStamps,打印GC 的时间戳 -Xloggc:filename,设置GClog文件的位置 -XX:PrintT…

Java抽象类和接口

对于Java面向对象编程来说,抽象也是它的一个重要特征。在 Java 中,可以通过两种形式来体现 面向对象(OOP)的抽象:接口和抽象类。这篇文章就为大家介绍这两个的相似与区别之处。 一、抽象类(abstract&#…

3.4 这些都是小红书的流量入口【玩赚小红书】

主要有下面这些位置: ​ 1、推荐流量:根据用户往期的搜索习惯推荐,相当于是猜用户喜欢,精准度会低一些 ​ 2、位置流量:根据用户所在的位置推荐,一般是同城20km范围内。直接在主页-发现-后边的附近那里可…

报告解读下载 | 11月《中国数据库行业分析报告》发布,精彩抢先看

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生…

数位dp总结

补题的时候有个题需要数位dp,有去重学了一波上一年就学过的数位dp,又学一遍感觉上一年学了个寂寞,,, 这种问题大多数都是和数的每一位的数字有关,一般是一个数的数位之间存在着某种关系,让求具有…

网络通信基本原理

通讯的必要条件 主机之间需要有传输介质。光纤、蓝牙、wify主机上必须有网卡设备。把二进制信息转为高低电压的过程就是数据的调制过程。把电信号转为二进制信息的过程为解调制。主机之间需要协商网络速率。 网路的通讯方式 日常生活中,我们通讯的方式不可能只有…

IPD流程概要

一、IPD流程的主要内容 CDCP:concept decision check point 的缩写,意为概念决策评审点。在概念阶段结束时要召开一个概率决策评审会,在这个会议上,PDT正式向IPMT报告初始的业务计划,由IPMT决定项目是继续还是终止。若初始的业务计划得到批准,分委会将做出下一阶段开始前…

11.14-11.21

1.线性蒙皮 1.1 线性蒙皮定义 线性蒙皮:是由一系列骨骼驱动的。每个顶点会根据顶点权重图和相应的骨骼关联。根据骨骼在当前位置相对于静止位置的变换矩阵以及此顶点相对于该骨骼的权重,我们可以计算出该顶点在该骨骼影响下的位置。 假设Wij是第j个骨…

【数据可视化】第三章——数据可视化综合实践

Matplotlib作业数据.csv文件查看百度网盘:链接:https://pan.baidu.com/s/1oFB_KwhiJNlJAgXg7RaYuw?pwdabcd 提取码:abcd 1.作业描述 作业:根据Matplotlib作业数据.csv做出4种不同类型的组合图像 要求:根据情况适当添…

深入浅出基于HLS流媒体协议视频加密的解决方案

一套简单的基于HLS流媒体协议,使用video.js NodeJS FFmpeg等相关技术实现的m3u8tsaes128视频加密及播放的解决方案示例。 项目简介 起初是为了将工作中已有的基于Flash的视频播放器替换为不依赖Flash的HTML5视频播放器,主要使用了现有的video.js开源播…

Windows内核--HAL在抽象什么?(3.4)

From: HAL在Kernel和硬件之间 HAL在抽象什么? HAL位于内核最底层。“与硬件直接打交道“的这一层被称为硬件抽象层。顾名思义,Windows内核希望把硬件相关的代码放在HAL模块,而这似乎与WRK众多amd64或x86目录相违背。 注意,任何代…

如何优雅的终止线程 Java

目录 终止线程的方法 打断sleep函数 打断正常执行的线程 两阶段终止模式 错误的方法 使用线程对象的 stop() 方法停止线程 使用 System.exit(int) 方法停止线程 正确的方法:使用 interrrupt 终止线程的方法 XXXThread.interrupt(); 在线程的 run函数中对该线…

NFT+体育,卡塔尔世界杯有哪些NFT看点!

有人说没有冷门的世界杯不是真正的世界杯!11月22日,卡塔尔世界杯小组赛C组第1轮比赛中,沙特爆冷2:1逆转阿根廷队,成了今年世界杯的第一个冷门。世界排名第51位的沙特队战胜了排名第3的阿根廷队,结束了阿根廷队此前的36…

vue拖拽删除实现

拖拽删除 背景 自营上传图片,但是需要排序和删除功能,所以用到了h5的拖拽 源元素: 即被拖拽的元素。 目标元素: 即合法的可释放元素。 每个事件的事件主体都是两者之一。 拖拽事件 触发顺序及次数 被拖拽元素,事…

day5-day6【代码随想录】螺旋矩阵II

文章目录前言一、螺旋矩阵||(力扣59)二、螺旋矩阵(力扣54)前言 坚持循环不变量原则。 模拟顺时针画矩阵的过程: 填充上行从左到右 填充右列从上到下 填充下行从右到左 填充左列从下到上 由外向内一圈一圈这么画下去 一、螺旋矩阵…

大三保研夏令营须知及前期准备工作

前言 对于大三保研学生而言,学期将近结束;接踵而来的是接下来的保研准备。保研阶段通常可以分为:夏令营、预推免、九推(捡漏)。很多同学往往都是在前两个阶段就能获得满意的offer。 对于计算机专业来说,经历过2022年的“推免季”&…

项目实战——匹配系统(下)

目录 一、整体梳理 二、创建SpringCloud目录 三、创建子项目 四、实现接口 五、config网关配置 六、放行API 七、封装后端逻辑 八、对接匹配系统 九、修改数据库 十、实现匹配之后的逻辑 十一、线程锁 十二、匹配函数 上节课知识梳理: 用户浏览器打开之…

天津专升本报名时的报名点

2023年天津专升本报名区县及应届生、往届生报名点 天津市在校大三应届生报名点选自己的专科院校,往届生及在外省就读的应届生选户籍所在区招办。 退役士兵从天津入伍的选择学校作为报名点,外省市入伍的选择区招办。