• 【CVPR 2021】Cylinder3D:用于LiDAR点云分割的圆柱体非对称3D卷积网络


    Cylindrical and Asymmetrical 3D Convolution Networks for LiDAR Segmentation

    https://arxiv.org/abs/2011.10033

    做了什么

    对于室外驾驶场景中大规模LiDAR点云分割,常用的方法是将点云投影到二维空间,再通过2D卷积对其进行处理。这样做虽然有不错的表现,但它丢弃了点云的三维拓扑和几何关系信息。一种减少这种信息丢失的方法是对点云使用立方体划分的体素化再通过3D卷积对其进行处理,但这种方法得到的改善相当有限,因为室外点云还具有稀疏性和密度不均匀性。这篇论文提出了Cylinder3D:

    • 针对点云的稀疏性和密度不均匀性,对点云进行圆柱体划分的体素化
    • 使用不对称的3D卷积网络来生成体素级输出
    • 引入逐点细化模块,减少了因体素化带来的标签干扰

    Cylinder3D在SemanticKITTI和nuScenes点云分割数据集上的表现达到当时的第一,并且能很好地推广到LiDAR全景分割和三维检测的任务中。

    Cylinder3D

    整体框架及其组件

    Cylinder3D的整体框架如图:

    有四个主要组件:

    包括不对称残差模块(A)、不对称下样本块(AD)、不对称上采样模块(AU)和基于维度分解的上下文建模(DDCM)。

    LiDAR点云首先输入MLP,得到点特征。然后根据柱面划分( Cylindrical Partition)对点特征进行重新分配得到圆柱特性(Cylindrical Features)。最后对圆柱特征使用非对称的3D卷积网络(Asymmetrical 3D Convolution Network,Asym-CNN)和基于维度分解的上下文建模(DDCM)来生成体素输出,并引入一个逐点细化模块(Point-wise Refinement Module,PR)来细化这些输出。

    圆柱体划分( Cylindrical Partition)

    圆柱体划分的流程如图:


    图片来源:https://arxiv.org/pdf/2109.05441.pdf

    首先,将点从笛卡尔坐标系转换到圆柱坐标系。这个步骤将点 ( x , y , z ) (x,y,z) (x,y,z)转换为 ρ , θ , z \rho,\theta,z ρ,θ,z,这需要计算半径 ρ \rho ρ(点在x-y平面上投影与原点的距离)和方位角 θ \theta θ(自 x x x轴到 y y y轴的角度)。进而在 ρ − θ − z \rho-\theta-z ρθz三个维度上执行圆柱体划分。
    在此基础上,对MLP得到的逐点特征根据对应坐标进行重新分配,然后对各个单元使用max-pooling得到圆柱体特征。

    经过以上步骤,从0度展开圆柱体即可得到三维圆柱体表示 R ∈ C × H × W × L \mathbb{R}∈C × H × W × L RC×H×W×L,其中 C C C表示特征维数, H , W , L H, W, L H,W,L表示半径、方位角和高度。后续的非对称3D卷积网络将在此表示上执行。

    远离原点的区域的点更稀疏。而在圆柱坐标中,区域越远,单元格越大。这使得圆柱体划分比立方体划分得到的点分布更均匀:

    下图显示了两种划分方法随着距离增加非空单元格的比例。可以看到,圆柱体划分相比于立方体划分非空比例更高,且随着距离增加越明显:

    此外,不同于将点投影到二维视图的方法,圆柱体划分一定程度上保持了点云的三维拓扑和几何关系信息。

    不对称 3D卷积网络(Asym-CNN)

    不对称残差块(Asymmetrical Residual Block)

    ACNet的启发,Cylinder3D使用了不对称3D卷积构造残差块。以Car 和Motorcycle为例,下图展示了作用于圆柱体素的不对称残差块中的3D卷积:

    不对称的残差块很好地匹配目标(汽车、卡车、公共汽车、摩托车等立方体物体)的点分布,也节省了计算量和内存开销。

    Cylinder3D用不对称残差块设计下采样块和上采样块:

    并将多个采样块和下采样块叠加,构建三维卷积网络:

    基于维度分解的上下文建模(DDCM)

    DDCM使用三个秩为1的低秩卷积核提取特征,然后聚合在一起,最终得到 C c l a s s × H × W × L C_{class}×H×W×L Cclass×H×W×L的综合特征。

    逐点细化模块(PR)

    体素化方法(包括基于立方体划分和基于圆柱体划分的方法)为每个单元预测一个标签,这虽然有效地探索大范围点云,但不可避免地将不同类别的点被划分为同一个单元,从而导致信息丢失。

    下图统计了不同标记编码方法的效果:

    其中多数编码(majority encoding)表示使用单元内点的大多数类别作为单元标签,少数编码(minority encoding)表示使用少数类别作为单元标签。理想情况下,点云在划分之后各个点的标签应不变,即与原始标签点的mIoU应为100%。但可以观察到,多数编码和少数编码都无法达到100%的mIoU。

    所以,Cylinder3D引入了逐点细化(point-wise refinement)模块来缓解编码带来的标签干扰。

    首先根据逆点-体素映射表将圆柱体素特征投影回各个点(同一体素单元内的点将被分配到相同的特征)。然后,将三维卷积网络前后的点特征融合在一起并输入逐点细化模块以细化输出。

    目标函数

    最终目标函数包括逐体素损失 L v o x e l L_{voxel} Lvoxel和逐点损失 L p o i n t L_{point} Lpoint

    L = L v o x e l + L p o i n t L=L_{voxel}+L_{point} L=Lvoxel+Lpoint

    L v o x e l L_{voxel} Lvoxel为加权交叉熵损失weighted cross-entropy loss 加 lovasz(洛瓦兹)-softmax。而 L p o i n t L_{point} Lpoint只有加权交叉熵损失。

    对于训练后的推断,使用的是逐点细化模块的输出。

    实验结果



  • 相关阅读:
    勒索软件频繁升级,了解常见勒索软件很有必要
    〖全域运营实战白宝书 - 运营角色认知篇⑤〗- “运营“ 是否有前途?
    算法学习:LeetCode-593. 有效的正方形
    mysql冷拷贝大表
    vue中使用wangEditor以及设置菜单栏
    什么是缓存雪崩、击穿、穿透?
    HarmonyOS 多音频播放并发政策及音频管理解析
    初识Mybatis(二)动态SQL、缓存和逆向工程
    因合约代码Bug,约2.2亿元11539枚以太币被永久锁定
    贪心算法之经典题目---订票
  • 原文地址:https://blog.csdn.net/weixin_44378835/article/details/125652513