当前位置:   article > 正文

nuScenes&SemanticKITTI分割第一!最新多模态LIDAR分割网络!最大的室外开源点云分割库!...

nuscenes和kitti

作者:泡椒味的口香糖  | 来源:3D视觉工坊

在公众号「3DCV」后台,回复「原论文」即可获取论文pdf和代码链接。

添加微信:dddvisiona,备注:3D点云,拉你入群。文末附行业细分群。

0. 笔者个人体会

LiDAR点云分割一直是一个很经典的问题,学术界和工业界都提出了各种各样的模型来提高精度、速度和鲁棒性。但因为室外的复杂环境,所以室外点云的语义分割和全景分割的性能都还不是太好。

今天,笔者将带领读者阅读上海AI Lab的新作UniSeg,使用RGB图像来增强点云分割,并且将点云转换为体素、Range图像等多模态数据来做进一步增强,效果非常好。另一方面,作者声称他们开源了目前最大、最全面的室外LiDAR分割算法库,可以直接调用14种SOTA分割算法!这里也推荐「3D视觉工坊」新课程彻底搞懂基于Open3D的点云处理教程

6019077b536d96fecda8fb1f5fc063d3.gif

0801836b7f3963c2560954074a422386.gif

a292bab3b3c630da8d5675934f8e6384.gif

1. 效果展示

首先来看看UniSeg与其他SOTA LiDAR分割算法在Semantic KITTI和nuScenes上的分割精度对比(感觉他们现在很喜欢以时间轴为单位画图?)。可以发现UniSeg性能远超之前的2DPASS、RPVNet、Panoptic-PHNet、Lidar MultiNet等算法。

d39ebee01a642e74ba10ef8d5d6716fc.png

再看看分割的定性对比,红色表示分割错误。可以发现UniSeg性能还是很不错的。

9c3a81098fc44f23aa71167aa1d4151e.png

当然,这篇文章最重要的不是提出了一个很好的LiDAR分割算法,而是开源了一个可以随时调用的LiDAR算法库。相比著名的mmdetection3d库,作者开源的OpenPCSeg库拥有14个开源LiDAR算法。作者花费了一年时间来复现、调参、优化、后处理,生成OpenPCSeg里的开源算法的性能均超越原始论文中的指标!

387773545488082186fc7644b9d23d28.png

2. 摘要

点视图( point-view )、体素视图( voxel-view )和范围视图( range-view )是点云的三种代表性形式。它们都具有精确的三维测量,但缺乏颜色和纹理信息。RGB图像是这些点云视图的自然补充,充分利用它们的综合信息有利于获得更鲁棒的感知。本文提出了一种统一的多模态LiDAR分割网络Uni Seg,利用RGB图像和点云的三视图信息,同时完成语义分割和全景分割。具体来说,我们首先设计了可学习的跨模态关联( LMA )模块,将体素视图和范围视图特征与图像特征自动融合,充分利用了图像丰富的语义信息,并且对标定误差具有鲁棒性。然后,将增强后的体素视图和范围视图特征转换到点空间,并通过可学习的交叉视图关联模块( LVA )对点云特征的3个视图进行自适应融合。值得注意的是,Uni Seg在Semantic KITTI、nu Scenes和Waymo Open Dataset ( WOD )三个公开基准测试中取得了良好的效果;它在两个基准测试中排名第一,包括nuScenes的LiDAR语义分割挑战和SemanticKITTI的全景分割挑战。此外,我们构建了Open PCSeg码库,这是目前规模最大、最全面的室外LiDAR分割码库。它包含了大多数流行的室外LiDAR分割算法,并提供了可重复的实现。

3. 算法解析

分割任务为啥要使用多模态信息呢?

主要原因是可以集合不同模态的优点。RGB图像提供了丰富的颜色、纹理和语义信息,而点云则包含了各种物体的精确三维位置。举例,下图中红色矩形的行人在图像中很难发现,但在点云中却是可见的。因此,多模态和多视角的结合有利于获得更鲁棒和全面的感知。

624a89df3a0674aaf53ffddcde854a4a.png

因此,UniSeg希望利用RGB图像和点云,输出点云语义分割和全景分割结果。

