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

news2024/11/17 3:34:45

如有错误,恳请指出。


文章目录

  • 1. 背景
  • 2. 网络结构
    • 2.1 Feature Encoder and Proposal Generation
    • 2.2 voxel-to-keypoint scene encoding
    • 2.3 Keypoint-to-grid RoI Feature Abstraction
  • 3. 实验部分

paper:《PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection》(2020CVPR)

1. 背景

基于voxel(paper中提到的是grid-based)的方法计算效率更高,但不可避免的信息损失降低了细粒度定位精度;而基于point的方法计算成本更高,但是通过PointNet++中的SA层(set abstraction layer)可以实现更大的感受野(这种说法是首次提出的)。

PV-RCNN的想法也是同时结合这两种方法的优势,取其所长,利用voxel-based操作进行有效的多尺度信息编码,生成高质量的3d候选框;同时利用改进的set abstraction模块操作保留精确的位置信息和灵活的感受野。同时利用两种方法的优势,实现学习到更多可区分性的特征。


2. 网络结构

PV-RCNN是一个Two-stage,anchor-based的3d检测算法,网络结构如下所示。主要思路是在proposal上进行roi改进,提出两个策略:体素到关键点场景编码(voxel-to-keypoint scene encoding)与点到网格RoI特征提取(point-togrid RoI feature abstraction),下面介绍各个部分的具体操作。
在这里插入图片描述

2.1 Feature Encoder and Proposal Generation

常规操作,对整个点云场景进行体素化,对非空体素用point-wise特征的平均值来计算,随后使用一些列的3x3x3的卷积核进行稀疏卷积处理下采样。不想Fast Point RCNN中先用3d卷积将z轴维度信息压缩为1再使用2d卷积对bev投影特征进行处理,PV-RCNN这里是将z轴特征进行叠加,得到bev特征图(尺寸大小为原尺寸的下采样8倍)。随后在特征图上类似SECOND与PointPillars进行anchor-based的方法,生成候选框(anchor的设置也一样,0°与90°两种anchor方向)。

对于two-stage的算法来说,获得候选框之后,一般需要对3d体积特征图或者2d特征图中进行特定的ROI信息汇集,来进一步对候选框进行修正。但是使用3d稀疏卷积后的特征具有一些限制:
1)空间分辨率较低(进行了8x下采样),妨碍了输入场景中对目标的准确定位;
2)既使可以通过上采样恢复,但特征仍然稀疏。因为常用的三线性插值或者是双线性插值都只能从比较小的邻域中获取特征,但由于稀疏性这种方法一般获得大部分特征是0,浪费了计算;

这里采用的方法就是利用SA层对点特征进行编码,但是对整个多尺度的roi区域会耗费性能,所以提出将整个场景的不同stage编码为少量的关键点,然后将这些关键点特征利用SA进行聚合。

2.2 voxel-to-keypoint scene encoding

对原始点云进行距离最远点采样获得k个关键点keypoints。

  • Voxel Set Abstraction Module

在原始的PointNet++中,对每个关键点p以半径为r搜寻邻域的特征为point-wise特征,而在这里的是voxel-wise特征。具体来说,对于每一个关键点pi,在某一个特征层上其邻域半径r内,获取k个voxel-wise特征,每个voxel特征包含其自身的voxel特征以及当前voxel到关键点pi的相对位置信息。将其用类似set abstraction方法(MLP+Max pooling)进行区域特征聚合处理(得到的是一个编码的feature vector)。

通常在每层特征图上还会设置多个半径r来聚合不同感受野的局部voxel-wise特征(类似与PointNet++中的MSG操作),从而捕获更丰富的多尺度上下文信息。对3d voxel CNN中的不同阶段均执行上诉操作,可以获得多个网络stage的的feature vector。将这些不同层次包含不同尺寸范围的特征concat在一起组成关键点pi的语义特征(可以说是相当丰富了)。

此外,这里还额外扩展使用上了关键点pi的原始点云信息以及bev特征图上的信息,其中原始点云部分地弥补了点云体素化的量化损失,而2d的bev特征图沿着Z轴具有更大的感受野。原始点云信息使用上述voxel(下面的公式2)的类似方法聚合,而2d的bev特征图信息使用双线性插值来获取。所以关键点pi的完整特征组成如下:
在这里插入图片描述

  • Predicted Keypoint Weighting

现在将整个3d点云场景通过少量的k个关键点进行编码,后续阶段将进一步利用这些关键点信息来进行候选框细化修正。但由于这些关键点是通过距离最远点采样(Further Point Sampling strategy)所获得,所以难免具有的背景点。这些背景点的贡献应该比前景点的贡献要小,所以PV-RCNN这里额外提出了一个关键点加权模块(Predicted Keypoint Weighting module),如下图所示。
在这里插入图片描述

