使用 BEV 投影的高效城市规模点云分割

本文提出了一种基于鸟瞰投影的高效城市规模点云分割方法,解决了大规模数据集中的数据稀疏性和处理负担问题。通过将3D点云转换为密集的鸟瞰投影图像,并利用基于注意力的多模态融合网络进行分割,该方法在SensatUrban数据集上取得了61.17%mIoU和91.37%总体准确度的成绩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用 BEV 投影的高效城市规模点云分割

论文 Efficient Urban-scale Point Clouds Segmentation with BEV Projection

地址 https://arxiv.org/pdf/2109.09074.pdf

代码:https://github.com/zouzhenhong98/SensatUrban-BEV-Seg3D

摘要:

点云分析近年来吸引了研究人员的眼球,而 3D 语义分割仍然是一个问题。 大多数深度点云模型直接对3D点云进行学习,这将受到城市规模数据的严重稀疏和极端数据处理负载的影响。 为了应对这一挑战,我们建议将 3D 点云转换为密集的鸟瞰投影。 在这种情况下,由于类不平衡减少和利用各种 2D 分割方法的可行性,分割任务被简化。
我们进一步设计了一个基于注意力的融合网络,可以对投影图像进行多模态学习。 最后,重新映射 2D 输出以生成 3D 语义分割结果。 为了证明我们方法的好处,我们在 SensatUrban 数据集上进行了各种实验,其中我们的模型展示了具有竞争力的评估结果(61.17% mIoU 和 91.37% 的总体准确度)。 我们希望我们的工作能够激发点云分析的进一步探索。
索引词——点云、语义分割、多模态学习、城市规模

引言

3D语义分割是点云学习的关键技术,旨在为每个单独的点数据分配语义标签,已广泛应用于自动驾驶[1]、虚拟现实[2]、3D重建[3]等 . 虽然深度学习在二维语义分割任务中表现突出,但无法直接处理不规则、无序、非结构化的点数据[4]。 因此,目前有几种方法 [5]-[11] 将非结构化点转换为某些有效的中间表示,例如体素 [7]、[12] 和多视图 [10]、[13]、[14],以利用 经典的 CNN 模型。 随着对 3D 场景理解的需求不断增加,提出了越来越多的 3D 点云数据集。 从室内数据集(例如,S3DIS [15] 和 ScanNet [16])到道路级数据集(例如,SemanticKITTI [17]),数据集的空间大小也更大。 最近的工作 [3]、[18] 提出了城市级数据集,这给大规模数据集的语义分割带来了一些全新的挑战。

与基于激光雷达的数据集不同,这些城市尺度点云大多是从无人机摄影测量中获得的,这可能导致数据集中有以下特征。 首先,无人机摄影测量的扫描不均匀,扫描区域不集中,捕获的图像包括边缘散乱的区域。 其次,重建的点云部分缺失。 我们在 SensatUrban [3] 数据集中观察到这种现象,一个典型的例子是,将点云可视化后,屋顶下没有对应的墙点,这使得屋顶看起来像是悬浮在空中。 有趣的是,我们发现基于无人机的点云中垂直点的类别重叠率较低,例如 SensatUrban 为 2.3%,这意味着鸟瞰图是一种更简单、更高效、更合适的投影方法。 能够最大限度地保留点细节。 此外,对于投影图像,可以使用具有更丰富标记的 2D 像素级数据集进行预训练。 因此,在本文中,我们提出了一种 BEV 投影分割方法来处理城市规模的 3D 分割问题。 我们的主要贡献是:1)对城市规模的点云进行点级分析; 2)提出具有特定BEV投影算法的多模态融合分割模型; 3)我们在 SensatUrban 数据集中评估我们的方法,我们的竞争结果证明了我们设计的效率。

相关工作