整个Pipeline框架非常通俗易懂,基本原理是,首先利用球投影和最大池化获得Range图像和体素网格。UniSeg的输入是点云的三个不同表征(体素、Range图像、点云)以及RGB图像,然后四个输入分别进行编码,得到四个特征。其中,体素特征和Range图像特征分别和RGB特征进行融合(VI和RI)。之后,将Range图像特征和体素特征投影到点云空间,三个表征就可以通过RPV模块进行融合,之后再反变换回原有的体素空间和Range空间。这样,相当于使用LMA模块进行了多模态融合,使用LVA模块进行了交叉视角数据关联。最后再使用两个head就可以输出语义分割和全景分割结果。

2b853c4190493b338dc829fd3b7e9b40.png

那么具体如何进行跨模态特征融合呢?

首先是VI(Voxel-Image)融合模块,也就是体素和图像进行融合。首先获取体素中心对应的图像特征,然后利用学习到的偏移来采样图像特征。将体素特征处理为Query,采样后的图像特征表示为Key和Value。将体素和采样的图像特征送入多头交叉注意力模块,得到图像增强的体素特征。将这些特征与原始特征进行拼接,就可以得到最终的融合特征。

063292ae20fd5c661fe774dc396872b8.png

另一个RI(Range-Image)融合模块和VI模块的原理就完全一样,不再赘述了。

这样就获得了使用图像增强的体素和Range图像特征,接下来如何再次增强特征呢?

这就是LVA(Learnable cross-View Association)模块,用于将体素、Range图像和点云进行融合。首先将体素和Range图像特征投影到点云空间,通过Tv2p和Tr2p变换使用插值来解决数量不匹配问题。之后,给定体素、点和Range视角特征,LVA提取其全局表示和视角自适应特征。通过残差连接,获得跨视图融合特征,并通过Tp2v和Tp2r变换投影回原始体素和范围图像空间。

1c57a94eeb549a089bed3ff54a7011d5.png

最后,通过LMA和LVA得到的融合特征直接通过分类器得到语义分割预测。将语义预测传递给全景头,估计不同物体的实例中心位置和偏移量,从而产生全景分割结果。

最后的损失函数也没有设置很多trick,估计是想证明性能提升来源于LMA和LVA两个模块设计,而不是其他什么东西。整个损失函数包含交叉熵损失、Lovasz-softmax损失、通过MSE损失的热力图回归、通过L1损失的偏移图回归四部分组成。

f6a045985d92996d34f20ef007474c51.png

4. 实验

实验这一块,使用了nuScenes,SemanticKITTI,和WOD(Waymo Open Dataset)三个数据集,作者报告他们在nuScenes语义分割和SemanticKITTI全景分割任务达到了第一。评价指标方面,语义分割就使用了常规的IoU和mIoU,全景分割使用了PQ(全景质量)。

GPU用的A100,训练了36轮,初始学习率0.12(不大吗?),使用1个epoch来warm up,用余弦退火来调整学习率,SemanticKITTI和WOD数据集体素大小为0.05,nuScenes体素大小0.1,点云分支还使用了随机翻转、缩放、平移这些trick(炼丹真是个技术活和体力活)。

下面几个定量比较依次是在SemanticKITTI上的语义分割对比、nuScenes上的语义分割对比、SemanticKITTI上的全景分割对比、nuScenes上的全景分割对比、WOD上的语义分割对比结果。在SemanticKITTI上,UniSeg比2DPASS高了2.3 mIoU,比Panoptic-PHNet搞了2.6 PQ。在nuScenes上,UniSeg比第二名LidaMultiNet搞了2.1 mIoU,全景分割达到了78.4 PQ,也非常优秀。

262bacb47d32be40a3afdff4ab6db406.png

下面是一个效率和准确性的对比,UniSeg用了4个单独的编码器,还有3个特征融合模块,2个输出头,所以参数量必然很大。但有意思的是,作者对每层通道剪枝80%后再进行实验,发现可以以相同的参数量达到和其他模型更高的精度

ad37719ee0f70a64d01009d2c38c92b8.png

下面来思考一个问题,相机到雷达的外参很难标定准确,因此必然有标定误差。作者做了很多种尝试,比如直接添加或者聚合图像-点特征、使用PointPainting、使用PointAugmenting以及使用LMA,发现LMA模块可以缓解标定误差

12423e52e4ec950a3432f2b3b78609f7.png

