Initial commit: PCT ModelNet40 classification (based on jiajun9264’s implementation)
本仓库是第六届计图人工智能挑战赛热身赛二的开源实现,基于 jiajun9264 的开源实现修改。项目使用 Jittor 实现 Point Cloud Transformer(PCT),在 ModelNet40 点云上完成 40 类分类, 并生成比赛要求的 result.json 和 result.zip。
result.json
result.zip
仓库只包含可复现源码,不包含比赛数据、模型权重、训练日志或提交结果。
. ├── configs/ # 训练和推理的 JSON 配置 ├── data/ # 数据格式说明及类别名称,不含点云数据 ├── scripts/ # 可直接执行的训练和推理脚本 ├── src/warmup/ # 数据、模型、训练引擎和提交工具 ├── tests/ # 不依赖 GPU 的基础测试 ├── tools/ # 提交包生成与检查工具 ├── train.py # 训练入口 ├── infer.py # 推理入口 ├── Dockerfile ├── requirements.txt ├── LICENSE └── NOTICE
推荐环境:
docker build -t jittor-warmup2 . docker run --rm --gpus all \ -v "$PWD":/workspace \ -w /workspace \ -e JITTOR_HOME=/workspace/.cache/jittor \ jittor-warmup2 python3 train.py --help
python3.10 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements.txt
Jittor 首次运行时会编译算子。CUDA、编译器与驱动的具体兼容要求请参考 Jittor 官方安装文档。
从比赛平台下载热身赛二提供的 data.zip,在仓库根目录解压:
data.zip
unzip /path/to/data.zip -d .
解压后的结构必须是:
data/ ├── train_points.npy # (9843, 2048, 3) ├── train_labels.npy # (9843,) ├── test_points.npy # (2468, 2048, 3) └── categories.txt # 40 个类别,顺序对应标签编号
数据文件不应提交到 Git。需要使用其他位置时,通过 --data-root 覆盖配置:
--data-root
python3 train.py --config configs/train.json --data-root /path/to/data
更详细的数据约束见 data/README.md。
默认配置使用 SGD 训练 200 个 epoch:
python3 train.py --config configs/train.json
等价的脚本入口:
bash scripts/train.sh
关键参数来自 configs/train.json,显式命令行参数优先, 例如:
python3 train.py \ --config configs/train.json \ --batch-size 32 \ --epochs 100 \ --seed 2026
默认输出到 outputs/train/:
outputs/train/
pct_best.pkl
config.json
command.txt
train.log
比赛数据没有单独公开验证集,因此本实现按训练集准确率保存 checkpoint。 训练集准确率只用于观察优化过程,不等同于官方测试准确率。
使用训练产生的 checkpoint 推理:
python3 infer.py \ --config configs/infer.json \ --checkpoint outputs/train/pct_best.pkl
也可以运行:
bash scripts/infer.sh --checkpoint outputs/train/pct_best.pkl
默认进行 8 次确定性重采样投票,并在 outputs/infer/ 生成:
outputs/infer/
infer.log
单独重新打包或检查已有提交包:
python3 tools/package_submission.py python3 tools/package_submission.py --check-only
提交到比赛平台的是 outputs/infer/result.zip,不是仓库根目录或整个工程。
outputs/infer/result.zip
官方指标是测试集分类准确率:预测类别与真实类别一致的样本数除以 2468。 测试标签不公开,本仓库不能在本地计算官方指标。模型、随机种子、训练轮数、 Jittor/CUDA 版本和重采样投票数变化都可能使复现成绩与历史线上提交存在差异。
42
seed + epoch + sample index
num_workers=0
GPU 浮点计算和不同底层库版本仍可能带来微小差异。如需优先复现,请保留默认 依赖版本、配置与设备类型。
无需数据和 Jittor 即可运行配置与提交格式测试:
python3 -m unittest discover -s tests -v python3 -m compileall -q train.py infer.py src tools tests
完整训练前建议先用较短配置做端到端检查:
python3 train.py --config configs/train.json --epochs 1 --batch-size 8
本次发布前实际执行的检查及未覆盖范围见 VALIDATION.md。
本项目基于 jiajun9264 的开源实现修改,新增代码按 MIT License 发布, 原始版权声明予以保留。赛事 starter、PCT 架构和论文引用 信息见 NOTICE;第三方内容仍遵循其原始条款。
如果本项目对研究有帮助,请引用 PCT:
@article{guo2021pct, title={PCT: Point Cloud Transformer}, author={Guo, Meng-Hao and Cai, Jun-Xiong and Liu, Zheng-Ning and Mu, Tai-Jiang and Martin, Ralph R. and Hu, Shi-Min}, journal={Computational Visual Media}, year={2021} }
计图热身赛二
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Jittor 2026 热身赛二:ModelNet40 点云分类
本仓库是第六届计图人工智能挑战赛热身赛二的开源实现,基于 jiajun9264 的开源实现修改。项目使用 Jittor 实现 Point Cloud Transformer(PCT),在 ModelNet40 点云上完成 40 类分类, 并生成比赛要求的
result.json和result.zip。仓库只包含可复现源码,不包含比赛数据、模型权重、训练日志或提交结果。
项目结构
环境安装
推荐环境:
使用 Docker
使用本地 Python
Jittor 首次运行时会编译算子。CUDA、编译器与驱动的具体兼容要求请参考 Jittor 官方安装文档。
数据准备
从比赛平台下载热身赛二提供的
data.zip,在仓库根目录解压:解压后的结构必须是:
数据文件不应提交到 Git。需要使用其他位置时,通过
--data-root覆盖配置:更详细的数据约束见 data/README.md。
训练
默认配置使用 SGD 训练 200 个 epoch:
等价的脚本入口:
关键参数来自 configs/train.json,显式命令行参数优先, 例如:
默认输出到
outputs/train/:pct_best.pkl:训练集准确率最高的 checkpoint;config.json:合并配置文件与命令行参数后的实际配置;command.txt:本次运行命令;train.log:训练日志。比赛数据没有单独公开验证集,因此本实现按训练集准确率保存 checkpoint。 训练集准确率只用于观察优化过程,不等同于官方测试准确率。
推理与提交
使用训练产生的 checkpoint 推理:
也可以运行:
默认进行 8 次确定性重采样投票,并在
outputs/infer/生成:result.json:2468 个测试样本的类别编号;result.zip:仅包含result.json的比赛提交包;config.json、command.txt和infer.log:复现记录。单独重新打包或检查已有提交包:
提交到比赛平台的是
outputs/infer/result.zip,不是仓库根目录或整个工程。结果说明
官方指标是测试集分类准确率:预测类别与真实类别一致的样本数除以 2468。 测试标签不公开,本仓库不能在本地计算官方指标。模型、随机种子、训练轮数、 Jittor/CUDA 版本和重采样投票数变化都可能使复现成绩与历史线上提交存在差异。
可复现性
42,同时设置 Python、NumPy 和 Jittor 随机状态。seed + epoch + sample index派生的确定性随机流。num_workers=0,避免多进程数据加载引入额外非确定性。GPU 浮点计算和不同底层库版本仍可能带来微小差异。如需优先复现,请保留默认 依赖版本、配置与设备类型。
测试
无需数据和 Jittor 即可运行配置与提交格式测试:
完整训练前建议先用较短配置做端到端检查:
本次发布前实际执行的检查及未覆盖范围见 VALIDATION.md。
许可证与引用
本项目基于 jiajun9264 的开源实现修改,新增代码按 MIT License 发布, 原始版权声明予以保留。赛事 starter、PCT 架构和论文引用 信息见 NOTICE;第三方内容仍遵循其原始条款。
如果本项目对研究有帮助,请引用 PCT: