目录
isXSong1个月前2次提交

Point Cloud Transformer (PCT) for ModelNet40 Classification

基于 Jittor 淆框架的 Point Cloud Transformer (PCT) 模型实现,用于 ModelNet40 三维点云分类任务。

项目概述

本项目实现了 PCT (Point Cloud Transformer) 深度学习模型,用于对三维点云数据进行分类。模型采用 Transformer 架构处理点云数据,在 ModelNet40 数据集上进行训练和测试。

主要功能:

  • 支持点云数据加载和预处理
  • 完整的 PCT 模型架构实现
  • 训练和验证流程
  • 测试集预测和结果生成

环境配置

依赖项:

  • Python 3.6+
  • Jittor 深度学习框架
  • NumPy

关于Jittor详细的安装和使用说明请访问: Jittor 官方文档

目录结构

jittor/
├── pct.py              # 主程序文件,包含模型定义、训练和测试代码
├── pct_model.pkl       # 预训练模型权重
├── result.json         # 测试集预测结果
├── train.log           # 训练日志
├── data/               # 数据集目录
│   ├── train_points.npy    # 训练集点云数据 (N, 2048, 3)
│   ├── train_labels.npy    # 训练集标签
│   ├── test_points.npy     # 测试集点云数据
│   └── categories.txt      # 类别名称列表
└── README.md           # 项目说明文档

运行说明

训练模型

运行完整的训练流程(训练 + 测试):

python pct.py

可选参数:

  • --epochs: 训练轮数(默认:200)
  • --batch_size: 批次大小(默认:32)
  • --lr: 学习率(默认:0.001)
  • --n_points: 使用的点数(默认:1024)

示例:

python pct.py --epochs 100 --batch_size 16 --lr 0.0005

输出文件

运行后会生成以下文件:

  • pct_model.pkl: 训练完成的模型权重
  • result.json: 测试集预测结果,包含每个测试样本的预测类别

数据格式

  • 训练数据: data/train_points.npy - 形状为 (N, 2048, 3) 的 NumPy 数组,N 为样本数量
  • 测试数据: data/test_points.npy - 形状为 (M, 2048, 3) 的 NumPy 数组,M 为测试样本数量
  • 标签数据: data/train_labels.npy - 形状为 (N,) 的整数标签数组(0-39)

性能指标

以下数据是在样例训练集上实际训练的参考结果

训练配置

  • Points: 1024
  • Batch Size: 32
  • Epochs: 200
  • Learning Rate: 0.001
  • Optimizer: Adam (betas=(0.9, 0.999), weight_decay=1e-4)
  • Scheduler: Cosine Annealing LR

训练结果

模型在 ModelNet40 数据集上的训练表现:

Epoch 训练准确率
3 31.58%
18 39.34%
62 50.19%
138 60.25%
200 62.57%

测试集准确率: 61%(官方评测)

性能分析

  • 训练稳定性: 每轮训练时间稳定在 22±1 秒
  • 总训练时长: 约 45 分钟
  • 泛化能力: 训练集(62.57%)与测试集(61%)准确率接近,表明模型具有良好的泛化性能
  • 模型参数量: 1.37M

硬件环境

  • GPU: NVIDIA 2080 Ti (22GB 显存)
  • CPU: AMD EPYC 7601 32-Core Processor (8 核)
  • 内存: 63GB
  • CUDA: 12.1.1
  • Python: 3.11

常见问题

  1. Jittor 安装问题: 请参考 Jittor 官方文档 获取针对不同操作系统的安装指南

  2. 内存不足: 减小 batch_sizen_points 参数

  3. GPU 加速: Jittor 会自动检测并使用可用的 GPU,确保安装了正确的 CUDA 版本

  4. 训练准确率: 当前基线模型训练准确率约为 62%,测试准确率为 61%。虽然准确率不算很高,但训练集和测试集表现相近,说明模型具有良好的泛化性能。可以通过以下方式改进:

    • 调整模型超参数(学习率、隐藏层维度等)
    • 增加数据增强策略
    • 使用更深的网络或不同的注意力机制
    • 延长训练时间或使用学习率warmup

本项目仅供学习和研究使用。

联系方式

如有问题或建议,欢迎提 Issue 或 Pull Request。

关于

本项目是基于 Jittor 框架的三维点云模型训练入门示例,实现 Point Cloud Transformer(PCT)网络,完成 ModelNet40 三维形状分类任务。是作者学习使用Jittor的练习demo

249.7 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号