当前位置: 首页 > news >正文

精华文稿|迈向统一的点云三维物体检测框架

分享嘉宾 | 杨泽同

文稿整理 | William


嘉宾介绍

Introduction

3D检测是在三维世界中去定位和分类不同的物体,与传统2D检测的区别在于它有一个深度信息。目前,大部分的工作是倾向于用点云去做三维检测,点云实际上是通过传感器去扫描出来的一系列点,这些点是分布在物体的表面,所以通过点云可以清楚的观察到一个物体的形状,所以最终做三位检测的准确率也会更高。

点云实际上有三个特点,首先是无序性,其次是稀疏性,第三是无法准确的描述一个物体。所以,现在的基于点云的3D检测框架可以分成两大类:一类是先把点云变成图片似的密集表示,然后再去像图片一样去处理点云,另一类是先处理成有序的、密集的表示,叫做基于体素的检测器。它的思路是把点云转换成均匀分布的体素,然后采用CNN的方式去处理,使用的特征提取的网络用的是类似于稀疏卷积网络。

介绍一下基于体素检测一个相关的工作,它叫做pointpillars,速度很快,如图1所示。在得到稀疏点云之后去做体素化,跟一般的体素化的区别在于它是把三维点云分成无数个pillars,即无限高的体素,但是忽略高度这一维,在这之后,可以用2DCNN去提取特征,然后再用图片上常用的2D检测器的头部去做最后的预测。

图1 PointPillars结构 

Point-based Detector:3DSSD

对于在点云中为什么需要上采样层,是因为原先点云在特征提取网络之后只剩下少量的点,那少量的点不一定会出现在物体的框里。如果最后选到的少量点不出现在物体的框里,那对于检测器来讲,是一个很不好的情况,因为很难去回归出此框。

假如检测器没有上采样层,实际上只可以回归出来两个红色框,对于其他的黄色框来讲,由于它们内部不存在选到的点,所以,这些框就相当于直接被检测器给Miss掉,如图2所示。图1右边是统计了一些数据,发现看在取4096个点时,有99.7%的物体是属于红色框,即存在内部点被选中。取1024个点时,只有65.9%的内部点被选中。到512个点时,就只有51.8%了。所以,实际上如果是用这种方式来去设计检测器,光从选点角度来看,就已经有48.2%的框完全没有机会检测到。

图2 上采样与框

但目标是建立一个非常简单的检测器,所以希望删掉上采样层。那么考虑一种方式在选点只有512或更少的情况下,也能召回这些框,这里是提出Feature Furthest Point Sampling(F-FPS)。实际上,它是基于特征的选点策略,还是图1所示的场景,绝大多数的背景点实际上都是地面,特征具有一定的类似。前景点是属于车或人或一些其他的前景物体,特征与背景是有一定的区别。因为它们之间特征存在区别,然后再加上最远点采样,就可以直接根据特征去做采样,这样可以尽可能的去采到特征不同的点。所以,它的优势在于可以去删掉大量的背景点,另外是可以为前景去拿到它的内部点。

下面来介绍3DSSD框架,如图3所示。它最主要的改进点在于之前提到的F-FPS,然后加上D-FPS去做采样,采样完成之后,里面的每个模块都用类似于pointnet去对采样到的点做特征提取。特征提取层最终采的点处于物体边界上的点,对回归不太友好,这里目标是采样点在物体中心。所以,提出了一个Kennedy generation layer,这个layer的目的是把一个个在边界的采样点给移动到物体的中心,再这之后去进行最后的检测。最后生成预测框或生成分类分数去产生最后的结果。

 

图3 3DSSD框架

Voxel-based Dector:3D-MAN

3D-MAN是为了解决单帧点云不能正确描述物体形状的特点而设计出来的,框架如图4所示。拿到单帧点云之后,经过一个检测器,得到检测结果并存到memory bank里面。这个memory bank里面存的是这一帧和这一帧之前的前N帧所有对应的内部物体和对应的物体特征。需要这些物体和物体特征是希望拿到同一个物体在不同帧的特征,然后进行融合,从而去解决单帧的问题,融合之后去做检测。

图4 3D-MAN框架

对于生成物体的特征,首先是采用pillar检测器,所以实际上拿到了一个经过backbone的2D特征图。在拿到物体后,先把物体平均分成2乘3的网格,且均匀分布在物体内部。在拿到great center之后,去计算它在feature map上的位置,然后通过双线性插值去获得它在featuremap上的位置和特征,在拿到六个网格的特征之后,去做平均池化,得到所对应的proposal,将proposal对应的特征去存到memory bank里。

当产生完一个个proposal的feature之后,就能拿到当前帧proposal的feature和存在memory bank里面不同帧proposal的feature,接着使用cross attention去计算相似度,然后利用相似度去组合当前帧所对应的proposal和特征。最后使用不同帧的特征进行融合,生成最后的预测结果。

