IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【3D目标检测】PointPillars: Fast Encoders for Object Detection from Point Clouds -> 正文阅读

[人工智能]【3D目标检测】PointPillars: Fast Encoders for Object Detection from Point Clouds

概述

首先,本文是基于点云,但不是将点云处理成体素,而是体柱!
提出动机与贡献: 比较主流的一种方式就是将点云编码成体素,但是这就使得后面需要使用3D卷积进行特征提取,开销比较大(哪怕SECOND中引入了稀疏卷积,计算量还是比2D卷积大);另外一种思路就是从俯视角度将点云数据进行处理,得到伪图片的数据,之后使用2D卷积处理,开销小了,但是得到伪图片的过程中,丢失了很多信息。因此作者在一定程度上融合了这两种方法的思想,提出了一种新的点云编码方式,在这种方式下,仅仅使用2D卷积就可以实现端到端的3D目标检测。

这种编码方式的优点:

  1. 通过学习特征而不是依赖固定编码器,PointPillars 可以利用点云表示的全部信息。(什么意思?)
  2. 体柱是主要考虑的是x、y的,z方向的划分不用考虑(相对于体素而言方便了,并且体柱也比体素少了很多)
  3. 所有的操作都是用2D卷积而没有使用3D卷积,计算效率大大增强

注:
转成鸟瞰图的优点:没有尺度模糊性(啥意思??),没有遮挡
转成鸟瞰图的缺点:会导致鸟瞰图很稀疏,而标准卷积比较适合处理稠密的图像。所以一个常见的处理思路就是将平面划分为若干个网格,然后聚合网格内点的特征作为当前网格的特征。(点云稀疏,所以将点云划分为体素,两者不能说是十分相似,只能说是一模一样)

细节

网络结构

流程:

  1. 一个特征编码网络,将点云划分为体柱,然后构成稀疏的伪图片数据(3维张量)
  2. 在伪图片数据上使用2D卷积提取特征
  3. 使用SSD作为检测头得到最终分类和检测的结果
    在这里插入图片描述

从点云得到伪图像

在这里插入图片描述

详细表述:
假设点云中的点 l l l D = 4 D=4 D=4个特征 x , y , z , r x,y,z,r x,y,z,r,我们将平面空间划分为若干个网格,接着将点云中的点按照 x 、 y x、y xy坐标分配到对应网格中,得到一系列的体柱,假设非空体柱的个数是 P P P,非空体柱内的点数阈值是 N N N。和体素化时候的处理一样,如果体柱内的点超过了 N N N就只采样 N N N个点,不足 N N N就用0填充。接下来给体柱中的点添加额外的5个特征,分别是 x c , y c , z c , x p , y p x_c,y_c,z_c,x_p,y_p xc?,yc?,zc?,xp?,yp?,前三者表示的是体柱中点的几何平均值(相当于是质心),后两者表示的是当前点与质心的相对偏移,这样的话,每个点的特征D就从4变为了9。
我们知道体素是稀疏的,虽然体柱在体素的基础上放宽了一定的限制,但体柱也还是稀疏的(作者的配置下,KITTI上的稀疏性大概是97%)。通过超参数的调整,我们可以使得张量 ( D , P , N ) (D,P,N) (D,P,N)相对稠密(这个张量表示当前有P个非空体素,每个体素内有N个点,每个点有D个对应的特征)。接着使用一个简单版本的PointNet的结构,进行点级的特征提取得到一个 ( C , P , N ) (C,P,N) (C,P,N),然后通过一个max pool操作得到体柱的特征 ( C , P ) (C,P) (C,P)(P个体素,每个体素用C个特征表示),接着将它映射到原始的体柱空间,得到稀疏的伪图片数据 ( C , H , W ) (C,H,W) (C,H,W),其中H、W就是原始体柱空间的宽和高。

概述:数据流变化:输入点云数据 ( p o i n t s ? n u m , 4 ) (points-num,4) (points?num,4),将平面划分成 H ? W H*W H?W个网格,每个网格就是一个体柱,将点云中的点放到对应的体柱中,取出其中非空的体柱构成张量 ( 9 , P , N ) (9,P,N) (9,P,N),接下来通过类似pointNet的结构得到一个高纬的表示 ( C , P , N ) (C,P,N) (C,P,N),然后是一个max pool操作得到非空体柱的特征 ( C , P ) (C,P) (C,P),接着将它映射回原体柱空间中得到最终的稀疏张量 ( C , H , W ) (C,H,W) (C,H,W)

对比VoxelNet:数据流变化:输入点云数据 ( p o i n t s ? n u m , 4 ) (points-num,4) (points?num,4),将空间划分成 D ? H ? W D*H*W D?H?W个体素,将点云中的点放到对应的体素中,取出其中非空的体素构成张量 ( 7 , P , N ) (7,P,N) (7,P,N),接下来通过类似pointNet的结构(VFE)得到一个高纬的表示 ( C , P , N ) (C,P,N) (C,P,N),然后是一个max pool操作得到非空体素的特征 ( C , P ) (C,P) (C,P),接着将它映射回原体素空间中得到最终的稀疏张量 ( C , D , H , W ) (C,D,H,W) (C,D,H,W)

对比的一个感受:在获得点云的特征表示的过程中,两者的流程以及中间的过程是一样的,区别主要就在于编码点云的方式,是采用体素的形式编码还是采用体柱的方式编码。

骨干网络

在这里插入图片描述
刚才我们说了,基于体柱的点云特征表示是一个伪图像的数据,对于这种3维的张量我们就可以使用2D卷积处理,这里处理的过程类似于VoxelNet的2D特征提取网络。

对比VoxelNet:VoxelNet采用3D卷积+2D卷积做特征提取,而PointPillars只使用2D卷积

检测头

使用SSD作检测头

损失函数

本文的损失函数与SECOND中使用的损失函数是一模一样的。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:28:48  更:2022-11-05 00:29:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:33:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码