具体实现上,利用3d标注框获取对应的掩码信息(关键点在GT的内部还是外部)进行有监督的语义分割训练,通过3层MLP处理再获得每个关键点的权重(sigmoid值)来重新作用与原始的特征上。

2.3 Keypoint-to-grid RoI Feature Abstraction

对于一阶段生成的候选框,现在需要聚合其中的关键点信息来对其进行修正处理。

与PartA2、PointRCNN类似,将候选框进行6x6x6大小进行网格化。如下图所示,对于每个grid points中,在其邻域具有关键点以及原始点,这里只对关键点信息进行处理。
在这里插入图片描述

具体来说,对每一个grid point设置r为半径的邻域,只获取其中的关键点信息,对原始点不作任何处理。对于每个关键点的信息组成是其上述操作获得的特征表示以及与grid point的相对位置信息。随后用类似set abstraction的方法将邻域中的所有关键点特征聚集,获得feature vector。当然,这里也会使用多个半径r来提取多个尺度的关键点信息。每个grid point的特征就是这些多个尺度的feature vector进行concat而成。
在这里插入图片描述

对候选框中的每个grid point获取到从不同邻域关键点的聚合信息后,接下里就可以进行MLP处理,来编码整个候选框信息(这里可能是将grid point的特征先进行reshape操作,再进行MLP处理)

在后续操作中,对Confidence分支回归的是候选框与GT之前的3d IoU值, y k = m i n ( 1 , m a x ( 0 , 2 I o U k − 0.5 ) ) y_k = min (1, max (0, 2IoU_k − 0.5)) yk=min(1,max(0,2IoUk0.5))利用iou作为置信度预测基本是目标检测任务的标配了。对于Box Refinement,与SECOND、PartA2类似。其实,损失组成在多个经典网络均是类似的,无论是anchor-based或者是anchor-free的方法损失组成,直接参考PartA2即可。


3. 实验部分

效果如下就不多说了,效果杠杠的。不过好像比Voxel RCNN略低。
在这里插入图片描述

总结:
将整个检测任务转化成如何利用关键点聚合特征进行有效检测(比较新颖,别具一格),既利用了3d稀疏卷积提取特征,也使用了point-based的SA操作增加点的感受野。PV-RCNN涉及很多细节,在多个部分都使用到了多尺度这个概念:利用了3d稀疏卷积得到的多尺度特征图、获得关键点特征阶段利用每个不同stage的特征图上聚合多个半径范围的voxel-wise特征、获得roi特征阶段利用每个grid point也聚合多个半径范围的关键点特征。

同时这里还提到了一个如何使用权重预测前景点与背景点,利用额外的有监督训练弱化背景点的特征且提高前景点的特征贡献。这个是与3D-SSD中提到的F-FPS(特征最远点采样)对前景点与背景点不一样的思路。

既PointRCNN、PartA2之后,再一次仔细看大佬的文章,篇篇细节,篇篇经典。模型实现太复杂,大佬太强了…


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

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

相关文章

JavaScript -- DOM事件总结

文章目录事件1 事件对象简介2 Event对象3 冒泡4 事件的委派5 事件的捕获事件 1 事件对象简介 事件对象是由浏览器在事件触发时所创建的对象,这个对象中封装了事件相关的各种信息通过事件对象可以获取到事件的详细信息比如:鼠标的坐标、键盘的按键…浏览…

单频信号的相位谱计算与误差修正-附Matlab代码

一、问题描述 我们在实际处理时经常遇到只有一个正弦信号的情况,其频率为 f0{{f}_{0}}f0​,在谱分析以后,除了在频率为 f0{{f}_{0}}f0​处有相位数值外,其他频率处都有相位数值,分析其他频谱出现相位值的原因。 例如…

外部tomcat资源整合

Spring Boot应用默认是以jar包方式运行的,Springboot默认有内置的tomcat,在启动的时候会自动的将项目发布,这样各有利弊。 优点:简单,便携 缺点:不支持jsp, 定制优化比较麻烦,需要自己编写ser…

如何开发一个婚恋交友系统?开发功能特点有什么?

婚恋平台为年轻人开启了一个交流恋爱的方式,一方面为的是适龄的年轻单身人士,另一方面为一部分大龄单身人士,解决单很多身人 士的需求,婚恋平台的开发,跟随着互联网的发展,抢占了小程序的热门市场&#xf…

Java线程实现

内容引用自《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明》 线程的实现 我们知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和 执行调度分开,各个…

React框架入门

React是用于构建用户界面的JavaScript库, 起源于Facebook的内部项目,该公司对市场上所有 JavaScript MVC框架都不满意,决定自行开发一套,用于架设Instagram的网站。于2013年5月开源 一、React简介 React以声明式编写 UI&a…