一般来说,根据点云数据进入网络的形式,现有的大部分3D语义分割方法可以分为三类:基于点的、基于3D表示的和基于投影的。
基于点的方法直接处理原始点云,其代表方法是计算开销大的PointNet。 尽管 [19]、[20] 对 PointNet 做出了一些有益的改进,但仍然很难加速,因为这些方法直接处理 sprase 数据。 最近的 RandLA-Net [2] 引入了随机采样和轻量级网络架构,极大地加速了模型。
然而,正如 [21] 中提到的,基于点的方法中一个不容忽视的问题是,由于随机内存访问效率低下,处理 sprase 数据的大量时间浪费(80%),这意味着实际上只有很少的时间是 用于提取特征。 此外,大的内存开销也是一个严重的问题。
基于 3D 表示的方法将原始点云数据转换为特定的 3D 表示(例如体素和晶格),然后利用 3D 卷积 [5]-[8]。 然而,很难平衡分辨率和内存之间的关系[21],[22]。 分辨率越低,点云的信息丢失越严重,因为同一网格中的点合并在一起。 分辨率越高,计算开销和内存使用量就越大。 此外,预处理和后处理步骤需要大量时间[23]。
代替直接处理点,基于投影的方法利用成熟的 2D 卷积模型来处理从 3D 点云投影的图像。 基于投影的方法包括几个特定的类别,例如多视图、基于球面的方法。 多视图方法 [10]、[13]、[14] 将点云投影到多重虚拟摄像机视图中。
例如,[10] 利用多流 CNN 处理从每个视图生成的图像,然后融合来自每个点的不同图像的预测分数,[13] 定义一个旋转的相机并提出 Katz 投影来选择每个相机角度的点 , [14] 在不同的相机位置生成深度图像和 RGB 图像。 [24]利用球面投影方法将3D点云转换为图像,使用SqueezeSeg网络进行分割,并应用CRF(条件随机场)优化分割结果。 [11] 提出了基于 SqueezeSeg 扩展感受野的上下文聚合模块 (CAM),[4] 引入了空间自适应卷积 (SAC) 以进一步提高分割精度。

B. 大规模场景的语义分割在最近的工作中提出了几个由无人机拍摄的城市规模 3D 点云数据集 [3]、[18]、[25],其中最大的是 SensatUrban [3] 数据集, 面积7.64×106 m2,标注点数30亿。 然而,这些庞大而密集的数据集给语义分割带来了新的挑战。
首先,面对海量数据,预处理方法的选择,如数据分区、下采样等具有重要意义。 其次,城市规模点云存在类别分布不平衡的问题。 第三,基于无人机的数据集和基于激光雷达的数据集之间的显着区别在于前者包含 RGB 特征。 对于大规模数据集,是否将 RGB 特征融入网络以及如何有效利用 RGB 特征值得考虑。 最近的工作,例如 RandLA-Net [2] 和 BAAF-Net [23] 已经利用了 RGB 颜色并取得了积极的分割结果。 对于 BEV 投影生成的图像,我们设计了一个基于注意力的多模型融合网络,有效地融合了 RGB 和几何细节。
与单模态网络相比,分割效果取得了一定的提升,进一步验证了RGB颜色对于分割的意义。
最近,已经提出了几种针对大型数据集的语义分割算法[2]、[9]、[26]、[27]。 例如,RandLA-Net [2] 引入了随机采样以提高计算和内存效率,TagentConv [9] 利用基于切线卷积的 U 型网络对大而密集的数据集进行语义分割,SPGraph [27] 提出 超点图(SPG),一种新颖的点云表示,能够捕获 3D 点的上下文结构。 需要提出更多的大规模点云分割算法。

三、 提出的方法

A. 问题陈述

3D 点云语义分割的目的是为每个单独的点分配一个语义标签,而 2D 分割是为每个像素分配一个特定的标签。 在某种程度上,这两种类型的任务具有相似的目的和解决方案。 根据我们上面的陈述,3D 点云语义分割任务可以转移到 2D 鸟瞰分割问题。 主要过程包括鸟瞰图映射和二维多模态分割。

B. 为什么鸟瞰投影是合理的

当我们将一个任务转移到另一个任务时,它要求输入数据和预期输出的一致性。 为了评估我们的想法,我们在构建模型之前进行点级分析。 我们首先将 3D 点投影到 BEV 地图上(将在下面详细介绍)并计算重叠率。 当我们在投影中缩放 0.04m 处的坐标时,大约会丢失 25.44% 的点。 对于那些点密集的地方,该比例将提高到50%或更多。 但是,我们发现大多数重叠点与顶部点属于同一类别。 类别重叠率低于2.3%,