图5是同一个物体在不同帧feature的attention map,因为cross attention实际上是基于相似度进行的,然后把相似度就暂时简称为attention map。然后测试attention map可以发现它的对角线相比于其他位都是有更加大的亮度,也就是表示它的相似度很高。所以,实际上这个模块是在做隐式的track,也就是可以从其他具有相似角度和大小的物体上找一些信息,理论上就可能会得到更好的效果

图5 attention map

Unified Paradigm

现在3D检测里面是存在基于体素和基于点的方法,这是两个完全分开的研究领域,而实际上是希望提出一个统一的框架来进行3D检测,所以来介绍下这篇《A Unified Query-based Paradigm for Point Cloud Understanding》简称为EQ-paradigm。

EQ-paradigm的整个流程如图6所示。首先是输入点云,然后经过特征提取网络,这个特征提取网络既可以是基于体素的,也可以是基于点的,最后通过查询去连接不同的head,即可以任意切换head去做分类、分割、基于体素的检测或是基于点的检测等等。

图6 EQ-paradigm框架

流程中首先是Embedding Stage,这个希望它可以是任何一个存在的、顶尖的、基于体素或基于点的特征提取网络,也就是不管head和task,这个地方可以随意选择。而EQ-paradigm里最重要的设计是Query Stage,它的目标是为一些query position提取特征,那这些query position实际上是连接特征提取网络和对应的头部的重要组件。query stage的作用是为query position去提取它对应的特征,这里简称为representation。然后,不同的头部去根据representation生成所对应的最后检测结果。

Quary position的选取是根据任务和所需要的head,比方如图7所示,橙色的点是点云里面的一些点,如果希望去做语义分割, query position是这个点云场景下所有的点,因为语义分割是需要对所有的点做一个分类。如果要做分类,那position是物体所对应的中心点。

图7 Quary position

那如何为query position生成特征,这里所用的方式其实是transform,因为transform实际上非常好去做query。具体如图7所示,拿到一些query position后,初始化它们的特征为零,然后用query position和它对应的初始化特征去从support features和support point里面去拿到它所对应的特征,这些support实际上是前面选择网络所生成得一些特征。之后,会通过Q-decode layer将support feature和support point作为K和V,然后把这些query作为Q,输入到里面去生成它所对应attention的特征,然后会多叠几层qblock,这里是有6层,然后不断迭代式的更新它所对应的query feature。然后,拿到了最后的query feature之后,就会经过一些MLP层完成任务。

图7 Q-Net结构

Future Works

在EQ-paradigm之后,可以把不同的模型及不同的backbone统一到同一个框架里面,所以在有了这个框架之后,可以像2D一样去真正的做一个类似于2D里面的restnet等所有检测器都可以去用的特征提取网络,这个现在其实还没有文章去做这件事情。第二个是当有了一个统一的特征提取网络之后,实际上就可以去真正的做一个对于所有基于点云模型统一的pretraining网络,无论是基于体素还是基于点。最后一个是可以去用基于图片的特征网路去提取特征,这些都是未来可以做的一些方面。

相关文章:

精华文稿|迈向统一的点云三维物体检测框架

分享嘉宾 | 杨泽同 文稿整理 | William 嘉宾介绍 Introduction 3D检测是在三维世界中去定位和分类不同的物体,与传统2D检测的区别在于它有一个深度信息。目前,大部分的工作是倾向于用点云去做三维检测,点云实际上是通过传感器去扫描出来的一…...

面试题:Redis网络模型

