目录

# PCT ModelNet40 Classification

基于 Jittor 的 PCT(Point Cloud Transformer)点云分类代码,用于 ModelNet40 三维形状分类任务。代码包含数据加载、训练、验证和测试集推理流程,预测结果保存为 result.json

目录结构

.
├── src/
│   └── pct.py
├── data/
│   └── README.md
├── outputs/
├── NOTICE
├── requirements.txt
├── LICENSE
├── .gitignore
└── README.md
  • src/:核心代码
  • data/:数据说明,不提交大型数据文件
  • outputs/:训练日志、模型权重和预测结果,默认不提交
  • NOTICE:第三方依赖与来源说明
  • LICENSE:开源许可证

环境安装

建议使用 Python 3.8 或更高版本,并准备支持 CUDA 的运行环境。

pip install -r requirements.txt

代码默认启用 GPU:

jt.flags.use_cuda = 1

如需在 CPU 环境运行,请在代码中将其改为 0

数据准备

将预处理后的 ModelNet40 数据放入 data/ 目录:

data/
  train_points.npy
  train_labels.npy
  test_points.npy
  categories.txt

数据根目录通过 --data_dir 指定,默认值为 ./data

训练

从项目根目录运行:

python src/pct.py --data_dir ./data --output_dir ./outputs --n_points 2048 --batch_size 16 --epochs 300 --lr 0.001 --seed 42

常用参数:

  • --data_dir:数据目录,默认 ./data
  • --output_dir:输出目录,默认 ./outputs
  • --n_points:每个样本采样点数,默认 2048
  • --batch_size:批大小,默认 16
  • --epochs:训练轮数,默认 300
  • --lr:学习率,默认 0.001
  • --seed:随机种子,默认 42
  • --mode:运行模式,可选 traininfer,默认 train
  • --ckpt_path:推理时加载的模型权重路径

评测/推理

训练命令会在结束后自动对测试集生成预测结果。也可以使用已有权重单独推理:

python src/pct.py --mode infer --data_dir ./data --output_dir ./outputs --ckpt_path ./outputs/pct_model_best.pkl --vote_num 10

输出文件:

outputs/config.json
outputs/command.txt
outputs/train.log
outputs/pct_model_best.pkl
outputs/result.json

result.json 格式示例:

{
  "0": 12,
  "1": 5
}

键为测试样本编号,值为预测类别。

结果说明

训练过程中使用验证集分类准确率(accuracy)选择最佳模型:

accuracy = 正确预测样本数 / 总样本数

测试集结果通过多次旋转投票得到,--vote_num 控制投票次数。由于随机初始化、数据增强、训练轮数和硬件环境不同,本地结果可能与线上提交结果存在小幅差异。

可复现说明

代码提供 --seed 参数,并在 NumPy 与 Jittor 中统一设置随机种子。每次运行会自动在 --output_dir 中保存实际配置、运行命令和训练日志:config.jsoncommand.txttrain.log

第三方依赖

  • Jittor:深度学习框架
  • NumPy:数据读取与数值计算
关于
40.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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