编者按:随着深度学习技术的进展,如何通过深度学习对三维数据进行学习并提高几何处理方法的智能性成为近期研究工作的热点。三维技术的发展和应用正在受到学术界和工业界越来越多的关注。VALSE Webinar 2020-16期邀请高林(中科院计算所)、李鸿升(香港中文大学)、章国锋(浙江大学)、郭裕兰(国防科技大学)、盛律(北京航空航天大学)针对“点云深度学习:多一维看世界” 开展了深入探讨,本文是该次讨论的文字实录,共计6个议题。点击查看本次活动的报告信息、讲者及Panel嘉宾介绍:VALSE Webinar 20-16期 点云深度学习:多一维看世界
点云深度学习的很多任务和图像理解一致,也是分类、分割、检测等,它与现有的图像域深度学习的主要区别在哪?有何联系?点云深度学习要解决的核心问题是什么?
目前来说,二维的深度学习对于三维点云处理的深度学习的网络设计还是有重要的指导作用。比如,三维检测工作整体的大框架还是类似现在2D检测,比如proposal-refine two-stage的方案、类似anchor free的方案、single stage的方案,通过二维的网络对三维的网络设计有一定的指导价值。另一例子是三维点云分割,二维网络里面encoder-decoder结构也影响了三维分割网络的设计,三维分割网络里也看到了encoder-decoder这样的网络结构。现阶段,二维深度学习网络设计对于三维点云的处理还是有比较强的借鉴和作用。
逐渐发展之后,三维点云会出现更多更独特的网络结构的设计,比如PointNet,技术上也是一个非常独特的backbone的设计方式。点云深度学习当前得研究核心解决问题仍然是数据的表达,针对不同数据表达设计不同具体网络模型。
郭裕兰:无论是做图像理解,还是做点云深度学习,最关键的都是特征学习问题。但是点云相对图像有自己的特殊性,包括点云的无序性、稀疏性。通过传感器获得点云中,在三维空间中有很多地方并没有点,通常只在场景的表面上会有点。此外,还有点分布的不均匀性,比如近的地方点比较密,远处的点就很少。
图像并没有点云的上述特殊性。因此,在做网络设计时,需要考虑怎么针对某一种特定的数据表示类型去学习特征。当输入为点云时,也有很多方法尝试把点云转成中间的某种表达方式,比如多视图、体素、或混合表示。这些方法本质上为了针对点云本身特有的性质去更好地学习特征表示。此外,也需要考虑在目前的GPU所能承受的计算代价下去学习一个好的特征。
点云分类、分割和目标检测等任务的网络框架跟现有图像领域的工作有很多相似之处,能在图像领域找到不少借鉴。图像和点云的工作有相互促进的地方,做图像的人比较多做的也比较早,所以有不少思想对点云深度学习任务的网络设计能够产生比较好的启发。
02
针对相同的任务,例如目标检测、语义分割,点云深度学习的SOTA与图像深度学习的SOTA,哪个更接近实用?多一维度看世界,点云是否可以做得更好?目前有哪些因素限制了点云处理技术的发展?
郭裕兰:个人理解不一定会存在哪一个取代哪一个的问题,实际上两者有很强的互补性,一个在表观信息上比较强,另一个在几何信息上比较强,有各自的优势。如果想要获得很精确的位姿信息,获得很好的三维空间结构信息,则点云会更合适。在很多应用场景下,单一模态类型的传感器难以包打天下。比如自动驾驶在天气很好的情况下,用RGB相机可以把环境感知与理解任务做的很好,但如果遇到光线不好或是雨雾天气,光靠相机就有风险,这个时候就需要激光雷达来做补充。因此,在实际应用中,很多时候需要将图像和点云相结合,而不是用一个替换另一个。
李鸿升:二维和三维当前还是有着不同的适用场景。从目标检测的角度来讲,目前图像上目标检测已经非常实用了,比如人脸识别必须先做人脸检测,这些二维检测任务的性能已经非常高以及实用化。如果是从自动驾驶的角度来看,相比于基于图像的目标检测,基于三维点云的目标检测更接近实用。从KITTI的检测方法上看到,基于点云的三维目标检测比基于双目图像的目标检测精度高很多。在一些任务场景中,如果三维点云的数据可以获得、传感器容易部署,那么在这种情况下,可以尽量地使用三维点云的数据来增强整个检测的精度。
章国锋:这个问题里,点云深度学习如果也是包括RGB颜色信息的,那多了一维RGB加深度或点云信息的话,理论上肯定会做得更好。因为点云的无序性,之前确实不容易做得很好,后来PointNet这样的方法出来之后,点云深度学习也是取得了比较大的进展。总之,如果不考虑深度获取的代价,颜色加深度学习的肯定能做得更好。
盛律:多一个维度肯定会有比较好的性能增益。但是问题是哪种更接近实用,不同的方式需要需要服务于不同的场景,或者说是一种任务导向选择。比如手机场景下,图像就足够了,但是无人车、机器人场景下,一般需要明确的几何感知。在这种场景下,RGB加点云的融合的方案会更有利。关于哪些因素限制点云处理的发展,实际上跟第一个问题相像,无序性、稀疏性、不均匀性肯定会影响点云的特征表达。我想说的是点云还存在着比较强的冗余性,大量输入点不一定对学习空间特征表达有用。虽然现有点云网络一般只处理上万个点或几千个点,但点云模型训练或推理消耗非常巨大。我认为需要优化点云网络设计,比如使得点云网络可以承载更多的有效点,或者更容易抓取有意义的关键点的信息,这样才会更加实用。
高林:面对相同的任务,例如目标检测、语义分割等,不同的工业任务驱动是不一样的,比如无人驾驶,特斯拉比较偏视觉,完全从图像上来做,可能就导致一些事故。但是像奥迪这类非常传统的厂商,他们都是考虑点云,多一个维度相当于多一些非常硬的约束,从任务上来说无人驾驶会更安全。从其他的任务倒向工业任务,比如微软的HoloLens,AR、VR的应用,如果没有深度的话,很多东西非常难做,只从图像去恢复一个场景是非常困难的。但是有了点云以后,使得三维的重建和三维环境的感知更加地容易。像一些纯3D的任务,比如室内模型、室内场景的装修及公司里3D建模,这些具体的工业任务里面用到的点云分割目前做的都不是特别好。一方面点云用深度学习做还是比较新,网络还在不断地优化和改进,不如图像技术成熟。另一方面,点云数据本身标注困难,虽说都是点云,但室外室内点云分布的区别很大,需要专有的数据集。目前室内场景的点云分割数据集还没有一个特别大的数据集,所以无论是技术上还是数据上,都是对点云处理比较大的瓶颈,这方面将来可能有很多机会。
03
三维点云深度学习技术对标注数据的需求如何?三维点云是否存在类似图像领域的ImageNet、COCO等大规模benchmark?
高林:我们最近跟阿里巴巴淘系的赵斌强、贾荣飞等人以及SFU的张老师、悉尼大学的陶老师合作开源了场景数据集3d-front和高质量3d几何模型数据集3d-future,(http://www.geometrylearning.com/data.html)三维几何的数据会更多一些,同时我们提供了采样的工具,这样也可以在3d-future上采样,得到室内场景的点云的数据。对于室内场景来说,这样增加了一些点云的数据源,这对室内场景的特定的任务包括分割检测,是很有帮助的。因为这些数据都是初始数据,还会进行进一步的标注和分析,这将是一个新的开端。
像针对点云分割任务而标注的几个比较大的公共数据集,多大有公司的参与。点云目标检测领域目前比较大的数据集是Waymo数据集和nuScenes数据集,它们的场景数量和类别都比较丰富了,这些也都是由大公司发布,这些数据对学术界的研究起到了很好的推动作用。我们最近把点云形状分类、三维目标检测和点云分割等领域的工作做了一个完整的综述,对相关的数据集和近三年的主要方法都做了系统分析,这个工作前两天刚刚被TPAMI录用了,入门的同学如果想了解相关内容的话,可以参考一下,论文“Deep Learning for 3D Point Clouds: A Survey”的下载地址是https://arxiv.org/abs/1912.12033。
章国锋:三维数据还可以通过仿真的方式来得到,相对于图像的仿真可能还更容易一点。目前已经有一些合成的数据集,例如SUNCG、InteriorNet等。另外,现在的三维数据集主要分为两种,一种是室内的RGB-D的这种数据集,像ScanNet、Matterport3D;另外一种是室外的基于Lidar的数据集,主要是自动驾驶场景使用,像KITTI这种。
04
三维计算机视觉有一套成熟的理论基础,也就是多视角几何学,三维点云深度学习与多视角几何学目前有什么结合点吗?相对于传统的图像深度学习,三维点云深度学习是否具备更多的理论可供挖掘?三维点云深度学习的可解释性如何?
盛律:从我目前了解到的相关理论解释及研究,说实话并不多,不过大家也是努力在这方面分析探索。有些研究把点云学习的逻辑,比如PointNet的网络设计逻辑用在传统问题上。比如说多视角几何问题中特征点匹配,以往很多时候用RANSAC或相关的方法来做多视角摄像机参数的估计,现在有一些方案是把所有的潜在匹配点对拿出来形成一个比较大的匹配点集,以点集作为一种点云的输入,最后预计出每个点集是否匹配。即把对集合的分类操作转换成适合点云处理的方案来做。还有一些在做立体匹配时,很可能在后面的优化过程中引入点云以及点云优化的方案。我相信这些方面可以存在着一些结合。
章国锋:从我站在更偏传统的三维视觉的角度来看,因为传统的多视角几何主要靠匹配,但这个匹配容易不准,如果直接有三维点这种比较可靠的信息,并且能够把这个信息嵌入进去作为一种约束,那肯定能做得更好,得到更准确更完整的三维。另外三维点云,如果是用Lidar或者是一些深度传感器得到的,可能有一些问题,比如可能比较稀疏,也有区域深度信息缺失,基于多视图几何可以将缺失的深度信息补全。而且直接基于点云,遮挡的准确判断会比较困难。利用好多视图几何关系,可以更好地进行三维点云的处理,比如对遮挡关系的准确判断,所以两者是可以互补的。
高林:点云本身来自于多视角几何,从某种角度上来说不太好定义连续微分几何的概念,它是一种非常离散的表示,所以如果要在点云上面做更多数学理论挖掘的话,可能会是以其他几何的表示,像网格的形式,因为它有一些流形的分布更容易做几何理论的分析和挖掘。现在很多工作,相当于在微分曲面上做卷积,做一些微分域上的操作,这样可以把一些连续的理论拿过来,那方面更容易做某种偏数学理论的东西。
郭裕兰:多视角几何学是为了获得一个三维场景的深度信息,得到深度图或三维点云;点云深度学习的目标更多的是为了做点云理解。但中间有一环节大家关注的比较少,就是点云的传输,比如点云压缩和编码等工作。考虑到点云的数据量通常非常大,如果要实现实时应用,在点云压缩编码方向未来或许有一些工作可以挖掘。另外,在点云可解释方面,学界也有一些尝试性的工作。比如,在3D point capsule networks中,用胶囊网络去做三维形状的生成,可以获得部件和部件之间的对应关系。类似从一个飞机变到另一个飞机,两个飞机的机翼部分可以很好地对应起来。类似这样的一些尝试,还是值得关注。
05
三维数据的主要表现形式有点云、体素、网格,哪种形式更适合三维深度学习?不同的应用对这些数据形式有没有选择性?相对于点云深度学习,其他数据形式的三维深度学习技术研究现状如何?
高林:如果是从任务导向或应用导向来看,在没有深度学习之前,点云、体素、网格,每个表达分工不一样。举个例子,我们山寨一个手机外壳,从外在的物体到数字的几何表示依次经历了点云、体素、网格的任务,先是用激光扫描仪得到点云,然后点云转成了体素或者是隐式场的表达,再进一步生成了网格。在非深度学习时代,每个表示有它固有的功能,点云负责获取感知,体素和隐式场负责建模,网格负责精细的表示、渲染和二次编辑。深度学习是个智能化的方法,从任务导向来说,本身的任务是适用于不同的表示,所以深度学习可能会加速和智能化这个过程,但是它还是每个表示适合固有的任务。深度学习是如何分别地加速每个任务,而不是哪一个方法更适合深度学习。因为哪个方法都能结合深度学习让它变得更好,这取决于任务导向,哪个任务用哪个方法更适合,比如分割的话,点云更适合,建模的话,网格更适合,我的理解还是任务导向。
李鸿升:对于三维数据的处理,大家的想法区别还是非常大的,即使是对同一个任务,我们也看到有很多的工作,比如目标检测,有的基于点云,有的基于点云体素,有的基于网格。近年来,点云、体素、网格都探索的差不多了,CVPR2020有很多相关工作,比如我们组做3D检测的那篇PV-RCNN就是点云加体素的。像Grid-GCN是点云加网格,再加上一个graph attention network。可以看出大家目前对于不同任务是否有一个比较固定的三维数据的表达形式还没有定论,现在对于很多检测、分割等任务,也都是在尝试不同数据表达的方式。我认为当前合适的数据表达现在还没有一个定论,三维视觉的表达和网络结构的探索都还有很长的路要探索,但是可能最终会类似二维的CNN,最终会收敛到同一个技术点。目前大家都是在不同的方向非常自由地在探索,在未来的几年中,希望大家能够一起找到这样的收敛点的存在。
06
三维视觉技术在工业界的应用情况如何?有没有杀手级的应用需求?三维视觉技术从学术界到工业界需要跨越的困难有哪些?
高林:从工业界的应用角度,我是感觉到了工业界对3D深度学习一个非常大的需求和渴望。因为工业界有很多的数据,这些数据怎样去促进现有的业务流程,包括3D建模、3D分析的任务,现在是没有一个很好的智能化方法的,但是有了3D深度学习,他们的数据就变成了生产力,相当于是优势。
目前我了解到他们还是已有的业务流程,怎样去深度学习,去促进已有的业务流程,比如一个基本的任务,像游戏场景里需要大量的3D建模,原先建模一个3D模型的成本大概在一两百美元,现在可能有些模型不需要大改变,只需要把已有的模型二次复用就行,所以从数字内容生产的角度,这部分用3D深度学习能很大地减少成本。另一方面感觉需求比较强烈的是电子商务,因为受疫情的影响,去实体店购物或选装修方案越来越少,很多都在互联网上选择装修或智能家装的搭配,这种智能推荐就是3D视觉的任务。
我认为工业界对3D视觉的任务的需求是很大的,本身3D在工业界里的应用就很多,又有着3D视觉任务的发展,相当于可以减少成本、加速开发。就已有任务来说需求是很大的,怎么加速效能减少成本,对3D视觉任务的高效解决方案是非常渴求的。
李鸿升:现在自动驾驶行业也需要非常多的三维视觉技术,第一个是目标检测,如果要实现自动驾驶,首先需要对周围环境有一个感知。第二个是高精地图的建立。第三个是自动驾驶场景的建模和仿真器。这些都是自动驾驶目前在工业界有强烈需求的研究方向。
从学术界到工业界需要跨越的困难,首先是需要大规模数据的标注,其次在实际的工业界的场景中,大量的corner case的训练样本的收集是非常困难的。例如,前段时间特斯拉在台湾撞到一个翻倒在高速公路上的货车,这很可能是因为深度模型在训练的时候,是经历过这样的corner case。当然,这些数据也可以通过仿真器来进行仿真和生成。这次CVPR上,Uber ATG还有Waymo都发表了oral论文来介绍自己在自动驾驶场景的仿真器。另外还有算法的效率,这些算法如果想要在车上应用,就像车上的工业电脑,它的算力目前还是非常局限。
现在开发的很多强有力的算法,目前都没有办法直接地放到车载PC和GPU上去跑。现在车载的GPU跑的算法还都是比当前早一到两年的算法,因此这也是额外的限制。
章国锋:现在三维视觉技术的应用越来越多,无论是机器人、自动驾驶,还是AR、VR。至于这里面有没有杀手级的应用,我认为这个问题跟技术的成熟度是相关的。如果物体或场景的三维数字化能做得很好,那么像电子商务行业对这个需求量是非常大的。目前还很难说能把物体的三维数字化做得又好又高效,这也极大地阻碍了AR/VR内容的生成。所以我认为并不缺杀手级应用,主要取决于技术的成熟度能否支撑这些杀手级的应用。
在AR方面也有大量的三维视觉技术的应用,比如SLAM、高精地图的构建。目前有越来越多的公司发布了相应的高精度地图跟SLAM结合的解决方案和应用,特别是应用在室内外的高精度的定位导航,像华为发布的Cyberverse和AR地图,在大场景能够做到非常高精度的定位和导航。这是如何实现的呢?一般是需要事先把场景进行三维数字化,可以用一些设备(比如激光雷达、相机等)去扫描这个场景;三维数字化得到场景的高精度地图之后,通过视觉的定位(当然还可以配合其他信号的定位),就能够做到非常精准的定位,然后结合SLAM技术可以实现连续跟踪定位和内容增强。
最近,苹果发布的ARKit4.0增加了一个定位锚的功能,能够实现在特定位置的AR体验,比如整个城市或某个著名地标,通过这个位置锚点,在那里放置相应的虚拟的物体。虽然没有看到这个功能的技术介绍,但是能猜到应该是利用高精度地图的技术,再结合视觉的定位(可能还有GPS的辅助),跟SLAM结合,从而实现在大尺度场景下的增强现实体验。这方面的应用需求确实可能很大,今年越来越多的公司,包括百度还有一些创业公司也推出了相应的技术解决方案。但是不是真正做到杀手级的应用呢?我个人是比较看好的,尤其在室内的定位导航和导览上。因为目前室内GPS不能用,像WIFI、蓝牙定位的精度对于一些应用来说不够高,而且设备成本、工程量都比较大,所以如果能借助视觉技术做到精准定位导航的话,还是非常有前景的。因为像商场或一些比较大的室内场景,这种室内定位导航的需求还是很强烈的。
第三个问题,我也在跟工业界比如商汤合作,把技术应用到相应的产品上,这个过程还是挺不容易的。在学术界,主要追求创新性,只要这个东西有创新,一般就能发论文。但是对工业界来说,更关心的是能否落地。做产品很多时候一定要跨过应用的及格线,如果跨不过去,对产品来说不可能会成功。但是要跨过的话,从一篇论文到一个能落地的产品,这中间往往有很大的gap,一篇论文可以只解决一小部分的问题,但是产品可能需要百分之九十几以上都能工作得很好,这个挑战性很大。我的课题组主要是做SLAM和三维重建方面的研究,原来我们自己觉得做得还不错的工作,最后要落地到产品里,还是有很多的问题需要解决,甚至很多代码都要重写。这里面可能遇到功耗的问题,比如应用到手机上,功耗就一定要低于多少,否则就不可能上线。另外各种corner case、鲁棒性等方面都要去解决。如果主要是发论文的话,可能不会特别去关心这些问题,但是真正在工业的产品里,这些问题是一定要解决的。如果想把技术应用落地在工业界,要有这方面的心理准备。另一种方式是需要有一种合作机制,能够把学术界和工业界的各自优势发挥出来,形成优势互补,学术界更专注在技术创新和前沿探索,工业界则更侧重工程实现和产品落地,但两边能够很好地配合起来。比如,高校和企业可以共建联合实验室或联合研究中心。老师、学生去做工程的东西往往并不擅长,所以高校的课题组还是更适合专注在前沿探索和技术创新上;公司的研究员或算法工程师可以把有前景的技术成果接过来,使其工程落地。两边如果能够紧密地合作,我认为是可以实现一些前沿成果比较快速的落地的。
盛律:现在的基于深度学习或是基于数据驱动的方法,相比传统的方法来说,更加受限于数据集,这导致在一些在学术集或是在单一工业场景训练的模型,在新的场景完全无法泛化。这种实际上是机器学习的固有问题,如何持续地更新模型,如何使模型保持泛化能力,是一个从学术界到工业界都需要考虑的问题。
传统的三维视觉主要从多种场景中总结人为假设或观察来设计算法,例如传统兴趣点的检测子和描述子的设计等。这类算法相对来说可以在很多场景都能做到泛化,比如在数字化三维重建中SIFT等算子是很稳定的。但是把这类三维视觉任务完全变成用数据驱动的方式来建模,比如说学习三维物体定位,或者三维物体检测,面向多种场景的泛化性能就会变得十分有限。从学术界来说,不少方案可以在学术集上得到很好的性能,但是在工业界上要得到一个稳定的效果,还有很多路要走,这个问题不单只是三维视觉,实际上大量的图像视觉任务上也存在这个问题。