Open3D-ML自动驾驶点云目标检测与分割入门

当开始新的研究时,我的方法通常是测试不同的相关事物,直到有足够的经验让我开始将这些点联系起来。 在开始构建用于 3D 对象检测的自定义模型之前,我购买了一台 LiDAR 并处理了一些数据。 下一个明显的步骤是在我为自己的数据贴标签之前找出研究界如何标记这些数据。

有一些非常流行的自动驾驶点云数据集,其中最受欢迎的是 KITTI 数据集、NuScenes、Waymo 开放数据集等。 不久前,我花了一些时间研究 KITTI 数据集,总的来说,我注意到找到合适的工具来可视化数据是多么困难。 直到我发现了 Open3D,它使我可以轻松处理和可视化点云。 Open3D 可以选择与 Open3D-ML 捆绑在一起,其中包括用于可视化带注释的点云数据的工具,以及训练/构建/测试 3D 机器学习模型(更多内容将在以后的帖子中介绍)。
在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

Open3D-ML GitHub 页面提供了使用 pip 安装库的简单说明,但这仅适用于特定版本的 CUDA 和 TensorFlow。 因为我想使用此类库的较新版本,所以我决定从源代码构建 Open3D。 这样做的时候,我发现有些步骤缺失或者不够清晰。 为了简化有兴趣构建此库的任何人的生活,我在下面列出了安装和测试 Open3D-ML 所遵循的步骤。 请注意,我的系统是 Ubuntu 20.04.4 LTS,并且我有支持 Cuda 的 GPU,因此,此处提供的说明可能会因您的系统而异。

第1步:安装Conda

建议使用 Conda 来尝试新事物,而不会冒破坏系统的风险。 要安装 Conda,请按照此处的官方步骤操作。

第2步:创建并激活Conda环境

确保将 myenv 替换为你要使用的实际名称。

conda create --name myenv
conda activate myenv

第3步:安装 Node.js

要安装 Node.js,你可以按照以下步骤操作:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g yarn

第 4 步:安装 TensorFlow

要安装 TensorFlow,请按照此处的官方步骤操作。

第5步:安装Jupyter Lab

conda install -c conda-forge jupyterlab

第 6 步:克隆 Open3D

git clone https://github.com/isl-org/Open3D

第7步:安装依赖项

cd Open3d
./util/install_deps_ubuntu.sh

第 8步:创建构建目录并克隆 Open3D-ML

mkdir build
cd build
git clone https://github.com/isl-org/Open3D-ML.git

第 9 步:配置安装

这是假设你有一个支持 Cuda 的 GPU。 确保将 /path/to/your/conda/env/bin/python 替换为 Python 的正确路径。 另外不要忘记命令末尾的两个点。

cmake -DBUILD_CUDA_MODULE=ON -DGLIBCXX_USE_CXX11_ABI=ON -DBUILD_TENSORFLOW_OPS=ON -DBUNDLE_OPEN3D_ML=ON -DOPEN3D_ML_ROOT=Open3D-ML -DBUILD_JUPYTER_EXTENSION:BOOL=ON -DBUILD_WEBRTC=ON -DPython3_ROOT=/path/to/your/conda/env/bin/python ..

第10步:构建库

make -j$(nproc)

第 11 步:安装为 Python 包

make install-pip-package

第12步:测试Open3D安装

python -c "import open3d"

第 13 步:使用 TensorFlow 安装测试 Open3D-ML

python -c "import open3d.ml.tf as ml3d"

第 14 步:下载并准备数据集

在此步骤中,我们将下载 SemanticKITTI 数据集。 该数据集超过 80 GB,因此请确保有足够的空间和时间。 以下步骤将下载并准备数据集。 确保将 /path/to/save/dataset 替换为所需的路径。

cd Open3D-ML/scripts/
./download_semantickitti.sh /path/to/save/dataset

第 15 步:加载并可视化数据集

为了可视化 SemanticKITTI 数据集,请将以下 Python 代码保存在文件中并运行它。 请记住将 /path/to/save/dataset/ 替换为保存 SemanticKITTI 数据集的路径。

import open3d.ml.tf as ml3d
 
# construct a dataset by specifying dataset_path
dataset = ml3d.datasets.SemanticKITTI(dataset_path='/path/to/save/dataset/SemanticKitti/')
 
# get the 'all' split that combines training, validation and test set
all_split = dataset.get_split('all')
 
# print the attributes of the first datum
print(all_split.get_attr(0))
 
# print the shape of the first point cloud
print(all_split.get_data(0)['point'].shape)
 
# show the first 100 frames using the visualizer
vis = ml3d.vis.Visualizer()
vis.visualize_dataset(dataset, 'all', indices=range(340))

当你运行 Python 脚本时,可视化工具会打开并加载前 340 个数据帧。 你可以更改代码中加载的帧数。 打开后,可以根据强度探索点云,但最有趣的部分是根据每个点的语义标签探索点云。 下面的视频显示了两个示例。