1 用户空间和内核空间以Centos 7 linux操作系统为例。计算机系统被内核操控, 内核被应用操控。为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的进程的寻址空间会划分为两部分:内核空间、用户空间。用户空间只能执行受限的命令(Rin3&#x…...

微信小程序开发你可能不知道的开发技巧

1. 页面级data,组件data的查看 页面级data的查看,很多开发者应该都知道;组件级的数据查看我是开发了大半年才发现的; 页面级的data查看: 组件的data查看: 2. 放大模拟器【调整一些UI细节】 效果&#x…...

STM32开发(8)----CubeMX配置串口通讯(中断方式和DMA方式)

CubeMX配置串口通讯(中断方式和DMA方式)前言一、中断方式1.CubeMX配置2.代码实现3.实验结果二、DMA方式1.CubeMX配置2.代码实现3.实验结果总结前言 本章继续介绍使用STM32CubeMX对串口进行配置的方法,串口通讯有三种方式:轮询&am…...

7.1 微服务-SpringCloud(二)

目录 前言 7.1.5 Hystrix 7.1.5.1 什么是Hystrix 7.1.5.2 雪崩问题 7.1.5.3 线程隔离,服务降级 7.1.5.4 搭建 7.1.5.4.1 引入依赖 7.1.5.4.2 开启熔断 7.1.5.4.3 编写降级逻辑 1.局部降级逻辑 2.全局降级逻辑 7.1.5.4.4 设置超时 7.1.5.5 服务熔断 7.…...

Spring的AOP开发-基于xml配置的AOP

Spring的AOP开发-基于xml配置的AOP xml方式AOP快速入门 通过配置文件的方式解决以下问题 配置哪些包、哪些类、哪些方法需要被增强配置目标方法要被哪些通知方法所增强,在目标方法执行之前还是之后执行增强 配置方式的设计、配置文件(注解),Spring已…...

JAVA的垃圾收集器与内存分配策略【一篇文章直接看懂】

内存动态分配和垃圾收集技术是JAVA和C之间最大的区别之一 垃圾收集(Garbage Collection,GC)只办三件事: 哪些内存需要回收什么时候回收如何回收 对于对象回收的方法 引用计数法: 每处引用时1,引用失效…...

NLP学习——信息抽取

信息抽取 自动从半结构或无结构的文本中抽取出结构化信息的任务。常见的信息抽取任务有三类:实体抽取、关系抽取、事件抽取。 1、实体抽取 从一段文本中抽取出文本内容并识别为预定义的类别。 实体抽取任务中的复杂问题: 重复嵌套,原文中…...

【深度学习基础7】预训练、激活函数、权重初始化、块归一化

一、Unsupervised Pre-training 得益于 Hinton and Salakhutdinov 在 2006 年的开创性工作— 无监督预训(unsupervised pre-training);在《Reducing the dimensionality of data with neural networks.》这篇论文中,他们在 RBMs 中引入无监督预训练,下面我们将在Autoenco…...

MetaMQ

文章目录MetaMQMetaMQ 的优势在于:MetaMQ 的劣势也有:MetaMQ MetaMQ 是一个基于以太坊的可扩展分布式消息队列(MQ)系统,它可以支持大规模的分布式应用程序。MetaMQ 是一个开放源代码项目,它支持企业级应用程…...

热门盘点 | 10款评分最高的项目管理工具

项目管理软件可以让项目经理及时掌握项目进展可把复杂的任务分解简单帮助项目经理及时了解整个团队进展随着现代项目需求日趋复杂和个性选一个好的项目管理软件还是很有必要的① PingCode国内研发项目管理软件PingCode,它是国内软件研发项目榜单中评分最高的项目管理…...

若依框架---分页功能

继前几天我们学习若依管理系统中的代码生成工具,我们发现若依系统中还要很多值得学习的地方。今天我们来学习若依管理系统中的分页工具。 若依管理系统是前后端分离的(准确的说,若依有前后端分离版本)。 前端 若依前端的分页没…...

CHAPTER 3 Jenkins SVN GItlab

Jenkins SVN GItlab3.1 JenkinsSVN3.1.1 搭建SVN服务器1. 安装svn server2. 查看svn安装位置3. 创建版本库目录4. 创建svn版本库5. 配置修改6. 防火墙开启3690端口7. 启动SVN-server8. 客户端访问svn服务器3.1.2 测试脚本提交3.1.3 jenkins下载代码配置1. 安装Subversion插件2.…...

为什么Redis集群的最大槽数是16384个?

对于客户端请求的key,根据公式HASH_SLOTCRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作! 为什么有16384个槽? Redis集群并没有使用一致性hash而是引入了哈希槽的概念。Redis 集群有16…...

餐饮企业数据可视化大屏(智慧餐饮)

随着信息技术的深入发展,数据大屏的适用场景日益广泛,集工作汇报、实时监控和预测分析等功能于一身。 数据可视化的本质是视觉对话,数据可视化将数据分析技术与图形技术结合,清晰有效地将分析结果信息进行解读和传达。 当前很多餐…...

Kafka安装及zookeeper is not a recognized option问题解决

一安装JAVA JDK(略) 二安装ZooKeeper 下载安装包,建议bin版本 http://zookeeper.apache.org/releases.html#download解压并进入ZooKeeper,将“zoo_sample.cfg”重命名为“zoo.cfg” D:\Kafka\apache-zookeeper-3.7.1-bin\conf…...

leetcode刷题 | 关于二叉树的题型总结1

leetcode刷题 | 关于二叉树的题型总结1 文章目录leetcode刷题 | 关于二叉树的题型总结1题目连接完全二叉树插入器在每个树行中找最大值找树左下角的值二叉树的右视图二叉树剪枝题目连接 919. 完全二叉树插入器 - 力扣(LeetCode) 515. 在每个树行中找最…...

webpack新手入门

前言: 如何配置webpack呢? webpack概念有哪些呢? 怎么快速理解并使用webpack呢? 文章目录一. 什么是webpack二. 安装webpack三. webpack的五个核心概念四. webpack配置五. loader加载器1. css处理2. 处理文件(图片&…...

Redis中有常见数据类型

Redis的数据类型 string数据类型 string是redis最基本的类型,而且string类型是二进制安全的。意思是redis的string可以包含任何 数据,比如jpg图片或者序列化的对象 String类型是最基本的数据类型,一个redis中字符串value最多可以是512M r…...

【知识梳理】Go语言核心编程

基础知识 Go语言就是为了解决编程语言对并发支持不友好、编译速度慢、编程复杂这三个问题而诞生的 特点: Go语言选择组合思想,抛弃继承关系通过接口组合,自由组合成新接口,用接口实现层与层之间的解耦语言特性对比: package mainimport "fmt"func main() {fmt…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

02.运算符

目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...