三维点云标注实战从SUSTechPOINTS到OpenPCDet的全流程指南在自动驾驶和机器人感知领域高质量的点云标注数据是模型训练的基石。面对海量的原始点云数据如何高效完成标注并快速投入模型训练成为许多研究者和工程师面临的共同挑战。本文将手把手带你掌握SUSTechPOINTS标注工具的核心技巧并实现与OpenPCDet框架的无缝对接打造从原始数据到训练就绪的完整工作流。1. SUSTechPOINTS环境配置与数据准备1.1 工具安装与启动SUSTechPOINTS作为一款开源的三维点云标注工具以其轻量化和易用性受到广泛欢迎。安装过程仅需几个简单步骤git clone https://github.com/naurril/SUSTechPOINTS cd SUSTechPOINTS pip install -r requirement.txt wget https://github.com/naurril/SUSTechPOINTS/releases/download/0.1/deep_annotation_inference.h5 -P algos/models python main.py启动后在浏览器访问http://127.0.0.1:8081即可进入标注界面。首次使用时建议检查依赖版本特别是确保PyQt5和numpy的兼容性。1.2 数据集目录结构规范SUSTechPOINTS要求特定的数据组织结构以保证多模态数据的正确加载。以下是精简后的目录结构示例- data - scene1 - lidar - 0000.pcd - 0001.pcd - label - 0000.json - 0001.json对于纯激光雷达数据项目只需保留lidar和label两个子目录。每个.pcd文件对应一帧点云数据而同名的.json文件将存储标注结果。注意点云文件建议使用相对路径存储避免在不同机器上使用时出现路径错误。2. 高效标注技巧与工作流优化2.1 基础标注操作流程在标注界面左上角的下拉菜单中依次选择数据集文件夹和具体点云文件后系统会加载可视化界面。右键点击New按钮可选择预设的物体类别如Vehicle、Pedestrian等随后在三个视图俯视、前视、侧视中调整3D边界框位置调整在任意视图中拖动边界框中心点尺寸调整拖动边界框边缘的控制点方向调整使用快捷键q/e进行旋转2.2 高级批量标注技巧SUSTechPOINTS提供了一系列提升效率的快捷键组合快捷键功能描述Ctrl左键点云区域选择V进入批量标注模式1/2切换当前物体的前后标注框PageUp/Down切换前后帧批量标注流程在第一帧手动标注典型物体按V键进入批量模式选择后续帧中的对应点云区域右键选择Auto annotate自动生成相似标注提示对于连续帧中的静态物体可使用Propagate功能自动传播标注到整个序列。3. 标注数据格式解析与转换3.1 SUSTechPOINTS原生JSON格式标注结果以JSON格式存储每个物体包含以下关键信息{ obj_type: Pedestrian, psr: { position: {x: 1.2, y: -0.5, z: 0.3}, rotation: {x: 0, y: 0, z: 1.57}, scale: {x: 0.8, y: 0.5, z: 1.7} } }3.2 OpenPCDet兼容格式转换OpenPCDet要求每个点云帧对应一个.txt标注文件格式为类别名 x y z l w h rz以下Python脚本实现格式转换import json import os def convert_to_openpcdet(json_path, output_dir): with open(json_path, r) as f: data json.load(f) lines [] for obj in data: cls obj[obj_type] pos obj[psr][position] scale obj[psr][scale] rot_z obj[psr][rotation][z] line f{cls} {pos[x]} {pos[y]} {pos[z]} line f{scale[x]} {scale[y]} {scale[z]} {rot_z}\n lines.append(line) os.makedirs(output_dir, exist_okTrue) base_name os.path.basename(json_path).replace(.json, .txt) output_path os.path.join(output_dir, base_name) with open(output_path, w) as f: f.writelines(lines)4. OpenPCDet数据集配置与验证4.1 数据集YAML文件配置在OpenPCDet中创建自定义数据集需要正确配置.yaml文件DATASET: CustomDataset DATA_PATH: path/to/pointclouds ANN_PATH: path/to/converted_labels CLASS_NAMES: [Pedestrian, Vehicle, Cyclist] POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1]4.2 数据加载验证技巧使用以下代码片段验证数据是否正确加载from pcdet.datasets import build_dataset cfg ... # 加载配置文件 dataset build_dataset(cfg.DATA_CONFIG) # 可视化首帧数据 sample_idx 0 data_dict dataset[sample_idx] points data_dict[points][:, 1:4] # 取xyz坐标 gt_boxes data_dict[gt_boxes] print(f点云数量: {points.shape[0]}) print(f标注框数量: {gt_boxes.shape[0]})5. 常见问题排查与性能优化5.1 标注效率提升实践硬件加速启用WebGL渲染可大幅提升大规模点云的显示性能预标注策略先使用算法生成预标注结果再进行人工校验团队协作对大型数据集采用分场景标注策略5.2 典型错误处理问题现象可能原因解决方案标注框显示偏移坐标系不匹配检查传感器标定参数批量标注结果不准确点云特征差异大缩小选择区域或手动调整OpenPCDet加载失败路径或格式错误使用绝对路径并验证文件权限在实际项目中建议先标注100帧样本进行全流程测试确认无误后再开展大规模标注。遇到点云密度不足的情况可考虑使用时序累积或数据增强技术提升训练效果。
保姆级教程:用SUSTechPOINTS标注自动驾驶点云数据集,并一键转成OpenPCDet训练格式
发布时间:2026/5/19 21:19:20
三维点云标注实战从SUSTechPOINTS到OpenPCDet的全流程指南在自动驾驶和机器人感知领域高质量的点云标注数据是模型训练的基石。面对海量的原始点云数据如何高效完成标注并快速投入模型训练成为许多研究者和工程师面临的共同挑战。本文将手把手带你掌握SUSTechPOINTS标注工具的核心技巧并实现与OpenPCDet框架的无缝对接打造从原始数据到训练就绪的完整工作流。1. SUSTechPOINTS环境配置与数据准备1.1 工具安装与启动SUSTechPOINTS作为一款开源的三维点云标注工具以其轻量化和易用性受到广泛欢迎。安装过程仅需几个简单步骤git clone https://github.com/naurril/SUSTechPOINTS cd SUSTechPOINTS pip install -r requirement.txt wget https://github.com/naurril/SUSTechPOINTS/releases/download/0.1/deep_annotation_inference.h5 -P algos/models python main.py启动后在浏览器访问http://127.0.0.1:8081即可进入标注界面。首次使用时建议检查依赖版本特别是确保PyQt5和numpy的兼容性。1.2 数据集目录结构规范SUSTechPOINTS要求特定的数据组织结构以保证多模态数据的正确加载。以下是精简后的目录结构示例- data - scene1 - lidar - 0000.pcd - 0001.pcd - label - 0000.json - 0001.json对于纯激光雷达数据项目只需保留lidar和label两个子目录。每个.pcd文件对应一帧点云数据而同名的.json文件将存储标注结果。注意点云文件建议使用相对路径存储避免在不同机器上使用时出现路径错误。2. 高效标注技巧与工作流优化2.1 基础标注操作流程在标注界面左上角的下拉菜单中依次选择数据集文件夹和具体点云文件后系统会加载可视化界面。右键点击New按钮可选择预设的物体类别如Vehicle、Pedestrian等随后在三个视图俯视、前视、侧视中调整3D边界框位置调整在任意视图中拖动边界框中心点尺寸调整拖动边界框边缘的控制点方向调整使用快捷键q/e进行旋转2.2 高级批量标注技巧SUSTechPOINTS提供了一系列提升效率的快捷键组合快捷键功能描述Ctrl左键点云区域选择V进入批量标注模式1/2切换当前物体的前后标注框PageUp/Down切换前后帧批量标注流程在第一帧手动标注典型物体按V键进入批量模式选择后续帧中的对应点云区域右键选择Auto annotate自动生成相似标注提示对于连续帧中的静态物体可使用Propagate功能自动传播标注到整个序列。3. 标注数据格式解析与转换3.1 SUSTechPOINTS原生JSON格式标注结果以JSON格式存储每个物体包含以下关键信息{ obj_type: Pedestrian, psr: { position: {x: 1.2, y: -0.5, z: 0.3}, rotation: {x: 0, y: 0, z: 1.57}, scale: {x: 0.8, y: 0.5, z: 1.7} } }3.2 OpenPCDet兼容格式转换OpenPCDet要求每个点云帧对应一个.txt标注文件格式为类别名 x y z l w h rz以下Python脚本实现格式转换import json import os def convert_to_openpcdet(json_path, output_dir): with open(json_path, r) as f: data json.load(f) lines [] for obj in data: cls obj[obj_type] pos obj[psr][position] scale obj[psr][scale] rot_z obj[psr][rotation][z] line f{cls} {pos[x]} {pos[y]} {pos[z]} line f{scale[x]} {scale[y]} {scale[z]} {rot_z}\n lines.append(line) os.makedirs(output_dir, exist_okTrue) base_name os.path.basename(json_path).replace(.json, .txt) output_path os.path.join(output_dir, base_name) with open(output_path, w) as f: f.writelines(lines)4. OpenPCDet数据集配置与验证4.1 数据集YAML文件配置在OpenPCDet中创建自定义数据集需要正确配置.yaml文件DATASET: CustomDataset DATA_PATH: path/to/pointclouds ANN_PATH: path/to/converted_labels CLASS_NAMES: [Pedestrian, Vehicle, Cyclist] POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1]4.2 数据加载验证技巧使用以下代码片段验证数据是否正确加载from pcdet.datasets import build_dataset cfg ... # 加载配置文件 dataset build_dataset(cfg.DATA_CONFIG) # 可视化首帧数据 sample_idx 0 data_dict dataset[sample_idx] points data_dict[points][:, 1:4] # 取xyz坐标 gt_boxes data_dict[gt_boxes] print(f点云数量: {points.shape[0]}) print(f标注框数量: {gt_boxes.shape[0]})5. 常见问题排查与性能优化5.1 标注效率提升实践硬件加速启用WebGL渲染可大幅提升大规模点云的显示性能预标注策略先使用算法生成预标注结果再进行人工校验团队协作对大型数据集采用分场景标注策略5.2 典型错误处理问题现象可能原因解决方案标注框显示偏移坐标系不匹配检查传感器标定参数批量标注结果不准确点云特征差异大缩小选择区域或手动调整OpenPCDet加载失败路径或格式错误使用绝对路径并验证文件权限在实际项目中建议先标注100帧样本进行全流程测试确认无误后再开展大规模标注。遇到点云密度不足的情况可考虑使用时序累积或数据增强技术提升训练效果。