feat: PCT ModelNet40 分类(Jittor 热身赛)
计图挑战赛(赛道二热身赛)参赛代码:基于 Jittor 框架的 PCT(Point Cloud Transformer)模型,完成 ModelNet40 数据集 40 类三维点云分类。
默认配置(configs/pct.yaml,seed=42)训练 200 epochs,在 10% 留出验证集上 **Best Val Acc = 92.58%**,远超线上 0.80 的通过线。
configs/pct.yaml
. ├── configs/ # 训练/推理配置(yaml) │ └── pct.yaml ├── src/ # 核心代码 │ ├── dataset.py # ModelNet40 数据集加载与增强 │ ├── model.py # PCT 模型定义 │ ├── engine.py # 训练/评测/推理核心循环 │ └── utils.py # 种子、日志、配置、调度器、损失 ├── scripts/ # 运行入口 │ ├── train.py # 训练(训练完成后自动生成提交结果) │ └── predict.py # 推理(加载已有权重生成提交结果) ├── data/ # 数据目录(仅含说明,数据文件不提交) ├── outputs/ # 日志/权重/结果(不提交) └── docs/ # 赛题说明与开源规范
conda create -n jittor python=3.7 -y conda activate jittor pip install -r requirements.txt
GPU 训练需要 CUDA 环境,Jittor 可自动安装 CUDA 依赖(可选):
python -m jittor_utils.install_cuda
验证安装:python -c "import jittor as jt; print(jt.has_cuda)"。更多安装方式见 Jittor 官方文档。
python -c "import jittor as jt; print(jt.has_cuda)"
从比赛页面下载数据集压缩包,解压到仓库根目录的 data/ 文件夹:
data/
data/ ├── train_points.npy # (9843, 2048, 3) 训练集点云 ├── train_labels.npy # (9843,) 训练集标签(0-39) ├── test_points.npy # (2468, 2048, 3) 测试集点云(无标签) └── categories.txt # 40 个类别名称
若解压产生 data/data/ 嵌套目录,代码会自动识别。数据根目录通过 configs/pct.yaml 的 data_dir 字段或命令行 --data_dir 配置(命令行优先级更高)。详见 data/README.md。
data/data/
data_dir
--data_dir
python scripts/train.py --config configs/pct.yaml
单张消费级 GPU 约 2 小时(200 epochs,每 epoch 约 35 s;首个 epoch 因 Jittor 即时编译较慢)。命令行参数可覆盖配置文件,例如快速试跑:
python scripts/train.py --config configs/pct.yaml --epochs 1 --n_votes 1 --exp_name debug
每次运行的产物保存在 outputs/<exp_name>/ 下:
outputs/<exp_name>/
config.yaml
command.txt
train.log
pct_best.pkl
pct_model.pkl
result.json
result.zip
使用训练好的权重单独生成提交结果:
python scripts/predict.py --config configs/pct.yaml --ckpt outputs/pct/pct_best.pkl
结果(result.json / result.zip)与推理日志(eval.log)默认输出到 ckpt 同目录,可用 --out_dir 修改。result.json 为 {"样本编号": 预测类别} 格式的字典(编号为字符串,类别为 0-39 整数),result.zip 可直接在比赛页面提交。
eval.log
--out_dir
{"样本编号": 预测类别}
--seed
MIT
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
ModelNet40 点云分类(Jittor / PCT)
计图挑战赛(赛道二热身赛)参赛代码:基于 Jittor 框架的 PCT(Point Cloud Transformer)模型,完成 ModelNet40 数据集 40 类三维点云分类。
默认配置(
configs/pct.yaml,seed=42)训练 200 epochs,在 10% 留出验证集上 **Best Val Acc = 92.58%**,远超线上 0.80 的通过线。目录结构
1. 环境安装
GPU 训练需要 CUDA 环境,Jittor 可自动安装 CUDA 依赖(可选):
验证安装:
python -c "import jittor as jt; print(jt.has_cuda)"。更多安装方式见 Jittor 官方文档。2. 数据准备
从比赛页面下载数据集压缩包,解压到仓库根目录的
data/文件夹:若解压产生
data/data/嵌套目录,代码会自动识别。数据根目录通过configs/pct.yaml的data_dir字段或命令行--data_dir配置(命令行优先级更高)。详见 data/README.md。3. 训练
单张消费级 GPU 约 2 小时(200 epochs,每 epoch 约 35 s;首个 epoch 因 Jittor 即时编译较慢)。命令行参数可覆盖配置文件,例如快速试跑:
每次运行的产物保存在
outputs/<exp_name>/下:config.yaml/command.txttrain.logpct_best.pkl/pct_model.pklresult.json/result.zipresult.zip可直接提交)4. 评测 / 推理
使用训练好的权重单独生成提交结果:
结果(
result.json/result.zip)与推理日志(eval.log)默认输出到 ckpt 同目录,可用--out_dir修改。result.json为{"样本编号": 预测类别}格式的字典(编号为字符串,类别为 0-39 整数),result.zip可直接在比赛页面提交。5. 结果说明
result.json与测试集真实标签对比计算,Accuracy ≥ 0.80 即通过。6. 方法说明(相对官方 baseline 的主要改动)
7. 可复现性
--seed(默认 42)统一设置 numpy 与 jittorconfig.yaml)、运行命令(command.txt)与日志(train.log/eval.log)落盘到输出目录8. 第三方代码与数据声明
License
MIT