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

news2024/9/29 13:23:12

当开始新的研究时,我的方法通常是测试不同的相关事物,直到有足够的经验让我开始将这些点联系起来。 在开始构建用于 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/808248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6、Nginx实现反向代理

Nginx 反向代理是一种常见的应用场景,它允许 Nginx 作为中间服务器接收客户端的请求,并代理转发这些请求到后端的真实服务器。这种配置使得客户端只需要与 Nginx 交互,而后端服务器对客户端是透明的。 ngx_http_proxy_module: 将客…

无涯教程-jQuery - Pulsate方法函数

Pulsate 效果可以与effect()方法一起使用。这会使元素的不透明性产生多次脉冲。 Pulsate - 语法 selector.effect( "pulsate", {arguments}, speed ); 这是所有参数的描述- times - 脉动的时间。默认值为3。model - 效果的模式。可以是"显示(show)"&a…

2023年的深度学习入门指南(22) - 百川大模型13B的运行及量化

2023年的深度学习入门指南(22) - 百川大模型13B的运行及量化 不知道上一讲的大段代码大家看晕了没有。但是如果你仔细看了会发现,其实代码还是不全的。比如分词器我们就没讲。 另外,13B比7B的改进点也没有讲。 再有,对于13B需要多少显存我们…

C++ Insights: 源码工具

godbolt:编译器资源管理器 godbolt是一个交互式工具,允许您在一个窗口中键入代码,并在另一个窗口中查看其编译结果。https://godbolt.org/https://github.com/compiler-explorer/compiler-explorer/wiki C Insights - See your source cod…

IDEA debug总结

调试一次编程题,发现没有掌握debug技巧,确实费事,做一次总结,方便以后回顾。 Run to Cursor 跳到光标处,适用于快速跳过循环,定位到光标处,而不用到处打断点,使用断点跳转。非常实…

基于注解的 SpringMVC

SpringMVC SpringMVC使用SpringMVC的两个配置EnableWebMVC 和 ACWACSpringMVC执行流程接收请求参数Postman 发包工具()get 请求---简单类型数据(基本数据类型和String)get 请求---对象类型数据get 请求---数组类型get 请求 --- 集…

Android 面试题 内存泄露的原因 二

🔥 什么是内存泄漏 🔥 在Android开发过程中,当一个对象已经不需要再使用了,本该被回收时,而另个正在使用的对象持有它引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中&#…

关于提示词 Prompt

Prompt原则 原则1 提供清晰明确的指示 注意在提示词中添加正确的分割符号 prompt """ 请给出下面文本的摘要&#xff1a; <你的文本> """可以指定输出格式&#xff0c;如&#xff1a;Json、HTML提示词中可以提供少量实例&#xff0c;…

漏洞发现-BurpSuite插件-Fiora+Fastjson+Shiro

BurpSuite插件安装 插件&#xff1a;Fiora Fiora是LoL中的无双剑姬的名字&#xff0c;她善于发现对手防守弱点&#xff0c;实现精准打击。该项目为PoC框架nuclei提供图形界面&#xff0c;实现快速搜索、一键运行等功能&#xff0c;提升nuclei的使用体验。 该程序即可作为burp插…

剑指Offer 43. !! 1~n 整数中 1 出现的次数

剑指 Offer 43. 1&#xff5e;n 整数中 1 出现的次数 困难 446 相关企业 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现…

【LeetCode】160.相交链表

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结…

OpenLayers入门,OpenLayers鼠标移动事件使用,实现鼠标移动到点位上方后高亮显示点位要素

专栏目录: OpenLayers入门教程汇总目录 前言 本章主要讲解OpenLayers鼠标移动事件的使用,并简单实现鼠标移动到点位上方后高亮显示点位要素的功能,带领大家快速上手OpenLayers鼠标移动事件的应用。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖…

勒索病毒最新变种.locked勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 在数字时代&#xff0c;黑客们的阴谋不断蔓延&#xff0c;其中.locked勒索病毒是备受关注的黑暗力量。它们犹如黑夜中的黑暗之星&#xff0c;迅速将用户的数据加密&#xff0c;要挟赎金。本文91数据恢复将深入揭示.locked勒索病毒的独特之处&#xff0c;并探…

C++设计模式::代理模式(combination)-可运行

实现: 1) cImage:抽象类; cImageReal:派生类, 不可直接实例化; cImageProxy:派生代理类, 可直接实例化用来代理cImageReal; NOTICE:派生代理类用来简化对特定派生类的使用. 使用: 实例化代理类, 然后使用. 1) 设计框架 /*image.hpp*/ #pragma once #…

解决Django报错 : No module named ‘MySQLdb‘

Django的版本是2.0&#xff0c;Python的版本号是3.6.4 在models.py创建好了模型类之后使用命令&#xff1a;python manage.py makemigrations 进行迁移&#xff0c;但是突然报错&#xff1a;ImportError:No module named MySQLdb 查询了相关资料发现python2.x版本是支持mysql…

条款38:对变化多端的线程句柄析构函数行为保持关注

条款37解释过&#xff0c;可联结的线程对应着一个底层系统执行线程&#xff0c;未推迟任务&#xff08;参见条款36&#xff09;的期值和系统线程有类似关系。这么一来&#xff0c;std::thread型别对象和期值对象都可以视作系统线程的句柄。 从这个视角来看&#xff0c;std::th…

springboot中配置bpmsjs插件-activiti7流程图绘制插件/IDEA中运行bpmnjs

BPMNJS的安装和使用需要依赖nodejs插件,需要先安装NODEJS,因为bpmnjs插件的运行需要使用到NODEJS中的npm命令。 安装nodejs 安装和使用bpmnjs插件,绘制activiti工作流需要的流程图。 1、安装和配置nodejs 2.1、下载nodejs https://nodejs.org/en 1.2、安装nodejs,默认安…

基于 Docker 的深度学习环境:Windows 篇

本篇文章&#xff0c;我们聊聊如何在 Windows 环境下使用 Docker 作为深度学习环境&#xff0c;以及快速运行 SDXL 1.0 正式版&#xff0c;可能是目前网上比较简单的 Docker、WSL2 配置教程啦。 写在前面 早些时候&#xff0c;写过一篇《基于 Docker 的深度学习环境&#xff…

C++设计模式::享元模式(combination)-可运行

实现: 1) cShape:抽象接口; cShape*:具体实现的接口; 2) cFactory:按照传入参数color来区别对象, 如果已经创建过, 那就返回已有的, 否则创建新的. 使用: 传入参数, 获取被创建的对象(创建尽可能少的对象) 1) 设计框架 /*shape.hpp*/ #pragma once #if…

CSS伪元素详解以及伪元素与伪类的区别

伪元素常常被误解为伪类&#xff0c;主要在于他们的语法相似&#xff0c;都是对于选择器功能的扩展&#xff0c;相似程度很高导致被混淆。 本文通过详细介绍伪元素和常见的使用方法&#xff0c;最后也会分析下伪元素与伪类的基本区别。 基本描述 CSS伪元素也是应用于选择器的…