mIoU 最高可达 93.7%。 在这种情况下,可以将 3D 分割任务转移到 2D BEV 分割。 我们的目标是精确识别 BEV 图像。

C. 鸟瞰图映射

为了优化如此大的点云的数据处理负载,我们将整个工作分为三个部分:3D 到 BEV 投影、稀疏 BEV 图像补全和 BEV 到 3D 重映射 . 前两部分的过程在下面的算法 1 中以伪代码的形式呈现。 我们设置了一个滑动窗口来处理点并生成 BEV 图像。 在投影之前,我们需要初始化参数gscale、gscale、gscale,控制滑动窗口的缩放、大小和移动步长。 对于每个滑动步骤,我们按 x/y 坐标对点进行排序,并从当前 BEV 投影窗口开始/结束坐标查询点,之后将删除处理过的点以减少后续数据处理量。 为了获得最佳参数,我们在 0.01 到 0.04 的不同投影尺度下测试空间重叠率,如图 3 所示。 当我们将尺度设置在[0.01,0.03]时,会导致点云不同部分的重叠分布非常接近,这意味着城市尺度点云中点的最小间隔在[0.03,0.05]之内( 米)。 此外,根据我们的投影图像数量估计,窗口的适当长度在 20,50 以内。 因此,我们将参数设置为 gscale = 0:05,gsize = gstep = 25。但是,我们也建议多尺度、多尺寸和多步采样,以便在未来的工作或其他类似任务中更好地训练。

pic

对于单个滑动窗口中的点,我们通过积分 x/y 坐标将点映射到像素。 不可避免地会带来价值量化的损失,但是,如果我们在 3D 重映射中进行相同的过程,它不会影响标签检索过程。 BEV 地图使用顶部的点进行更新,生成 RGB 和海拔 (Alt) 图像及其颜色和 z 坐标值。 考虑到 BEV 图像上投影点云的显着稀疏性,会给标签和模型学习带来严重的噪声,因此有必要对投影进行像素级的完成,尤其是对不同类点周围的内部区域和边缘。 在我们的实验中,我们对每个图像中的每个通道迭代地进行 3 次 2D 最大池化。 标签的渐进变化如图4所示。
对于 3D 重映射,我们存储每个投影窗口的绝对 x/y 坐标,并使用主题查询原始大规模点云中的提取位置以获取 2D 分割输出。 对应于相同像素的点将被赋予与像素相同的类别。 之后,我们能够评估 3D 语义分割性能。

pic

图 4. 完成测试。 对于从左到右,我们展示了原始 BEV 标签和具有 1/2/3 倍 maxpooling 完成的标签。

D. 多模态分割

利用 BEV 投影的高度和 RGB 图像,我们可以利用多模态网络从数据的不同方面进行学习。 为了快速开发出合适的模型,我们将编码器-解码器网络 UNet 作为我们的基准,不仅因为它流行的模型架构,而且因为它在修改、训练和推理方面的效率。
它由编码器中的 4 个块和解码器中的 5 个块组成,其中两个是 ResNet-34 块,最后四层使用转置卷积,其余是卷积块。
所有卷积块在卷积层之后都有一个批归一化层和一个 ReLU 层,所有内核大小都是 3x3。 编码器中的每个块都用虚线链接到解码器中的相应块,将它们的输出连接起来以检索低级特征。
通常,多模态融合依赖于各层的特征通信。 在此驱动下,我们提出了一种灵活的多阶段融合网络,支持不同时间、不同地点的多管道数据融合。 融合层包括几个恒定形状的融合块。 每个块接受来自两个管道的两个相等形状的张量,并采用一个注意力层从连接的特征图中选择关键通道。 通过这种方式,融合块倾向于丢弃不相关的特征,并融合那些容易在后续层中激活的特征。 对于注意力块,我们参考了我们之前的工作??,它提出了一种用于语义分割的跨通道多模态融合注意力块。
之后,我们添加一个 1x1 卷积来降低维数,并对图像特征和融合特征、高度特征和融合特征重复这样的融合块。 重要的是,out block 保持特征图的恒定形状,这意味着我们可以根据需要堆叠具有各种网络形状的无限块。

四。 实验

