目录

jittor-原泽宇-PCT_jittor

本项目是图形学实验 PA3:Point Cloud Transformer 的 Jittor 实现,用于在 ModelNet40 点云数据集上完成三维形状分类任务。代码包含数据读取、点云增强、模型训练、验证、测试集推理和预测结果导出流程。

最终线上提交结果已在头歌 Educoder Jittor-7 平台通过评测,分数为 0.8266,评测编号为 2026051510143346343746

目录结构

.
├── configs/
│   └── default.json
├── data/
│   └── README.md
├── scripts/
│   ├── eval.sh
│   └── train.sh
├── src/
│   └── pct.py
├── .gitignore
├── LICENSE
├── README.md
└── requirements.txt

说明:

  • src/pct.py:核心代码,包含数据集读取、模型定义、训练、验证、推理和结果导出。
  • configs/default.json:默认训练与评测参数说明。
  • scripts/train.sh:训练脚本。
  • scripts/eval.sh:推理脚本。
  • data/README.md:数据准备说明。
  • outputs/:默认输出目录,保存模型、日志和预测结果,不提交到仓库。

环境安装

建议使用 Python 3.8 或更高版本。Jittor 当前支持 Linux 和 Windows/WSL,运行前需要安装 C++ 编译器,例如 g++clang

安装依赖:

pip install -r requirements.txt

如果 Jittor 安装遇到问题,可参考官方安装教程:

https://cg.cs.tsinghua.edu.cn/jittor/download/

数据准备

本项目使用预处理后的 ModelNet40 numpy 数据。数据文件体积较大,不放入代码仓库。请将数据放到 data/ 目录下:

data/
  train_points.npy
  train_labels.npy
  test_points.npy

也可以通过命令行参数 --data_dir 指定其他数据目录,例如:

python src/pct.py --data_dir /path/to/modelnet40

训练

使用默认参数训练并导出测试集预测结果:

bash scripts/train.sh

等价命令如下:

python src/pct.py \
  --data_dir ./data \
  --model pct \
  --n_points 1024 \
  --batch_size 32 \
  --epochs 200 \
  --seed 42 \
  --model_path outputs/pct_model.pkl \
  --result_path outputs/result.json

CPU 快速 smoke test:

python src/pct.py --epochs 1 --batch_size 4 --n_points 128 --num_workers 0

评测与推理

使用已训练好的 checkpoint 进行推理:

bash scripts/eval.sh outputs/pct_model.pkl

等价命令如下:

python src/pct.py \
  --eval_only \
  --data_dir ./data \
  --model pct \
  --model_path outputs/pct_model.pkl \
  --result_path outputs/result.json

推理完成后,将生成的 outputs/result.json 提交到头歌 Educoder Jittor-7 平台评测。

结果说明

线上评测指标为测试集分类准确率。result.json 采用“样本编号到预测类别”的映射格式,平台根据预测类别与隐藏测试集标签计算准确率。

本次最终提交结果:

  • 评测状态:accept
  • 评测分数:0.8266
  • 评测编号:2026051510143346343746

最终预测结果文件已上传至清华云盘:

https://cloud.tsinghua.edu.cn/f/e2367ccc06564baab01c/

可复现性说明

代码提供 --seed 参数,并在程序入口统一设置 NumPy 和 Jittor 的随机种子。训练和评测的关键参数均可通过命令行传入,常用参数见 configs/default.json

scripts/train.shscripts/eval.sh 会在 outputs/ 中保存本次运行的 config.jsoncommand.txt 和日志文件。由于训练过程包含随机采样和数据增强,不同硬件、Jittor 版本或随机种子下的结果可能与最终线上分数存在小幅差异。

第三方依赖与声明

本项目基于 Jittor 和 NumPy 实现。PCT 网络结构参考 Point Cloud Transformer 相关论文和课程实验说明,代码由本实验实现与整理。

关于

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

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

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