目录

PA3_PCT_jittor

基于 Jittor 实现的 Point Cloud Transformer(PCT)三维点云分类项目,用于在 ModelNet40 数据集上完成训练与测试集预测,并生成 result.json

项目简介

本项目使用 PCT 模型对三维点云进行分类。输入为点云坐标,输出为 40 个类别上的分类结果。训练数据来自本地 data/ 目录中的 .npy 文件,测试阶段会根据测试集点云生成对应的类别预测,并将结果保存为 result.json

当前实现包含以下完整流程:

  • 加载训练集和测试集点云数据
  • 对训练点云进行随机增强
  • 构建基于自注意力的 PCT 分类模型
  • 使用 Adam 优化器与余弦退火学习率调度进行训练
  • 对测试集进行推理并导出预测结果

安装依赖

  • 本项目依赖 Jittor 和 Numpy 库,请参考https://cg.cs.tsinghua.edu.cn/jittor/download/ 安装所需的Jittor库。

项目结构

.
├── pct.py                  # 主训练与推理脚本
├── README.md               # 项目说明文档
└── data/
    ├── train_points.npy    # 训练点云数据
    ├── train_labels.npy    # 训练标签
    ├── test_points.npy     # 测试点云数据
    └── categories.txt      # 类别名称列表

数据说明

数据目录默认为 ./data,项目依赖以下文件:

  • train_points.npy:训练集点云,形状通常为 (N, 2048, 3)
  • train_labels.npy:训练集类别标签,形状通常为 (N,)
  • test_points.npy:测试集点云,无标签
  • categories.txt:类别名称表,便于查看类别语义

训练时脚本会从每个点云中随机采样 n_points 个点,默认采样数量为 1024

快速开始

训练并生成测试集预测

python pct.py

指定训练参数

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

可选参数

参数 默认值 说明
--data_dir ./data 数据目录
--n_points 1024 每个样本采样的点数
--batch_size 32 批大小
--epochs 250 训练轮数
--lr 0.0005 学习率
--weight_decay 1e-4 权重衰减
--seed 42 随机种子

运行结果

脚本运行完成后会生成以下文件:

  • pct_model.pkl:训练后的模型参数
  • result.json:测试集预测结果,格式为 {样本编号: 预测类别}

训练过程中会在终端打印每个 epoch 的日志,包括:

  • Loss
  • Train Acc
  • LR
  • Time

后续改进方向

  • 增加训练集与验证集划分,监控验证准确率
  • 保存最佳模型,而不是只保存最后一轮
  • 增加混合精度、早停或更细致的学习率策略
  • 支持从 categories.txt 导出更可读的预测结果
  • 补充实验记录、结果对比和可视化图表

数据及结果

参见清华网盘 https://cloud.tsinghua.edu.cn/d/f371ab6dfdad4726b844/

许可证

本项目采用 MIT License。

关于

A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 classification

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

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