精华文稿|迈向统一的点云三维物体检测框架
分享嘉宾 | 杨泽同
文稿整理 | 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…...
Java中动态调用setter以及getter
0x00 前言 对于非专业程序员的安全人员来说,因为没有代码项目的积累,很多知识体系都不完善,所以有必要在一些常用的内容进行学习的总结。 在很多的调用链中都会用到**“动态调用setter以及getter”**这个知识点,比如经典的CB链&a…...
基于 NeRF 的 App 上架苹果商店!照片转 3D 只需一部手机,网友们玩疯了
前言 只用一部手机,现实中的 2D 照片就能渲染出 3D 模型? 没错,无需再手动上传电脑或安装激光雷达,苹果手机自带 App 就能生成 3D 模型。 这个名叫 Luma AI 的“NeRF APP”,正式上架 App Store 后爆火: 小…...
C++类与对象(中)
✅<1>主页:我的代码爱吃辣 📃<2>知识讲解:C 🔥<3>创作者:我的代码爱吃辣 ☂️<4>开发环境:Visual Studio 2022 💬<5>前言:C类中一共有六个默认成员函…...
计算机软件技术基础复习
数据结构 文章目录数据结构第一节 数据结构的基本概念第二节 线性结构线性表顺序表和链表的特点实现循环队列第三节 非线性结构树操作系统操作系统概述进程和程序存储空间的组织数据库技术数据库设计软件技术软件生命周期第一节 数据结构的基本概念 数据结构:指相互…...
python爬虫--beautifulsoup模块简介
BeautifulSoup 的引入 我们学习了正则表达式的相关用法,但是一旦正则写的有问题,可能得到的就不是我们想要的结果了,而且对于一个网页来说,都有一定的特殊的结构和层级关系,而且很多标签都有 id 或 class 来对作区分&…...
Swfit Copy On Write 原理解析
1. Swift Copy On write 原理是什么 Swift 中的 Copy On Write (COW) 技术是一种内存优化技术,其原理是在需要修改数据时才进行拷贝,以避免不必要的内存消耗。 COW 的实现主要依赖于 Swift 中的结构体和类的特性。对于结构体而言,它是值类型…...
【面试题】经典面试题:让 a == 1 a == 2 a == 3 成立?
一、问题解析 if (a == 1 && a == 2 && a == 3) {console.log(Win) } 复制代码 如何打印除Win? 看到题目的第一眼,我是蒙蔽的.怎么可能会有如此矛盾的情况发生呢?就相当于一个人怎么可能即是小孩,又是成年人,还是老年人呢? 冷静下来,发现一些端倪。...
我是歌手-C语言
“我是歌手”是成名歌手之间的比赛节目,2轮比赛中观众支持率最低者出局。 这里我们假设有n个歌手进行了m轮比赛,请求出局者(m轮总分最低者)。 输入n个歌手(编号依次为1,2,......n)…...
Acwing---112.雷达设备
雷达设备1.题目2.基本思想3.代码实现1.题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超…...
SSJ-21A AC220V静态【时间继电器】
系列型号: SSJ-11B静态时间继电器;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间继电器 SSJ-42A静态时间继电器SSJ-41A静态时间继电器 SSJ-41B静态时间继电器SSJ-32B静态时间继电…...
馆陶网站建设电话/seo博客网址
如果你准备发AI方向的论文,或准备从事科研工作或已在企业中担任AI算法岗的工作。那么我真诚的向大家推荐,贪心学院《高阶机器学习研修班》,目前全网上应该找不到类似体系化的课程。课程精选了四大主题进行深入的剖析讲解,四个模块…...
合肥 做网站的/百度新闻搜索
河津市文昕中学2019年招生政策问答2019年中考落下帷幕,自市教育局公布2019年中招报考新政策后,引起了家长和考生的强烈反响,不断有家长通过多渠道进行咨询,为此,我校就家长朋友们特别关心的几个问题作以下解答…...
金藏源电商网站建设多少钱/腾讯企点下载
要想在你的view或者viewController中实现长按弹出菜单栏你必须要调用becomeFirstResponder方法,其次要实现canBecomeFirstResponder方法,并返回YES. #import "ViewController.h"interface ViewController ()property(nonatomic,strong)UILabel…...
360网站怎么建设/搜索引擎入口大全
一 应用场景描述现在我需要向50数量的服务器分发Logstash新版本的rpm包,大概220MB左右,直接使用Ansible的copy命令进行传输,命令如下:ansible all -m copy -a "src/opt/software/logstash/logstash-agent-2.3.3-fb.centos6.…...
服务网站备案/seo发包排名软件
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一个正常成年人有多少根头发&a…...
重庆学校网站建设/东莞百度快速排名优化
FillOval 和DrawOval 用来填充和绘制椭圆。下面例子显示椭圆的用法。 private void Ovals() { Color redColor new Color(0x96ff0000, true); Color greenColor new Color(0x00ff00); AffineTransform mat1; mat1 new AffineTransform(); mat1.Translate(30, 40); mat1.Rota…...