目录

jittor-ModelNet40

计图挑战赛赛道二热身赛 ModelNet40 点云分类方案。项目使用 Jittor 实现 PCT (Point Cloud Transformer) 模型,并通过 5 折训练集成生成测试集提交文件。

当前线上提交得分:0.8002

项目结构

.
├── configs/                  # 训练/推理配置示例
├── data/                     # 本地数据目录,只提交数据说明和类别文件
├── outputs/                  # 运行日志、命令和配置快照,默认不提交
├── scripts/                  # 运行脚本
├── tools/                    # 辅助工具说明
├── pct.py                    # 核心模型、训练、验证和预测实现
├── requirements.txt          # Python 依赖
├── LICENSE
└── NOTICE

环境安装

推荐环境:

  • Python 3.8+
  • CUDA GPU 环境
  • Jittor

安装依赖:

pip install -r requirements.txt

如需使用虚拟环境:

python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
# Linux / macOS
source .venv/bin/activate
pip install -r requirements.txt

数据准备

从比赛页面下载预处理后的 ModelNet40 数据,并放置为以下结构:

data/
├── categories.txt
├── train_points.npy   # shape: (9843, 2048, 3)
├── train_labels.npy   # shape: (9843,)
└── test_points.npy    # shape: (2468, 2048, 3)

数据根目录通过 --data_dir 指定,默认是 ./data.npy 数据文件体积较大, 不应随开源仓库提交;data/README.md 中也列出了同样的路径要求。

训练

使用配置文件运行完整 5 折训练与测试集预测:

python scripts/train.py --config configs/pct_modelnet40.json

等价的直接运行命令:

python pct.py --data_dir ./data --n_points 512 --batch_size 32 --epochs 80 --lr 0.001 --seed 42 --folds 5 --patience 12 --label_smoothing 0.1

scripts/train.py 会在 outputs/ 下保存本次运行的配置快照、命令和训练日志。 需要临时覆盖参数时,可把额外参数放在 -- 之后:

python scripts/train.py --config configs/pct_modelnet40.json -- --epochs 5 --batch_size 16

训练过程中会生成 pct_fold_1.pklpct_fold_5.pkl,并在训练结束后生成 result.json

评测 / 推理

测试集没有公开标签,因此本地评测以训练过程中的 5 折验证准确率为准。若已存在 5 个 fold checkpoint,可直接生成测试集预测:

python scripts/infer.py --config configs/pct_modelnet40.json --output result.json

也可以显式指定 checkpoint:

python scripts/infer.py --config configs/pct_modelnet40.json --checkpoints pct_fold_1.pkl pct_fold_2.pkl pct_fold_3.pkl pct_fold_4.pkl pct_fold_5.pkl --output result.json

打包提交文件:

python scripts/package_result.py --input result.json --output result.zip

提交压缩包结构:

result.zip
└── result.json

result.json 格式为:

{
  "0": 4,
  "1": 35,
  "2": 10
}

key 为测试集样本编号字符串,value 为类别编号整数。

结果说明

  • 线上指标:测试集分类准确率。
  • 本方案:PCT 模型,5 折训练,测试集 logits 集成后取 argmax
  • 已提交线上得分:0.8002

本地 5 折验证准确率会受到随机种子、Jittor/CUDA 版本、GPU 算子确定性等影响,与线上隐藏测试集得分可能存在小幅差异。

可复现说明

  • 默认随机种子为 42,可通过 --seed 或配置文件字段调整。
  • 关键超参数见 configs/pct_modelnet40.json
  • 运行脚本会保存 config.jsoncommand.txttrain.logoutputs/
  • 数据文件、模型权重、日志、提交结果等产物已加入 .gitignore,开源提交前请确认未提交大文件或训练中间产物。

第三方引用

本项目使用 Jittor 深度学习框架,并参考 PCT 点云分类模型结构。相关说明见NOTICE

关于

第六届计图人工智能挑战赛-热身赛

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

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