作业2--点云表征

本文介绍了如何在Python中实现PointCloud到RangeImage的转换,使用了dynamic_reconfigure库,并详细指导了创建RangeImage节点和配置。随后,展示了如何利用openCV将PointCloud转化为Bird's Eye View (BEV),并演示了基于open3d库的点云特征值计算。涉及的技术包括ROS、opencv、open3d等。

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

一.Point Cloud 转Range Image

  1. 功能包创建—aiimooc_qjw_range_dyna
  2. 创建cfg文件夹,在该文件中新建RangeImage.cfg(Python文件,dynamic_reconfigure库)
  3. 修改CMakeList.txt文件中(Generate dynamic reconfigure parameters in the 'cfg' folder)内容,通过catkin_make操作实现RangeImageConfig.h头文件,为后续节点文件使用
  4. 编写头文件、源文件、CMakeList文件
  5. 对节点文件进行catkin_make操作
  6. 创建launch文件夹,编写.launch文件,启动节点和rviz----------roslaunch aiimooc_qjw_range_dyna aiimooc_qjw.launch
  7. 实时更改传感器参数------rosrun rqt_reconfigure rqt_reconfigure

 二.Point Cloud 转Bird View

核心配置Python3.7环境,使用openCv功能包。

conda create -n py37 python=3.7

输入condapy3激活Python3.7环境

在该环境下安装 pip install catkin-tools 、pip install rospkg

1.创建功能包aiimooc_qjw_bev

2.在功能包中创建scripts文件夹,在该文件夹中创建bev_image.py源文件

在代码中,首先移除ros库导入cv2包,在导入ros库

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')

3.更改源文件的可执行权限 chmod +x bev_image.py

4.在终端rosrun aiimooc_qjw_bev bev_image.py

 .基于点云特征的特征值计算

主要在Python3.7环境中使用open3d库

原先的命令安装存在问题:pip install open3d-python

尝试多种安装方式:conda install -c open3d-admin open3d

python3 -m pip install --user open3d 没有解决问题

怀疑还是版本问题,指定版本:

python -m pip install open3d==0.9

  1. 创建功能包aiimooc_qjw_feature
  2. 在功能包中创建scripts文件夹,在该文件夹中创建eigenfeature.py源文件
  3. 更改源文件的可执行权限 chmod +x eigenfeature.py
  4. 在终端rosrun aiimooc_qjw_feature eigenfeature.py

### 测试 RandLA-Net 的 PyTorch 实现指南 #### 准备环境 为了运行 RandLA-Net 的 PyTorch 版本,需要安装必要的依赖库。可以使用 `pip` 或者 `conda` 来管理这些依赖项。以下是常见的依赖列表: ```bash pip install torch torchvision numpy tqdm matplotlib scikit-image open3d ``` 如果计划在 GPU 上运行模型,则需确认已正确配置 CUDA 和 cuDNN,并验证 PyTorch 是否能够检测到可用的 GPU 设备。 #### 数据准备 RandLA-Net 是一种用于点云语义分割的任务驱动型网络结构。因此,在测试之前,需要准备好相应的数据集并将其换为适合输入的形式。常用的公开数据集包括 S3DIS、SemanticKITTI 等。对于自定义的数据集,应遵循以下格式化标准: - 输入点云通常表示为 N×C 维度矩阵 (N 表示点数,C 表示特征维度),其中 C 至少包含三维坐标 (x, y, z)。 - 输出标签则是一个长度为 N 的一维数组,对应于每个点的类别标注。 可以通过官方文档或者社区资源获取预处理脚本来完成上述操作[^1]。 #### 加载预训练权重 许多研究项目都会提供经过充分调优后的预训练参数文件供下载。加载这些权重可以帮助快速评估模型性能而无需重新训练整个流程。假设已经获得了一个 `.pth` 文件形式保存下来的 checkpoint ,那么可以用如下方式恢复状态字典: ```python import torch model = ModelClass() # 替换为实际类名 checkpoint = torch.load('path_to_checkpoint.pth') model.load_state_dict(checkpoint['state_dict']) ``` 注意这里假定存档中包含了键名为 `'state_dict'` 的条目;如果不是这种情况,请参照具体项目的存储约定调整读取逻辑。 #### 配置分布式训练选项 当目标硬件支持多个 GPUs 并希望充分利用它们时,可考虑采用多卡同步批量归一化的策略来加速收敛过程。正如提到过的那样,“我们通过内部调用 `torch.distributed.launch` 启动多 GPU 训练。” 这意味着可以在命令行界面执行下面类似的指令启动程序实例: ```bash export NGPUS=4 python -m torch.distributed.launch --nproc_per_node=$NGPUS train.py \ --config-file configs/default_config.yaml DATASET.PATH "/data/your_dataset" ``` 此处 `$NGPUS` 定义参与计算作业的工作节点数目即物理设备数量;其余部分则是传递给主入口函数的关键参数集合。 #### 推理阶段设置 一旦完成了前期准备工作之后,便进入到推理环节。此时只需简单修改几处代码即可切换至预测模式下运作。一般而言,这涉及以下几个方面改动: - 将 batch size 设置得更小以便适应单次前向传播内存占用需求; - 关闭 dropout 层以及其他随机性组件开关以保证结果一致性; - 对最终输出应用 softmax 换从而得到概率分布表征分类信心程度。 下面是简化版伪代码展示如何构建这样的流水线架构: ```python def inference(model, dataloader): model.eval() predictions = [] with torch.no_grad(): for points in dataloader: outputs = model(points.cuda()) preds = torch.argmax(outputs, dim=-1).cpu().numpy() predictions.append(preds) return np.concatenate(predictions) pred_labels = inference(model, test_loader) save_results(pred_labels, 'output/predictions.txt') ``` 以上片段展示了典型情况下怎样利用先前建立起来的对象来进行新样本推断工作流设计思路[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值