本仓库包含点云语义分割模型的训练、测试和部署全流程代码,支持多种模型架构和分割任务,包括多类和二分类任务,并实现了知识蒸馏技术优化模型性能。
- 支持DGCNN、PointNet++等多种点云处理模型
- 实现知识蒸馏技术优化小模型性能
- 提供完整的训练、测试和部署流程
- 针对圆形电厂和条形结构等特殊场景优化
- 描述: 训练动态图卷积神经网络 (DGCNN) 模型用于点云语义分割。
- 任务: 多类分割,包含 5 个类别(
liaodui(料堆)、dabi(大臂)、guidao(轨道)、madao(马道)、zaodian(噪点))。 - 特点: 使用加权交叉熵损失,支持数据增强(绕 Z 轴随机旋转),每 5 个 epoch 保存一次模型,并根据均交并比 (mIoU) 保存最佳模型。
- 数据路径:
./mydata/data_npy/ - 测试区域: 2
- 默认训练轮数: 100
- 描述: 训练 DGCNN 的层次图神经网络变体 (DGCNN-HGNN) 用于点云语义分割。
- 任务: 多类分割,包含 5 个类别(与
train_semseg_rs.py相同)。 - 特点: 类似于
train_semseg_rs.py,但使用更先进的dgcnnhgnn模型,采用加权交叉熵损失并定期保存模型。 - 数据路径:
./mydata/data_npy/ - 测试区域: 2
- 默认训练轮数: 100
- 描述: 训练 PointNet++ 学生模型,通过 DGCNN 教师模型的知识蒸馏进行点云语义分割。
- 任务: 二分类(
detect(检测到)、no_detect(未检测到))。 - 特点: 结合加权交叉熵损失和 KL 散度损失(可选注意力损失,目前注释掉),训练结束后保存最终模型,因蒸馏效率使用较少轮数。
- 数据路径:
./data_npy/ - 测试区域: 5
- 默认训练轮数: 50
- 额外参数:
temp(蒸馏温度)、alpha(蒸馏损失权重)、beta(注意力损失权重)。
- 描述: 训练 PointNet++ 模型用于点云语义分割。
- 任务: 二分类(
detect(检测到)、no_detect(未检测到))。 - 特点: 使用加权交叉熵损失,支持数据增强,每 5 个 epoch 保存一次模型,并根据 mIoU 保存最佳模型。
- 数据路径:
./data_npy/ - 测试区域: 5
- 默认训练轮数: 100
- 描述: 训练 DGCNN 模型用于点云语义分割。
- 任务: 二分类(
detect(检测到)、no_detect(未检测到))。 - 特点: 使用加权交叉熵损失,支持数据增强,每 5 个 epoch 保存一次模型,并根据 mIoU 保存最佳模型。
- 数据路径:
./data_npy/ - 测试区域: 5
- 默认训练轮数: 100
- 描述: 用于圆形电厂点云数据的测试
- 输入: 预训练模型(
.pth文件)和测试数据 - 输出: 分割结果和评估指标
- 可视化: 生成圆形电厂分割效果图(cir1.jpg, cir2.jpg)
- 描述: 通用点云分割测试脚本
- 功能: 加载训练好的模型进行推理测试
- 支持: 多种点云数据格式输入
- 描述: 模型导出和脚本化测试
- 功能: 将PyTorch模型导出为TorchScript格式用于部署
项目已提供部署所需的模型文件:
deploy/dgcnn_segmentationcir.pt: 针对圆形电厂优化的部署模型
部署流程:
- 使用
test_scripting.py将训练好的模型导出为TorchScript格式 - 通过
deploy/目录下的模型文件进行推理 - 集成到目标部署环境(C++/Python均可)
- Python 3.x
- PyTorch: 确保安装了支持 GPU 的 PyTorch(如果使用 CUDA)。
- 其他依赖:
numpy,torch,pathlib,tqdm,logging,以及模型特定的工具(例如provider,OrangeDataset)。
安装依赖项:
pip install torch numpy pathlib tqdm open3d matplotlib- 训练时可根据显存大小调整
batch_size参数 - 部署前建议使用
test_scripting.py验证模型导出正确性 - 圆形电厂场景推荐使用专门的
dgcnn_segmentationcir.pt模型


