-
VoxelNet
2021-02-22 17:16:17VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 文章:VoxelNet 这是来自于苹果的一篇文章,一作是目前就职于Waymo的Yin Zhou。通讯作者是苹果的AI research group的首席研究员,Oncel ...VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection
文章:VoxelNet
这是来自于苹果的一篇文章,一作是目前就职于
Waymo
的Yin Zhou
。通讯作者是苹果的AI research group的首席研究员,Oncel Tuzel。Abstract
VoxelNet
将点云均等的切分为3D
体素,并且通过一种新引入的体素特征编码层(VFE
)将每个体素中的一组点转化为统一的特征展示。通过这种方法,将点云编码为一个可展示的体积表达方式。之后通过RPN
生成检测目标。该方法在KITTI上表现不错。Introduction
激光雷达数据的不足:
- 稀疏
- 高度可变的点密度
- 非结构化
列举了处理激光雷达点云数据不足的方法:
-
手动设置特征展示,如基于图像的,将点云光栅化为三维体素网格等,这些会丢失信息,使得具有瓶颈。
-
还有方法
PointNet
直接对点云进行处理,但是该方法计算量巨大。
文中提出的方法:
VoxelNet
设计了体素特征编码(VFE
)使得体素内的点相互作用,再不断堆叠VFE
层,进而学习描述3D
形状信息的复杂特征。之后再通过卷积网络进一步抽象特征,最后通过RPN
生成目标。VoxelNet
在KITTI
的3D
和BEV
上进行测试,得到当时最好的表现。Related Work
- 特征展示的方法有很多,如下:
Structural indexing: effificient 3-d object recognition
,Cosmos-a representation scheme for 3d free-form objectsm
,Point signatures: A new representation for 3d object recognition
不适合复杂的目标和场景。
- 从
2D
推断3D
的方法:
3d object proposals for accurate object class detection.
,Monocular 3d object detection for autonomous driving
,Data-driven 3d voxel patterns for object category recognition
,受制于深度的准确度。
- 还有利用体素网络表示的
Voting for voting in online point cloud object detection
,Vote3deep: Fast object detection in 3d point clouds using effificient convolutional neural networks
,- 图像和激光雷达融合的方法
Onboard object detection: Multicue, multimodal, and multiview random forest of local experts
,Multi-view 3d object detection network for autonomous driving
Contribution
- 提出了一个端到端的可训练的基于点云的
3D
目标检测网络模型,避免了由于手动特征工程所带来的信息瓶颈问题 - 它既得益于体素网格上的稀疏点结构和高效的并行处理
- 在KITTI上的汽车、行人和自行车上表现都很好
VoxelNet
VoxelNet Architecture
Feature Learning Network
Voxel Partition:
Grouping:将每个体素中的点构成一个组,每个体素中的点数不一样。
Random Sampling:
- 随机采样固定数量的点(T)
- 减少计算
- 减少体素之间点的不平衡,减少采样偏差,增加训练的更多变化
Stacked Voxel Feature Encoding:
经过n次的VFE
,最终得到的Voxel-wise Feature
的维度为C
.Sparse Tensor Representation
将非空体素特征转化为
4D
张量,C*D'*H'*W'
。- 尽管点云约有10万个点,但是90%以上的体素都是空的,所以将非空体素转化为张量大大简化了计算和存储。
Convolutional Middle Layers
ConvMD(c_in, c_{out}, K, s, p)
Region Proposal Network
其实现方式如下所示:
Loss Function
Efficient Implement
每个体素可以并行处理。
Training Details
Network Details
# car detection 1. range of [[3, 1] × [[40, 40] × [0, 70.4] meters along Z, Y, X axis respectively 2. voxel size: vD = 0.4, vH = 0.2, vW = 0.2 3. D′ = 10, H′ = 400, W′ = 352 4. T = 35 5. two VFE layers: VFE-1(7, 32) and VFE-2(32, 128) 6. sparse tensor of shape 128 × 10 × 400 × 352 7. Conv3D(128, 64, 3, (2,1,1), (1,1,1)), Conv3D(64, 64, 3, (1,1,1), (0,1,1)), Conv3D(64, 64, 3, (2,1,1), (1,1,1)) 8. a 4D tensor of size 64 × 2 × 400 × 352 9. the input shape of RPN 128 × 400 × 352 10. one anchor size, la = 3.9, wa = 1.6, ha = 1.56 meters, centered at z_c^a = =1.0 meters with two rotations, 0 and 90 degrees. 11. An anchor is considered as positive 0.6(Iou threshold) 12. An anchor is considered as negtive 0.45(Iou threshold) 13. \alpha = 1.5, \beta = 1 14. batch_size = 16 15. learning_rate = 0.01 1-150 epochs, 0.001 150-160 epochs # Pedestrian and Cyclist Detection 1. range is [[3, 1] × [[20, 20] × [0, 48] meters along Z, Y, X axis respectively 2. voxel size: vD = 0.4, vH = 0.2, vW = 0.2 3. D = 10, H = 200, W = 240 4. T = 45 5. la = 0.8, wa = 0.6, ha = 1.73 meters centered at zca = =0.6 meters with 0 and 90 degrees rotation for pedestrian 6. la = 1.76, wa = 0.6, ha = 1.73 meters centered at zca = =0.6 with 0 and 90 degrees rotation for cyclist 7. An anchor is considered as positive 0.5(Iou threshold) 8. An anchor is considered as negtive 0.35(Iou threshold)
Data Augmentation
-
perturbation
-
global scaling to all ground truth boxes and to the whole point cloud
-
global rotation to all ground truth boxes and to the whole point cloud
Experiments
Evaluation on KITTI Validation Set
Evaluation on KITTI Test Set
Conclusion
- 提出了一个端到端的可训练的基于点云的
3D
目标检测网络模型,避免了由于手动特征工程所带来的信息瓶颈问题 - 它既得益于体素网格上的稀疏点结构和高效的并行处理
- 在KITTI上的汽车、行人和自行车上表现都很好
-
voxelnet_VoxelNet
2021-01-17 13:51:53在这篇论文中,我们去除了人工特征标注,提出了VoxelNet,统一特征提取,利用single stage,end to end 深度网网络。VoxelNet把点云均匀分割在3D体素,然后利用voxel feature encoding层将它们转化成标准特征...Abstract
为了让高度稀疏的LiDAR点云和region proposal network接合,现存方法着重于手工制作特征表达,例如BEV。在这篇论文中,我们去除了人工特征标注,提出了VoxelNet,统一特征提取,利用single stage,end to end 深度网网络。VoxelNet把点云均匀分割在3D体素,然后利用voxel feature encoding层将它们转化成标准特征表示。
Introduction
LiDAR点云稀疏且密度多变,由传感器有效距离、阻碍、相关姿势、不统一的3D空间等多种因素引起。图片检测识别领域的主要突破就是从hand-crafted features 转到machine-learned features.
将三维特征学习网络扩展到多个数量级点和三维检测任务是我们在本文中解决的主要挑战。
VoxelNet.png
我们设计了一个新的voxel feature encoding(VFE)layer,通过结合点尺度特征和局部放大特征,体素中的点可以相互作用。通过层叠的VFE层将体素编码,然后3D卷积进一步放大局部voxel特征,将点云转化成高维的体积的表达。最后通过RPN产生检测结果。
我们还证明了体素网在从激光雷达点云探测行人和骑自行车的人方面取得了非常令人鼓舞的结果。
Related Work
基于图片的3D检测方法和深度估计有很强的联系。
VoxelNet
2.1 VoxelNet Architecture
Feature learning network
Convolutional middle layers
Region proposal network
2.1.1 Feature learning network
Voxel Partition
将点云划分为均匀的体素网格。
Grouping
点云在空间中分布不均,导致各个体素内点云数量差别很大。
Random sampling
LiDAR通常可以采集100K的点,运算代价太大,对每个体素内点数超过T的体素实施随机采样,采T个点,好处有两点:
计算量减小
减下体素间的差异,避免采样偏差
Stacked Voxel Feature Encoding
Voxel feature encoding layer..png
Sparse Tensor Representation
处理非空体素,得到四维tensor张量,C代表维度。
点云数据中有百分之九十的体素都是空的。
2.1.2 Convolutional Middle Layers
通过扩大接受域扩大了 voxel-wise 特征,给shape description 增加了内容。
2.1.3 Region Proposal Network
Region proposal network architecture.png
2.2 Loss Function
Loss Function.png
2.3 Efficient Implementation
把点云转化成dense tensor structure,VFE可以平行处理点和体素,以便接下来的convolutional middle layers 和RPN处理。
将点加入体素的过程用哈希表实现,voxel coordinate 被当作哈希key。
-
voxelnet_VoxelNet论文解读
2020-12-21 16:11:230. 前言在深度学习模型更新换代如此之快的今天,VoxleNet这样“老东西”速度过慢已经导致自动驾驶玩家抛弃了它,... 介绍在voxelnet发表之前,pointnet 和 pointnet++ 两篇paper都已经发表了。说到了这种方法对计算...0. 前言
在深度学习模型更新换代如此之快的今天,VoxleNet这样“老东西”速度过慢已经导致自动驾驶玩家抛弃了它,而且知乎很多博主都写的很好了,写这篇文章主要是为了后面介绍SECOND,Pointpillar等模型做铺垫(好吧,又挖了一个坑。。。)
论文链接
代码链接
1. 介绍
在voxelnet发表之前,pointnet 和 pointnet++ 两篇paper都已经发表了。说到了这种方法对计算要求比较高。
受Faster R-CNN 的启发,VoxelNet 也应用了 RPN(Region Proposal Network),只不过这里是3d的。
2. 网络介绍
Voxelnet 网络由三部分组成:
(1)Feature learning network
(2)Convolutional middle layers
(3)Region proposal network
(1)特征学习层
a. Voxel Partition (体素划分)
将点云划分为空间里的小立方体(体素),这里以汽车为例,考虑的范围上下[-3, 1], 左右 [-40, 40], 前后[0, 70.4]这体素在这三个方向的大小分别为 0.4, 0.2, 0.2, 所以体素的“分辨率”为10×400×352。
b. Grouping (分组)
安装上面的每个体素将点云分组,但是上图所示的1号和3号的点云数量差很多。
c. Random Sampling (随机采样)
这里随机采样每个体素中的T个点,多于T的取T,少于T的则都取,这里T=35。
d. Stacked Voxel Feature Encoding (VFE, 体素特征编码)
这是这篇文章的创新的地方(知识点),上图有n个VFE,不过对于Car Detection 则只用了VFE-1和VFE-2两层,下图为VFE-1:
VFE-1 对于体素内的第i个点云来说,一般都包含以下信息 (xi, yi, zi, ri) 前三个为空间坐标,第四个为reflectance反射率(有时也用intensity的缩写i表示),通过每个体素内的所有点可以求得质心的坐标为 (vx, vy, vz), 则每个点云的特征长度由四个变为7个[xi, yi, zi, ri, xi-vx, yi-vy, zi-vz], 也就是上图中的Point-wise Input, 接下来的 Fully Connected Neural Net 由一个线性层,一个批处理层(BN)和Relu层组成, 对于 Car Detection, 得到的Piont-wise-Feature 长度为16; 将该特征和在该特征做了最大池化的 Locally Aggregated Feature 组合成为该层VFE的输出特征,长度为32。
对与Car Detection 来说 VFE-1(7, 32), VFE-2(32, 128), 所以输入给卷积中间层的特征长度为128,整张体素空间的大小为 128×10×400×352。
e. Sparse Tensor Representation ()
这种表示体素特征的方法可以在反响传播的过程中减少内存和计算。
(2)Convolutional middle layers (卷积中间层)
表示方法(函数):ConvMD(cin, cout, k, s, p), M代表卷积维度,cin, cout 表示特征长度,k,s,p分别表示卷积核大小,stride步长,padding size。
对于Car Detection,有三层3d卷积:
ConMD(128, 64, 3, (2,1,1), (1,1,1))
ConMD(64, 64, 3, (1,1,1), (0,1,1))
ConMD(64, 64, 3, (2,1,1), (1,1,1))
最后的得到的特征图大小为 64 × 2 × 400 × 352。在送入RPN之前先整合一下,变成:128 × 400 × 352。
(3)Region proposal network (区域提取网络)
Region proposal network architecture 如上图所示,RPN由三个Block组成,每个block里有多层二维的fully connected layers,每层全卷积之后也会有BN和RELU。通过将stride 步长设为2 使H'和W' 变为一半。
映射为两个学习的目标:1. probability score map。2.regression map,特征长度分别为2和14。
2.2 损失函数
这里每一个体素就是anchor, 一个假设预测出的anchor在鸟瞰图中具有和gt最大的IOU或则它与gt的IOU值大于0.6就为positive.如果和所有的gt都小于0.45,就是negtative,处于0.45~0.6之间的不做处理, 对于 Car Detection, 这里没一个anchor的大小为 3.9(长)×1.6(宽)×1.56(高), anchor的高度为-1.0。
其中
是BB下底面的对角线长度,所以损失函数如下:
Loss Function 其中
和
分别表示正样本和负样本的Softmax输出,
和
分别表示神经网络的正样本输出的标注框和真实标注框。损失函数的前两项表示对于正样本输出和负样本输出的分类损失(已经进行了正规化),其中
表示分类交叉熵,α = 1.5和β= 1是两个常数,它们作为权重来平衡正负样本损失对于最后的损失函数的影响。
表示回归损失,这里采用的是Smooth L1函数。
3. 思考
目前voxelnet的速度还是很难满足自动驾驶的需求,但是类比像素的这种"体素"的想法还是很有开创性的;
对不同的Object 要提前设好anchor的大小具有局限性;
-
VoxelNet阅读笔记
2020-02-15 21:27:44 -
Voxelnet中文.pdf
2019-07-18 22:38:33VoxelNet点云目标识别的翻译版,虽然很多地方还存在翻译上的错误,但是大部分的公式格式已经调好。 -
CMU_VoxelNet-源码
2021-03-04 11:33:34VoxelNet PyTorch 使用所述的VoxelNet架构,使用激光雷达预测KITTI对象。 这将被扩展以预测茂密的森林点云(如树干)中的对象。 目录 变身 为了从原始点云中完全提取边界框预测,我们必须执行许多转换。 点云转换 ... -
VoxelNet 学习笔记
2021-02-13 11:29:49CVPR2018《VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection》 文章目录前言一、主要思想和创新点二、整体网络框架1.Feature Learning Network2.Convolutional Middle Layers3.Region ... -
voxelnet阅读笔记
2020-02-07 22:43:082018年提出的voxelnet,把阅读过程中的一些关键内容和没看懂的地方做下笔记。 摘要 关键词:将高度稀疏的雷达点云与区域建议网络(RPN)进行接口。将特征提取和包围框预测统一到一个阶段,是一个端到端可训练的深度... -
VoxelNet的简单理解
2020-06-02 19:35:44原paper 代码可以在github中找到。 在阅读文章的时候借鉴了以下链接的博文: VoxelNet: 基于点云的三维空间信息逐...[论文笔记] VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection ... -
voxelnet折腾史
2018-05-08 21:02:53voxelnet要求Python3.5+,所以使用Anaconda3-5.1.0-Linux-x86_64.sh安装Python3.6 wget https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh ./Anaconda3-5.1.0-Linux-x86_64.sh 2. 安装tens... -
voxelnet_苹果最新机器学习论文:使用VoxelNet进行3D物体检测
2021-01-17 13:51:52原标题:苹果最新机器学习论文:使用VoxelNet进行3D物体检测 原文来源:arXiv作者:Yin Zhou、OncelTuzel「雷克世界」编译:嗯~阿童木呀 多啦A亮现如今,3D点云(3D point clouds)中的精确目标检测是许多应用中的核心... -
voxelnet训练及测试用数据集
2019-07-11 21:22:36voxelnet网络:基于点云的三维物体检测的端到端学习 论文地址:https://arxiv.org/pdf/1711.06396.pdf github代码地址:https://github.com/tsinghua-rll/VoxelNet-tensorflow 注:GitHub上面有很多份实现代码,... -
VoxelNet-tensorflow:用于自动驾驶的3D对象检测系统-源码
2021-02-06 08:47:34VoxelNet-张量流 一个tensorflow实施 。 需求 Python 3.5+ tensorflow 1.4+ NumPy等 用法 看一下config.py的模型配置,通过将数据拆分为测试/训练集。 运行setup.py来构建Cython模块。 $ python setup.py build_... -
代码复现 : voxelnet_tensorflow版本
2021-02-20 18:17:38程序代码:https://github.com/qianguih/voxelnet 程序运行环境 运行系统:Ubuntu18.04 使用语言:Python3.56 硬件支持:GTX2080Ti + CUDA10.0 + CUDNN7.6.5 + TensorFlow-gpu1.15.4 -
-
voxelnet程序运行遇到的那些坑
2019-07-18 10:47:36申明:本内容完全基于(https://blog.csdn.net/AdamShan/article/details/84837211 )《无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现 》 博客后面提供的代码实现的。代码请前往... -
VoxelNet:End-to-End Learning for Point Cloud Based 3D Object Detection阅读笔记
2020-02-11 12:46:19本文首发于公众号【3D视觉工坊】,原文请见VoxelNet阅读笔记 主要思想和创新点 三维点云中目标的精确检测是许多应用中的核心问题,如自主导航、管家机器人和增强/虚拟现实等。为了将高度稀疏的激光雷达点云与区域... -
无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现
2018-12-05 15:33:40无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现 前文我们提到使用SqueezeSeg进行了三维点云的分割,由于采用的是SqueezeNet作为特征提取网络,该方法的处理速度相当迅速(在单GPU... -
代码复现:voxelnet_pytorch版本(3D-detection)
2019-11-10 18:19:08申明:本篇博客是在voxelnet_tensorflow版本 代码复现的过程中并不理想,经常导致内存泄漏死机,无法正常训练,在使用各种办法之后终于找到了voxelnet_pytorch版本的代码来进行复现,经过本人亲自测试,这个版本的... -
VoxelNet: 基于点云的三维空间信息逐层次学习网络
2020-09-08 09:30:33VoxelNet: 基于点云的三维空间信息逐层次学习网络一、简介二、核心思路总结三、要点分析1. 点云的多层次学习2、点云的高效查询四、总结解释 地址:https://arxiv.org/abs/1711.06396 一、简介 这篇文章主要是对来自... -
三维点云学习(6)3-3D Object Detection-VoxelNet,PointPillars
2020-08-06 11:44:33三维点云学习(6)2-3D Object Detection-VoxelNet,PointPillars 处理三维点云的检测的方法 MV3D VoxelNet -
代码复现:voxelnet_tensorflow版本(3D-detection)
2019-11-06 21:31:19申明:本篇博客只是voxelnet_tensorflow版本 (3D-detection) 代码的复现,并不涉及论文的解读,以下步骤都是本人亲自实践最后成功运行,由于在原地址程序https://github.com/qianguih/voxelnet中的代码是使用两张GTX... -
VoxelNet阅读笔记:基于点云的端到端3D物体检测网络
2020-04-13 08:21:04标题:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 作者:Yin Zhou, Oncel Tuzel 来源:CVPR 2018 摘要 准确检测 3D 点云中的物体是许多应用中的核心问题,例如自主导航,管家... -
VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection学习记录
2019-08-16 16:13:06VoxelNet: 基于点云三维目标检测的端到端学习网络一,简介二,要解决的问题三,核心思路总结 一,简介 VoxelNet: 一种通用的三维检测网络,将特征提取以及边界框预测联合在一个阶段,是一种端到端的可训练的深度... -
《《《翻译》》》VoxelNet:基于点云的三维物体检测的端到端学习
2018-05-17 12:54:47https://arxiv.org/pdf/1711.06396.pdf https://github.com/jeasinema/VoxelNet-tensorflow摘要3D点云中物体的精确检测是许多应用中的一个核心问题,如自主导航、室内机器人和增强/虚拟现实。为了将高度稀疏的激光...