在第一个视频中,你可以了解如何通过选择多个帧将它们作为动画播放。 确保从提供的选项中选择标签作为数据类型。

第二个视频展示了如何选择给定的帧并通过激活和停用某些标签来检查存在的语义对象。 当某些颜色太浅而难以看到时,你可以更改颜色以提高可见度。

第 16 步:故障排除

在执行上述步骤时,我遇到了以下异常。 修复它们很容易,如果你也找到它们的话。

如果出现 ModuleNotFoundError: No module named ‘yapf’

pip install yapf

如果出现 ModuleNotFoundError: No module named ‘jupyter_packaging’

pip install jupyter-packaging

就是这样。 Open3D-ML 是可视化点云数据集的绝佳工具。 下一步是研究数据集以了解它们是如何标记的。 然后,我将介绍使用 Open3D 训练/测试 3D 模型。 希望这将使我更接近使用自定义数据执行相同的操作。


原文链接:Open3D-ML点云目标检测 — BimANt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Open3D是一个开源的3D计算机视觉库,它提供了许多用于处理、可视化和分析点云数据的功能。点云分割Open3D中的一个重要功能之一,它用于将点云中的物体分割出来,从而实现对点云数据的更细粒度的处理和分析。 点云分割在许多领域中都有应用,如机器人导航、自动驾驶、虚拟现实等。Open3D中的点云分割算法可以通过使用不同的方法和技术来实现。 Open3D中一种常用的点云分割算法是基于区域生长的方法。该方法根据点云中点之间的距离和法线方向等特征信息,将相邻的点聚类到一起形成一个个物体。这种方法能够有效地将物体从点云分割出来,提供了丰富的参数设置和自定义的功能。 另外,Open3D还提供了基于深度学习的点云分割算法。该算法利用深度学习模型对点云数据进行分类和分割,实现了更准确和鲁棒的点云分割效果。同时,Open3D还提供了许多预训练的深度学习模型,用户可以直接使用这些模型进行点云分割,无需自行训练模型。 总之,Open3D作为一个功能强大的3D计算机视觉库,提供了点云分割的多种方法和技术,用户可以根据自己的需求选择合适的算法进行点云分割,实现高效且准确的点云处理和分析。 ### 回答2: Open3D是一个开源的3D计算机视觉库,提供了一系列用于处理和分析3D数据的功能。在Open3D中,点云分割是指将点云数据集划分为不同的部分或类别,以便更好地理解和处理点云。 在Open3D中,点云分割可以通过以下步骤实现: 1. 加载点云数据:使用Open3D提供的函数,可以从文件中加载点云数据集。支持的文件格式包括PLY、PCD等。 2. 预处理:在进行点云分割之前,通常需要进行一些预处理操作,例如去噪、滤波和降采样等。Open3D提供了丰富的预处理函数,可以用于处理点云数据。 3. 特征提取:为了更好地区分不同的点云部分或类别,通常需要从点云数据中提取一些特征。Open3D提供了多种特征提取算法,例如法向量估计、曲率计算等。 4. 分割算法:Open3D中实现了一些常用的点云分割算法,例如基于区域生长的分割算法、基于图割的分割算法等。这些算法可以帮助将点云数据划分为不同的部分或类别。 5. 可视化结果:Open3D可以将点云分割的结果可视化,以便更直观地观察和分析分割效果。 总之,Open3D是一个强大的点云分割工具,提供了丰富的功能和算法,可以帮助我们更好地理解和处理点云数据。通过Open3D,我们可以实现从点云数据的加载、预处理、特征提取到最终的分割结果可视化的全流程操作。 ### 回答3: Open3D是一个功能强大的点云处理库,可以用于点云分割任务。点云分割是指将点云数据集中的点分成不同的群组或类别,以实现语义分割或几何分割的目的。 在Open3D中,点云分割主要通过以下步骤完成: 1. 加载点云数据:使用Open3D库的功能,可以方便地加载点云数据。可以从文件中加载常见的点云格式如PLY、PCD以及XYZ等。加载点云数据后,就可以对数据进行分割处理。 2. 预处理:在进行点云分割之前,通常需要对点云数据进行预处理,以提高分割的效果。预处理的常见操作包括去噪、滤波、降采样等。Open3D提供了一系列功能强大的滤波算法和处理方法,可以方便地对点云数据进行预处理。 3. 点云分割算法:Open3D中提供了几种常见的点云分割算法,包括基于平面模型的分割算法、基于聚类的分割算法以及基于区域的分割算法等。这些算法可以根据不同的应用场景和需求,选择合适的算法进行点云分割。 4. 可视化结果:Open3D提供了强大的可视化功能,可以对分割结果进行可视化展示。可以将分割得到的点云可视化显示,以便于观察、分析和理解分割结果。 总之,Open3D作为一款功能强大的点云处理库,可以提供点云分割所需的加载、预处理、分割算法和可视化等功能。通过Open3D,可以方便地进行点云分割任务,实现对点云数据的语义分割和几何分割
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值