然后探索了如何利用不同模态数据的优势。作者对比的baseline是将所有模态数据转移到点视角,然后直接将它们相加或拼接,性能分别为70.4 mIoU和70.5 mIoU。其次尝试自注意力进行特征融合,但无法实现改进。最后发现LVA模块可以根据学习到的注意力权重自适应地融合不同模态的数据。这里也推荐「3D视觉工坊」新课程彻底搞懂基于Open3D的点云处理教程

bc2dfb34be590a4451e482bf478ceb0e.png

最后是一个消融实验,验证每个模态对最终性能的影响。此外,UniSeg在不同距离上也优于单模态baseline。显然由于强稀疏性,baseline在远距离处会发生退化。

fdda708b5a9bc8d764c509b01b411b97.png

5. 总结

今天笔者带领大家阅读了UniSeg的分割原理,还介绍了一个开源的室外LiDAR分割算法库OpenPCSeg。整体来看,UniSeg的设计思路并没有那么惊艳,主要是设计了多模态和多视角融合模块来做点云分割的增强,但是实验效果很好。而且开源分割库也能帮助读者更好得调用现成算法。

—END—

高效学习3D视觉三部曲

第一步 加入行业交流群,保持技术的先进性

目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等;[三维重建方向]NeRF、colmap、OpenMVS;[无人机方向]四旋翼建模等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

8e13bab3d350806e73308745d99089a3.jpeg
添加小助理微信:cv3d007, 拉你入群
第二步 加入知识星球,问题及时得到解答
3.1 「3D视觉从入门到精通」技术星球

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

学习3D视觉核心技术,扫描查看,3天内无条件退款 456eed155baeecd11ea6d28ea1aedbc4.jpeg
高质量教程资料、答疑解惑、助你高效解决问题
3.2 3D视觉岗求职星球

本星球:3D视觉岗求职星球 依托于公众号「3D视觉工坊」和「计算机视觉工坊」、「3DCV」,旨在发布3D视觉项目、3D视觉产品、3D视觉算法招聘信息,具体内容主要包括:

  • 收集汇总并发布3D视觉领域优秀企业的最新招聘信息。

  • 发布项目需求,包括2D、3D视觉、深度学习、VSLAM,自动驾驶、三维重建、结构光、机械臂位姿估计与抓取、光场重建、无人机、AR/VR等。

  • 分享3D视觉算法岗的秋招、春招准备攻略,心得体会,内推机会、实习机会等,涉及计算机视觉、SLAM、深度学习、自动驾驶、大数据等方向。

  • 星球内含有多家企业HR及猎头提供就业机会。群主和嘉宾既有21届/22届/23届参与招聘拿到算法offer(含有海康威视、阿里、美团、华为等大厂offer)。

  • 发布3D视觉行业新科技产品,触及行业新动向。

1056e06f6f2bb07c597c30ca4ba86ea0.jpeg
扫码加入,3D视觉岗求职星球,简历投起来
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行

如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com

科研论文写作:

[1]国内首个面向三维视觉的科研方法与学术论文写作教程

基础课程:

[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶

[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]

[3]如何学习相机模型与标定?(代码+实战)

[4]ROS2从入门到精通:理论与实战

[5]彻底理解dToF雷达系统设计[理论+代码+实战]

工业3D视觉方向课程:

[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]

[2]保姆级线结构光(单目&双目)三维重建系统教程

[3]机械臂抓取从入门到实战课程(理论+源码)

[4]三维点云处理:算法与实战汇总

[5]彻底搞懂基于Open3D的点云处理教程!

[6]3D视觉缺陷检测教程:理论与实战!

SLAM方向课程:

[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战

[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战

[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化

[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析

[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)

[5](第二期)ORB-SLAM3理论讲解与代码精析

视觉三维重建:

[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)

自动驾驶方向课程:

[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)

[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程

[3]单目深度估计方法:算法梳理与代码实现

[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)

[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)

无人机:

[1] 零基础入门四旋翼建模与控制(MATLAB仿真)[理论+实战]

最后

1、3D视觉文章投稿作者招募

2、3D视觉课程(自动驾驶、SLAM和工业3D视觉)主讲老师招募

3、顶会论文分享与3D视觉传感器行业直播邀请

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/436702
推荐阅读
相关标签
  

闽ICP备14008679号