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

news2024/11/26 4:33:24

分享嘉宾 | 杨泽同

文稿整理 | 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网络,无论是基于体素还是基于点。最后一个是可以去用基于图片的特征网路去提取特征,这些都是未来可以做的一些方面。

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

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

相关文章

Redis 的安装 + SpringBoot 集成 Redis

1.安装 Redis此处的 Redis 安装是针对 Linux 版本的安装, 因为 Redis 官方没有提供 Windows 版本, 只提供了 Linux 版本. 但是我们可以通过Windows 去远程连接 Redis.1.1 使用 yum 安装 Redis使用如下命令, 将 Redis 安装到 Linux 服务器:yum -y install redis1.2 启动 Redis使…

科技云报道:开源真的香,风险知多少?

科技云报道原创。 过去几年,开源界一片火热,开源软件技术已全面进军操作系统、云原生、人工智能、大数据、半导体、物联网等行业领域。 数据显示,我国超九成企业在使用或正计划使用开源技术。 与此同时,全球各大开源组织相继兴…

苹果手机专用蓝牙耳机有哪些?与iphone兼容性好的蓝牙耳机

蓝牙耳机摆脱了线缆的束缚,在地以各种方式轻松通话。自从蓝牙耳机问世以来,一直是行动商务族提升效率的好工具,苹果产品一直都是受欢迎的数码产品,下面推荐几款与iphone兼容性好的蓝牙耳机。 第一款:南卡小音舱蓝牙耳…

Springboot部署阿里云短信服务

一、阿里云短信模板配置(获取SignName[签名名称]、TemplateCode[模板CODE]) 1. 进入阿里云首页直接搜索短信服务,并点击国内消息进入国内文本短信管理页面 2. 选择签名管理点击添加签名 填写签名信息并提交 注:下面的签名来源如…

全栈自动化测试技术笔记(一):前期调研怎么做

昨天下午在家整理书架,把很多看完的书清理打包好,预约了公益捐赠机构上门回收。 整理的过程中无意翻出了几年前的工作记事本,里面记录了很多我刚开始做自动化和性能测试时的笔记。 虽然站在现在的角度来看,那个时候无论是技术细…

【Java 面试合集】描述下Objec类中常用的方法(未完待续中...)

描述下Objec类中常用的方法 1. 概述 首先我们要知道Object 类是所有的对象的基类,也就是所有的方法都是可以被重写的。 那么到底哪些方法是我们常用的方法呢??? cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringw…

你知道 GO 中什么情况会变量逃逸吗?

你知道 GO 中什么情况会变量逃逸吗?首先我们先来看看什么是变量逃逸 Go 语言将这个以前我们写 C/C 时候需要做的内存规划和分配,全部整合到了 GO 的编译器中,GO 中将这个称为 变量逃逸 GO 通过编译器分析代码的特征和代码的生命周期&#x…

在RT-Thread STM32F407平台下配置SPI flash为U盘

记录下SPI Flash U盘实现过程中踩过的坑,与您分享。前提条件是,需要先将SPI Flash 配置到elm fal文件系统,并挂载成功。如下图然后开始配置USB1,在CubeMX,选择SUB_OTG_FS2 选择USB Device3,确认USB时钟为48…

流程控制之循环

文章目录五、流程控制之循环5.1 步进循环语句for5.1.1 带列表的for循环语句5.1.2 不带列表的for循环语句5.1.3 类C风格的for循环语句5.2 while循环语句5.2.1 while循环读取文件5.2.2 while循环语句示例5.3 until循环语句5.4 select循环语句5.5 嵌套循环5.4 利用break和continue…

【八大数据排序法】堆积树排序法的图形理解和案例实现 | C++

第二十一章 堆积树排序法 目录 第二十一章 堆积树排序法 ●前言 ●认识排序 1.简要介绍 2.图形理解 3.算法分析 ●二、案例实现 1.案例一 ● 总结 前言 排序算法是我们在程序设计中经常见到和使用的一种算法,它主要是将一堆不规则的数据按照递增…

BinaryAI全新代码匹配模型BAI-2.0上线,“大模型”时代的安全实践

导语BinaryAI(https://www.binaryai.net)科恩实验室在2021年8月首次发布二进制安全智能分析平台—BinaryAI,BinaryAI可精准高效识别二进制文件的第三方组件及其版本号,旨在推动SCA(Software Composition Analysis&…

网络通信协议是什么?

网络通信基本模式 常见的通信模式有如下2种形式:Client-Server(CS) 、 Browser/Server(BS) 实现网络编程关键的三要素 IP地址:设备在网络中的地址,是唯一的标识。 端口:应用程序在设备中唯一的标识。 协议: 数据在网络中传输的…

7、单行函数

文章目录1 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类2 数值函数2.1 基本函数2.2 角度与弧度互换函数2.3 三角函数2.4 指数与对数2.5 进制间的转换3 字符串函数4 日期和时间函数4.1 获取日期、时间4.2 日期与时间戳的转换4.3 获取月份、星期、星…

码上掘金实现电子木鱼

前言 前几天在朋友圈看到“敲电子木鱼”的视频,敲一下木鱼就提示“功德 1”,还带有敲击声和念经的声音,感觉挺有意思的。 心血来潮,捣鼓了一晚上,借助码上掘金实现了这个功能。 展示效果 素材 准备素材如下&#…

又一国产开源项目走向世界,百度RPC框架Apache bRPC正式成为ASF顶级项目

2023 年 1 月 26 日,Apache 软件基金会 (ASF) 官方正式宣布Apache bRPC 正式毕业,成为 Apache的顶级项目。 我听到这个消息是挺开心的,毕竟是又一款由国人主导的apche顶级项目,再次证明国内在开源界正在发挥越来越重要的作用。 …

Java的对象和类

名词解释 对象是指由类定义的数据结构,拥有属性和方法。它是运行时实例化的。 类是一种用于描述对象的模板,它定义了对象的属性和方法。类是一种类型,可以用于定义对象,并且可以对对象进行操作。 故事概要 小明是初学者想要学习…

JVM——7JVM调优实战及常量池详解

Arthas工具的使用 阿里巴巴开源的java诊断工具 下载插件 上传至linux环境 在linux跑起来的java项目,可以用Arthas进行查看 项目上线前的时候没问题,上线了就出问题 ,用来查看线上代码 jad 项目名 :反编译线上正在运行的代码 用…

SpringCloud-Netflix学习笔记10——Hystrix实现服务熔断

一、概述 1、分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败! 2、服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B 和微服务C又…

雁过留痕,竟是病毒的痕迹?

凌恩生物全新升级宏病毒组分析流程;聚焦DNA,RNA病毒组研究热点;高灵敏度检测vOTUs;多软件整合,精准鉴定病毒序列;直击地化循环关键环节,助力宏病毒组科研成功!期刊:Micro…

板子登录和挂载问题记录

ubuntu登录板子问题 ssh登录ssh 10.1.3.15,显示No route to host 则尝试在板子上ping 本机ip 试一下 挂载 本地机器vim /etc/export编辑此内容并保存 /exports_0209/tda4_build *(rw,no_root_squash,nohide,insecure,no_subtree_check,async)1.挂载nfs方法 mou…