目录

ModelNet40 PCT Baseline

本仓库提供一个基于 Jittor 的 PCT(Point Cloud Transformer)点云分类基线, 用于 ModelNet40 分类任务。当前代码入口为 pct.py,训练结束后会保存模型并 自动生成测试集预测文件 result.json

环境安装

建议使用 Python 3.8 及以上版本。

pip install jittor numpy

如需 GPU 训练,请确保本机 CUDA 环境已正确安装,并参考 Jittor 官方文档完成 对应配置。

数据准备

数据文件不应提交到 Git 仓库。请将预处理后的数据放在 data/ 目录下,目录结构 如下:

data/
  train_points.npy   # 训练点云,shape: (N, 2048, 3)
  train_labels.npy   # 训练标签,shape: (N,)
  test_points.npy    # 测试点云,shape: (M, 2048, 3)
  categories.txt     # 类别名称,可选

运行时通过 --data_dir 指定数据根目录,例如 --data_dir ./data

训练

使用以下命令训练模型:

python pct.py --data_dir ./data --n_points 1024 --batch_size 64 --epochs 200 --lr 0.001 --seed 42

训练结束后会在当前目录生成:

  • pct_model.pkl:模型权重
  • result.json:测试集预测结果

评测/推理

当前仓库尚未提供独立的 --ckpt 推理入口;pct.py 会在训练完成后直接使用本次 训练得到的模型生成预测结果。

可直接运行的训练加推理命令如下:

python pct.py --data_dir ./data --n_points 1024 --batch_size 64 --epochs 200 --lr 0.001 --seed 42

默认 checkpoint 输出路径为 pct_model.pkl,预测结果输出路径为 result.json。 如后续新增独立推理脚本,请在本节补充类似 python scripts/infer.py --data_dir ./data --ckpt pct_model.pkl 的命令。

结果说明

训练过程中会打印训练集 loss 和 accuracy:

  • loss:交叉熵损失
  • accuracy:预测类别与训练标签一致的样本比例

测试集通常不提供标签,本仓库生成的 result.json 格式为:

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

其中 key 为测试样本编号,value 为预测类别编号。线上成绩以比赛平台使用隐藏标签 计算的分类准确率为准,可能与本地训练日志中的训练准确率不同。

可复现说明

脚本提供 --seed 参数,并在代码中设置 NumPy 与 Jittor 的随机种子。推荐固定 以下关键参数进行复现:

python pct.py --data_dir ./data --n_points 1024 --batch_size 64 --epochs 200 --lr 0.001 --seed 42

建议每次运行时保存日志与命令,例如:

mkdir -p outputs
python pct.py --data_dir ./data --n_points 1024 --batch_size 64 --epochs 200 --lr 0.001 --seed 42 2>&1 | tee outputs/train.log

由于 CUDA、Jittor 版本、硬件和随机采样等因素影响,复现实验结果可能与线上最终 成绩存在小幅差异。

第三方引用与许可证

本项目使用 Jittor 和 NumPy。若后续引用或改写第三方代码、使用预训练权重或额外 数据集,请在 README、文件头注释或 NOTICE 中注明来源、许可证与下载方式。

本仓库代码默认采用 MIT License,详见 LICENSE

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

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