社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

综述:三维点云深度学习技术

3D视觉工坊 • 3 年前 • 532 次点击  
作者丨小白@知乎
来源丨https://zhuanlan.zhihu.com/p/157791868
编辑丨深蓝学院
本文是对的解读,欢迎大家一起进行技术交流。




摘要



点云学习因其在计算机视觉、自动驾驶、机器人等领域的广泛应用而受到越来越多的关注。深度学习作为人工智能的主流技术,已经成功地应用于解决各种二维视觉问题。然而,由于用深度神经网络处理点云所面临的独特挑战,点云的深度学习仍处于起步阶段。最近,关于点云的深入学习变得更加繁荣,有许多方法被提出来解决这一领域的不同问题。为了促进未来的研究,本文综述了点云深度学习方法的最新进展。它包括三个主要任务,包括三维形状分类三维目标检测与跟踪三维点云分割。它还提供了几个公开数据集的比较结果,以及富有洞察力的观察和启发未来的研究方向。


Introduction



随着3D采集技术的快速发展,3D传感器变得越来越可用且价格实惠,包括各种类型的3D扫描仪、激光雷达和RGB-D相机(如Kinect、RealSense和Apple深度相机)。这些传感器获取的三维数据可以提供丰富的几何、形状和比例信息。借助于二维图像,三维数据为更好地了解机器周围环境提供了机会。三维数据在不同领域有着广泛的应用,包括自动驾驶、机器人技术、遥感和医疗。

三维数据通常可以用不同的格式表示,包括深度图像、点云、网格和体积网格。点云表示作为一种常用的表示格式,在三维空间中保留了原始的几何信息,而不需要进行任何离散化。因此,它是许多场景理解相关应用的首选表示,如自主驾驶和机器人技术。近年来,深度学习技术已成为计算机视觉、语音识别、自然语言处理等领域的研究热点。然而,三维点云的深度学习仍然面临着几个重大的挑战,如数据集的小规模、高维性和三维点云的非结构化性质。在此基础上,重点分析了用于三维点云处理的深度学习方法。

点云的深度学习越来越受到人们的关注,特别是近五年来。还发布了一些公开数据集,例如 ModelNet、ScanObjectNN、ShapeNet、PartNet、S3DIS、ScanNet、Semantic3D、ApololCar3D和KITTI Vision基准套件。这些数据集进一步推动了三维点云深度学习的研究,越来越多的方法被提出来解决与点云处理相关的各种问题,包括三维形状分类、三维目标检测与跟踪、三维点云分割、三维点云配准等,六自由度姿态估计和三维重建。关于三维数据的深度学习的调查也很少,我们的论文是第一次专门关注点云理解的深度学习方法。图1显示了一个现有的点云学习方法。

图1:三维点云深度学习方法的分类

3D SHAPE CLASSIFICATION



