[backend] feat: harden warmup regularization defaults
基于 Jittor 实现的 Point Cloud Transformer(PCT)点云分类项目,用于在 ModelNet40 数据集上完成三维点云物体分类训练与预测。本项目适配本地环境和 OpenI/C2Net 训练平台,包含数据读取、点云增强、局部邻域建模、Transformer 编码、训练调度、checkpoint 保存和测试集结果生成流程。
fast
--config
config.json
command.txt
train.log
jittor-pct-modelnet40/ ├── configs/ │ └── default.json # 默认训练配置 ├── data/ │ └── README.md # 数据准备说明,不提交大文件 ├── scripts/ │ ├── train_local.sh # 本地训练示例 │ └── train_openi.sh # OpenI 训练示例 ├── pct.py # 训练、评测和预测主程序 ├── requirements.txt # Python 依赖 ├── README.md ├── LICENSE └── .gitignore
推荐环境:
Python 3.8+ Jittor 1.3+ NumPy CUDA GPU 环境,推荐 A100 或同等级 GPU
安装依赖:
pip install -r requirements.txt
OpenI 平台通常已在 Jittor GPU 镜像中预装 Jittor 和 C2Net SDK。如果本地没有 CUDA,脚本会自动切换到较小 CPU 调试配置,但训练速度和最终结果会明显低于 GPU。
将预处理后的 ModelNet40 数据放到 data/ 目录:
data/
data/ ├── categories.txt ├── train_points.npy ├── train_labels.npy └── test_points.npy
如果数据在其他路径,可通过 --data_dir 或 --data_root 指定:
--data_dir
--data_root
python pct.py --data_dir /path/to/modelnet40_npy
.npy 数据文件默认不会提交到 Git。更多说明见 data/README.md。
.npy
使用默认配置训练:
python pct.py --config configs/default.json
本地脚本:
bash scripts/train_local.sh
OpenI 脚本:
bash scripts/train_openi.sh
如果训练时间紧,可以使用快速 anchor 采样:
python pct.py --config configs/default.json --anchor_method fast
如果希望冲击更高线上分数,可以适当增加训练轮数和测试投票次数:
python pct.py --config configs/default.json --epochs 260 --vote_num 16
当前脚本在训练结束后会自动加载最优 checkpoint,并对测试集生成预测文件:
outputs/result.json
使用已有 checkpoint 直接推理:
python pct.py --eval_only --checkpoint outputs/pct_model_best.pkl --data_dir data
如果在 OpenI 平台运行,结果会保存到平台提供的 output 目录,并在训练任务结束时调用 upload_output() 回传。
upload_output()
CPU 小规模调试命令:
python pct.py --epochs 5 --batch_size 8 --n_points 512 --anchor_method fast
训练日志中的 Train Acc 表示训练集分类准确率。若设置 --val_ratio 大于 0,脚本会从训练集中划分验证集并输出 Val Acc。线上最终成绩以平台根据 result.json 计算的测试集准确率为准。
Train Acc
--val_ratio
Val Acc
result.json
默认配置偏向单卡 A100 上的精度和速度平衡,并使用验证集准确率选择最优 checkpoint。由于随机种子、平台环境、Jittor/CUDA 版本、测试投票次数、验证集划分和是否使用 FPS anchor 等因素不同,本地复现结果可能与线上成绩存在小幅差异。若需要使用全部训练数据训练,可以设置 --val_ratio 0 --selection_metric train,但该模式下 checkpoint 选择会更依赖训练准确率,线上分数可能更不稳定。
--val_ratio 0 --selection_metric train
每次运行会在输出目录保存:
pct_model.pkl
pct_model_best.pkl
pct_model_top*.pkl
这些文件默认被 .gitignore 忽略。
.gitignore
None
data
--output_dir
outputs
--n_points
1024
--batch_size
48
--epochs
240
--lr
8e-4
--vote_num
12
0.1
--selection_metric
auto
--stage1_points
192
--knn_k
24
--anchor_method
fps
--seed
42
--eval_only
False
--checkpoint
.gitignore 会忽略 Python 缓存、Jittor 编译缓存、虚拟环境、数据集大文件、checkpoint、日志和输出结果。.gitignore 只影响未跟踪文件;如果大文件已被 Git 跟踪,需要先执行:
git rm --cached path/to/file
再提交更新后的忽略规则。
PCT 模型思想来自 Point Cloud Transformer 相关工作;本仓库代码基于 Jittor API 自行实现和适配。数据集为 ModelNet40,请遵循数据集原始许可和比赛平台要求。
欢迎提交 issue 或 pull request 改进模型结构、训练策略、OpenI 适配和文档说明。提交前请确认:
本项目采用 MIT License 开源,详见 LICENSE 文件。
基于 Jittor 实现的 PCT 点云分类项目,支持 ModelNet40 数据集训练与预测,适配 OpenI 平台运行。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
jittor-pct-modelnet40
基于 Jittor 实现的 Point Cloud Transformer(PCT)点云分类项目,用于在 ModelNet40 数据集上完成三维点云物体分类训练与预测。本项目适配本地环境和 OpenI/C2Net 训练平台,包含数据读取、点云增强、局部邻域建模、Transformer 编码、训练调度、checkpoint 保存和测试集结果生成流程。
项目特点
fast采样以提高速度。--configJSON 配置文件,命令行参数优先级高于配置文件。config.json、command.txt、train.log,便于复现实验。目录结构
环境安装
推荐环境:
安装依赖:
OpenI 平台通常已在 Jittor GPU 镜像中预装 Jittor 和 C2Net SDK。如果本地没有 CUDA,脚本会自动切换到较小 CPU 调试配置,但训练速度和最终结果会明显低于 GPU。
数据准备
将预处理后的 ModelNet40 数据放到
data/目录:如果数据在其他路径,可通过
--data_dir或--data_root指定:.npy数据文件默认不会提交到 Git。更多说明见 data/README.md。训练
使用默认配置训练:
本地脚本:
OpenI 脚本:
如果训练时间紧,可以使用快速 anchor 采样:
如果希望冲击更高线上分数,可以适当增加训练轮数和测试投票次数:
评测与推理
当前脚本在训练结束后会自动加载最优 checkpoint,并对测试集生成预测文件:
使用已有 checkpoint 直接推理:
如果在 OpenI 平台运行,结果会保存到平台提供的 output 目录,并在训练任务结束时调用
upload_output()回传。CPU 小规模调试命令:
结果说明
训练日志中的
Train Acc表示训练集分类准确率。若设置--val_ratio大于 0,脚本会从训练集中划分验证集并输出Val Acc。线上最终成绩以平台根据result.json计算的测试集准确率为准。默认配置偏向单卡 A100 上的精度和速度平衡,并使用验证集准确率选择最优 checkpoint。由于随机种子、平台环境、Jittor/CUDA 版本、测试投票次数、验证集划分和是否使用 FPS anchor 等因素不同,本地复现结果可能与线上成绩存在小幅差异。若需要使用全部训练数据训练,可以设置
--val_ratio 0 --selection_metric train,但该模式下 checkpoint 选择会更依赖训练准确率,线上分数可能更不稳定。可复现记录
每次运行会在输出目录保存:
config.json:本次实际使用的参数。command.txt:启动命令。train.log:训练日志。pct_model.pkl:最终模型。pct_model_best.pkl:最优模型。pct_model_top*.pkl:用于集成预测的 checkpoint。result.json:测试集预测结果。这些文件默认被
.gitignore忽略。主要参数
--configNone--data_dir/--data_rootdata--output_diroutputs--n_points1024--batch_size48--epochs240--lr8e-4--vote_num12--val_ratio0.1--selection_metricautoauto优先用验证准确率选模型,无验证集时用训练准确率--stage1_points192--knn_k24--anchor_methodfpsfps精度更优,fast速度更快--seed42--eval_onlyFalse--checkpointNoneGit 忽略规则说明
.gitignore会忽略 Python 缓存、Jittor 编译缓存、虚拟环境、数据集大文件、checkpoint、日志和输出结果。.gitignore只影响未跟踪文件;如果大文件已被 Git 跟踪,需要先执行:再提交更新后的忽略规则。
第三方引用
PCT 模型思想来自 Point Cloud Transformer 相关工作;本仓库代码基于 Jittor API 自行实现和适配。数据集为 ModelNet40,请遵循数据集原始许可和比赛平台要求。
贡献
欢迎提交 issue 或 pull request 改进模型结构、训练策略、OpenI 适配和文档说明。提交前请确认:
许可证
本项目采用 MIT License 开源,详见 LICENSE 文件。