A. 设置

  1. 数据集:在英国 3 个大城市捕获的 SensatUrban [3] 包括 28.47 亿个点,在现实世界中覆盖面积为 7.64×106 m2,是目前最大的 3D 点云数据集。 在获得无人机捕获的面图像序列后,从这些图像中重建 SensatUrban 点云数据集。 它包含13个语义类,包括地面、建筑物、交通道路等大类,以及自行车、铁路和桥梁等几个小类。 在实验中,37 个点云用于训练,6 个点云用于测试。 每个点都包含 3D 坐标、RGB 颜色和语义类的特征。 请注意,由于缺少测试集标签,我们以 4:1 的比例随机拆分训练集,使用 80% 的数据用于训练,20% 用于测试。
    所有测试数据均未用于训练。
    2)度量:我们将我们的模型与几个使用不同方法(例如,基于点的方法、基于投影的方法)的基准 [2]、[7]、[9]、[19]、[27]-[29] 进行了比较 等),并于最近出版。 选择平均 IoU (mIoU) 和总体准确度 (OA) 作为评价指标。
    3) 实施:我们在训练中使用 CrossEntropy 作为损失函数。 考虑到不同类别的不平衡,我们使用对数逆权重来调整学习中的损失。 我们将批量大小设置为 8,将输入大小设置为 500x500 的投影大小。 我们的模型在两个 GPU 上进行训练,RTX 3090 具有 24G RAM 和 E5-2678v3 CPU。
    此外,我们使用以下软件设置:Ubuntu 16.04 64 位操作系统、Python 3.6、gcc5.4.0、带有 CUDA 11.0 硬件加速的 PyTorch 1.7。

B. 结果 我们使用三个主干网络实现我们的模型,UNet 和 ResNet34、Deeplabv3 和 ResNet101、OCRNet 和 HRNet。
最后两个模型经过训练以探索我们的 BEV 分割框架下的潜在性能。 我们在 Table.I 中展示了我们的分割结果(重新映射到 3D 点云并在 3D 中评估)。 与现有模型相比,我们的模型可以在大多数分类中取得相当有竞争力的结果,并且在 OA、mAcc 和 mIoU 方面的整体性能。 缺点是我们的 BEV 分割仍然无法识别一些像自行车这样的小物体,因为它们在投影图像中也占据了非常有限的像素。 在未来的工作中,融合 3D 和我们的 BEV 模型可能会解决这个问题。 可视化如图 5 所示。

五、结论在本文中,我们设计了一种大规模无人机点云的预处理方法,即将3D点云投影到密集的鸟瞰图,以解决大规模数据集数据稀疏和数据处理负担严重的问题。 此外,我们还提出了一种基于注意力的多模态融合网络来分割生成的二维图像,充分利用RGB颜色和几何信息。 我们获得了 61.17% mIoU 和 91.37%SensatUrban 数据集的整体准确度测试结果。 我们希望我们的工作能够激发大规模点云语义分割任务。