Public Datasets

  • ModelNet (CVPR'15)

    • ModelNet10

    • ModelNet40

  • PartNet (CVPR'19) 

  • ScanObjectNN (ICCV'19) 

此任务的方法通常是先学习每个点的嵌入,然后使用聚合方法从整个点云中提取全局形状嵌入。最后通过将全局嵌入嵌入到几个完全连通的层中来实现分类。根据神经网络输入的数据类型,现有的三维形状分类方法可分为基于多视图、基于体积和基于点的方法

基于多视图的方法将非结构化点云投影到二维图像中,而基于体积的方法将点云转换为三维体积表示。然后,利用成熟的二维或三维卷积网络实现形状分类。相比之下,基于点的方法直接在原始点云上工作,而不需要任何体素化或投影。基于点的方法不会引入显性信息丢失并日益流行。

Multi-view based Methods 首先将一个三维图形投影到多个视图中,然后提取各个视图的特征,然后融合这些特征进行精确的形状分类。如何将多视图特征聚合成一个有区别的全局表示是这些方法的一个关键挑战。

  • MVCNN(CVPR'15)

Multi-view Convolutional Neural Networks for 3D Shape Recognition(MVCNN)是一个开创性的工作,它简单地将多视图特性汇集到一个全局描述符中。但是,最大池只保留特定视图中的最大元素,从而导致信息丢失。

Volumetric-based Methods 通常将点云体素化为三维网格,然后将三维卷积神经网络(CNN)应用于体表示进行形状分类。

  • VoxNet(IROS'15)

VoxNet: A 3D convolutional neural network for real-time object recognition(VoxNet)网络、基于卷积深度的三维形状网,虽然已经取得了令人鼓舞的性能,但由于计算量和内存占用随着分辨率的增加而呈立方体增长,因此这些方法无法很好地适应密集的三维数据。

Pointwise MLP Methods 使用多个共享多层感知器(MLP)独立地对每个点建模,然后使用对称聚合函数聚合全局特征,如图2所示。典型的二维图像深度学习方法由于其固有的数据不规则性而不能直接应用于三维点云。

图2:PointNet的轻量级架构。n表示输入点的个数,M表示每个点学习特征的维数

  • PointNet

  • PointNet++

PointNet: Deep learning on point sets for 3D classification and segmentation(PointNet) 直接以点云作为输入并实现对称函数的置换不变性。PointNet使用几个MLP层独立地学习点态特征,并使用最大池化层提取全局特征。由于PointNet中每个点的特征都是独立学习的,因此无法获取点之间的局部结构信息。因此,提出了一种层次网络pointnet++来从每个点的邻域中捕捉精细的几何结构。作为PointNet++层次结构的核心,其集合抽象层由三层组成:采样层、分组层和基于PointNet的学习层。通过叠加多个集合抽象层次,pointnet++从局部几何结构中学习特征,并逐层抽象局部特征。

Convolution-based Methods 与二维网格结构(如图像)上定义的卷积核相比,由于点云的不规则性,三维点云的卷积核很难设计。根据卷积核的类型,目前的三维卷积方法可分为连续卷积法和离散卷积法,如图3所示。

图3:一个点的局部邻域的连续和离散卷积的图示。(a)表示以点p为中心的局部邻域qi;(b)和(c)分别表示三维连续卷积和离散卷积

3D Continuous Convolution Methods 定义了连续空间上的卷积核,其中相邻点的权重与相对于中心点的空间分布有关。

· PointConv(CVPR'19)

· ConvPoint(Computers & Graphics)

3D Discrete Convolution Methods 在规则网格上定义卷积核,其中相邻点的权重与相对于中心点的偏移量有关。

Graph-based Methods 将点云中的每个点看作图的顶点,并根据每个点的邻域生成有向边。然后在空间或光谱域中进行特征学习。典型的基于图的网络如图4所示。

图4:基于图的网络示意图

3D Object Detection



Public Datasets

  • KITTI (CVPR'12) 

    • 3D objecct detection

    • BEV

  • ApolloScape (TPAMI'19) 

  • Argoverse (CVPR'19) 

  • A*3D (arXiv'19)

  • Waymo (arXiv'19)

典型的3D对象检测器以场景的点云为输入,在每个检测到的对象周围生成一个定向的3D边界框,如图5所示。与图像中的目标检测相似,三维目标检测方法可分为两类:基于区域建议的方法和单次拍摄方法

图5:3D物体检测的图示

3D Point Cloud Segmentation



Public Datasets

  • Semantic3D (ISPRS'17) 

    • semantic-8

    • reduced-8

  • S3DIS (CVPR'17)

  • ScanNet (CVPR'17) 

  • NPM3D (IJRR'18) 

  • SemanticKITTI (ICCV'19) 

给定一个点云,语义分割的目标是根据点的语义将其分割成若干个子集。语义分割有四种模式:基于投影、基于离散化、基于点和混合方法。基于投影和离散化的方法的第一步都是将点云转换为中间正则表示,如多视图、球面、体积、全自动晶格和混合表示,如图6所示。然后将中间分割结果投影回原始点云。相比之下,基于点的方法直接作用于不规则的点云。

图6:中间表示的图示。

需要进一步研究的问题有:

  • 基于点的网络是最常被研究的方法。然而,点表示自然不具有显式的邻近信息,现有的大多数基于点的方法不得不借助于昂贵的邻近搜索机制(如KNN或ball query)。这从本质上限制了这些方法的效率,因为邻居搜索机制既需要很高的计算成本,又需要不规则的内存访问。

  • 从不平衡数据中学习仍然是点云分割中一个具有挑战性的问题。虽然有几种的方法取得了显著的综合成绩,但它们在类标很少的情况下表现仍然有限。例如,RandLA-Net在Semantic3D的reduced-8子集上获得了76.0%的整体IoU,而在hardscape类上获得了41.1%的非常低的IoU。

  • 大多数现有的方法都适用于小点云(如1m*1m,共4096个点)。在实际中,深度传感器获取的点云通常是巨大的、大规模的。因此,有必要进一步研究大规模点云的有效分割问题。

  • 已有少数文献开始研究动态点云的时空信息。预期时空信息可以帮助提高后续任务的性能,如三维目标识别、分割和完成

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。


一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
 圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/124381
 
532 次点击