0119 动态规划 Day8

剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1…

计算机的硬件系统和软件系统的关系

计算机的硬件系统和软件系统的关系是缺一不可。 硬件它是所有软件运行的物质基础。 与硬件直接接触的是操作系统,它处在硬件和其他软件之间,表示它向下控制硬件,向上支持其他软件。 在操作系统之外的各层分别是各种语言处理程序、数据库管理…

CleanMyMacX4.12.1Crack版本频繁弹密码 菜单浮窗无法显示显示空白解决办法

你们有没有出现过在使用 CleanMyMac 清理系统垃圾文件的时候会频繁弹出输入开机密码?那么该如何解决这个问题呢?跟着小编来看看解决方法吧! 频繁输入密码 更新CleanMyMacX到4.12.1的Crack版本之后,发现做一些操作要一直输入密码&…

科技云报道:PingCAP黄东旭:Serverless是数据库的未来形态

科技云报道原创。 30年前,程序员要想写代码,必须使用复杂的汇编语言。 但在今天,几乎没有程序员知道如何使用汇编语言,更加简易的高级语言如C,C#,JAVA,Rust,Go已成为开发主流。 随…

分布式文件存储系统FastDFS[3]-通过Docker安装并且从客户端进行上传下载测试

一、FastDFS安装 FastDFS的安装我们还是通过Docker来安装实现吧,直接在Linux上还装还是比较繁琐的,但就学习而言Docker安装还是非常高效的。Docker环境请自行安装哦,不清楚的可以看看我的Docker专题的内容。https://blog.csdn.net/qq_3852657…

【jenkins】1. 安装jenkins (docker-compose)

环境 ubuntu 20docker服务器 ip:xxx.xxx.xxx.xxx 步骤 1. 【编写安装文件】windows下 - 编写 docker-compose.yaml version: "3.1" services:jenkins:image: jenkins/jenkinsrestart: alwayscontainer_name: jenkinsports:- 58080:8080- 50000:50000volumes:- ./…

5.31 综合案例2.0 - 在线MP3音乐播放器

综合案例2.0 - 在线MP3音乐播放器一、案例说明二、准备器件三、案例连线四、代码代码说明复制五、测试一、案例说明 本案例制作一个联网下载声音文件的MP3播放器。 案例功能说明: 案例使用一块IC035串口屏和两个按键通过按键可以切换音乐,下载播放或删除…

瑜岿科技综合能源管理系统助力企业节能降耗工作

能源是国民经济的基础,更是城市赖以发展的动力。优化能源结构、大力发展可再生能源、提高机房能效、实现建筑智慧节能是行业绿色发展重点。在国家碳达峰碳中和的重大战略决策背景下,我国能源体制改革深入推进,能源生产和消费发生重大变革&…

如今社交电商不可忽略的一个点——消费增值

消费增值是一个基于消费返利理论的全新商业消费生态,一个让用户从优惠消费—免单消费—挣钱消费,所突破的新消费、新业态模式—增值消费,一个从电商化的平台走向品牌化的平台,让平台脱离单打独斗的方式,通过商家联盟方…

编译原理 2 - 词法分析

第3章 词法分析3.1 词法分析器的功能和结构3.2 状态转换图3.3 正则文法 和 正则表达式3.4 有限自动机 DFA与NFA测试第3章 词法分析 重点:① 词法分析器的输入、输出;② 用于识别符号的状态转移图的构造;③ 根据状态转移图实现词法分析器 难点…

【MATLAB教程案例55】GoogleNet网络的MATLAB编程学习和实现,以步态识别为例进行仿真分析

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 1.软件版本 2.GoogleNet理论概述

基于Qt的桌面客户端组件化框架DT 开源啦

这个是本人在工作中基于QT开发的组件化桌面开发框架,目前打算开源出来提供给大家,节省大家的开发时间和效率,希望对大家的开发有所帮助,也欢迎提出意见和改进建议 1. 为什么开源DT框架 DT框架,本身就是基于QT为基础搭…

深度学习——含并行连接的网络(GoogLeNet)笔记

GoogLeNet中基本的卷积块是Inception块。 1.Inception块:4个路径从不同的层面抽取信息,然后在输出通道合并 ①1*1的卷积层,减少通道数,降低模型的复杂度 ② 1*1的卷积层,减少通道数,降低模型复杂度。然后…

volatile关键字和synchronized关键字

参考博客:https://www.cnblogs.com/cg-ww/p/14540450.html 1、volatile的作用:关键作用是使变量在多个线程之间可见 程序并没有因为我修改之后结束运行,因为线程对共享变量具有不可见性,main线程修改布尔值之后,子线…