<think>好的,用户想了解如何将YOLOv8应用于点云分割,包括实现方法、相关论文、代码示例等。首先,我需要确认YOLOv8本身是否支持点云处理。根据已知信息,YOLOv8主要用于图像目标检测,而点云数据是三维的,通常需要不同的处理方式,比如使用点卷积或体素化方法[^1]。因此,直接应用YOLOv8到点云分割可能不太可行,可能需要结合其他技术。 接下来,用户需要实现方法。可能的思路是将点云数据转换为二维图像,比如通过投影生成深度图或多视图图像,然后使用YOLOv8进行检测,但这可能不是真正的点云分割。另一种方法是结合YOLOv8与点云处理网络,比如先检测2D目标,再映射到3D点云中,或者使用融合模型处理多模态数据。需要查阅相关文献,是否有类似的研究,比如使用YOLO系列处理3D数据的案例,或者结合其他模型如PointNet、VoxelNet等。 关于论文,用户提到的引用中并没有直接涉及YOLOv8和点云分割的内容,但可能有其他研究将YOLO与其他技术结合。需要推荐用户查找多模态目标检测或点云分割的论文,可能涉及YOLOv5或v3在3D中的应用,或者最新的研究如YOLO3D等。 代码示例方面,如果用户坚持使用YOLOv8,可能需要编写自定义的数据预处理层,将点云转换为适合YOLOv8输入的格式,或者修改模型结构以接受3D数据。但YOLOv8本身基于PyTorch,可能需要进行较大的架构调整。另外,可以推荐现成的点云处理库如Open3D或PCL进行点云处理,再结合YOLOv8的结果进行后处理。 还需要注意资源受限环境下可能的优化,如引用[1]提到的剪枝和量化,如果用户需要在嵌入式设备上运行,可能需要这些步骤。同时,是否需要实时处理,这会影响模型的选择和优化策略。 总结步骤:1. 数据预处理,将点云转为2D或融合多模态数据;2. 修改或结合YOLOv8模型处理3D信息;3. 参考相关论文和代码库进行实现;4. 考虑模型优化以适应硬件限制。 需要验证这些思路的可行性,比如是否有开源项目做过类似的工作,或者论文中的方法是否适用。可能需要用户具备一定的3D深度学习背景,或者需要学习点云处理的基础知识。最后,提供具体的实现步骤和资源链接会更有帮助。</think>### YOLOv8在点云分割中的应用实现方法 #### 1. 技术背景与挑战 YOLOv8本身是针对**二维图像目标检测**设计的模型,而点云数据是三维空间中的点集合(通常表示为$(x,y,z)$坐标及其他属性)。直接应用YOLOv8需要解决以下问题: - **维度差异**:点云是三维稀疏数据,YOLOv8的卷积结构擅长处理密集的二维网格数据。 - **数据表示**:需将点云转换为适合YOLOv8输入的格式,例如投影为多视图图像(如俯视图、前视图)或体素化网格。 - **特征提取**:点云的局部几何特征需要特殊处理(如PointNet++中的分层特征提取[^2])。 #### 2. 实现路径 ##### (1) 多视图投影法 将点云投影为二维图像,再利用YOLOv8进行目标检测: 1. **数据预处理**: - 将点云投影到俯视图(Bird's Eye View, BEV),生成高度、密度或强度图。 - 示例:将点云$(x,y,z)$映射为俯视图的二维网格,每个网格单元记录最大高度$z$值。 ```python import numpy as np def pointcloud_to_bev(points, grid_size=0.1, z_max=3.0): xyz = points[:, :3] x_min, y_min = np.min(xyz[:, 0]), np.min(xyz[:, 1]) x_idx = ((xyz[:, 0] - x_min) / grid_size).astype(int) y_idx = ((xyz[:, 1] - y_min) / grid_size).astype(int) bev = np.zeros((np.max(x_idx)+1, np.max(y_idx)+1)) for i in range(len(xyz)): bev[x_idx[i], y_idx[i]] = max(bev[x_idx[i], y_idx[i]], xyz[i][2]/z_max) return bev ``` 2. **模型训练**: - 使用YOLOv8检测投影图像中的目标(如车辆、行人)。 - 将检测结果反向映射到原始点云空间。 ##### (2) 多模态融合法 结合YOLOv8的2D检测结果与点云数据: 1. **同步输入**: - 使用摄像头图像运行YOLOv8进行目标检测。 - 通过点云与图像的坐标对齐(如标定外参),将2D检测框映射到3D点云中。 2. **后处理**: - 在点云中裁剪出3D边界框内的点集,实现实例分割。 #### 3. 相关论文与代码资源 - **论文推荐**: 1. [*PointPainting: Sequential Fusion for 3D Object Detection*](https://arxiv.org/abs/1911.10150) 提出将2D语义分割结果投影点云,辅助3D检测。 2. [*YOLO3D: End-to-end 3D Oriented Object Bounding Box Detection from LiDAR Point Cloud*](https://arxiv.org/abs/1809.05590) 直接扩展YOLO架构处理3D点云。 - **代码库参考**: 1. [OpenPCDet](https://github.com/open-mmlab/OpenPCDet):支持多种点云检测算法(如PointRCNN、VoxelRCNN)。 2. [mmDetection3D](https://github.com/open-mmlab/mmdetection3d):集成多模态3D目标检测框架。 #### 4. 优化与部署 - **模型轻量化**:对YOLOv8进行剪枝和量化(如TensorRT),适应边缘设备。 - **实时性优化**:使用CUDA加速点云投影与后处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值