目录

sixth_jittor_comp_track2_warmup

PCT — ModelNet40 点云分类

第六届计图人工智能挑战赛 · 赛道二热身赛。基于 Jittor 框架实现 Point Cloud Transformer (PCT),在 ModelNet40 数据集上完成 40 类三维形状分类。

评测标准:测试集准确率 ≥ 80% 即为通过。

环境

pip install jittor numpy

数据

数据集参考赛事官方网页https://www.educoder.net/competitions/Jittor-7 将数据集解压至 ./data/ 目录:

data/
  train_points.npy    # 训练集点云 (9843, 2048, 3)
  train_labels.npy    # 训练集标签 (9843,)
  test_points.npy     # 测试集点云 (2468, 2048, 3)
  categories.txt      # 40 个类别名称

训练

# 从头训练
python pct.py

# 自定义参数
python pct.py --epochs 250 --batch_size 32 --lr 0.01

# 不开增强(调试用)
python pct.py --no_augment

脚本会自动检测 pct_model.pkl,如果存在则加载权重继续训练。如果 checkpoints/ 下有训练状态,则连 scheduler 状态一起恢复。

参数说明

参数 默认值 说明
--epochs 250 训练轮数
--batch_size 32 批次大小
--lr 0.01 初始学习率
--n_points 1024 每样本采样点数
--seed 42 随机种子
--label_smoothing 0.0 label smoothing 比例
--no_augment False 禁用数据增强(调试用)
--checkpoint_dir ./checkpoints checkpoint 存放目录
--save_interval 10 每隔 N 个 epoch 保存一次 checkpoint

输出

文件 说明
result.json 测试集预测结果,提交用
pct_model.pkl 训练完成后的模型权重
checkpoints/latest_model.pkl 最新 checkpoint(自动恢复用)
checkpoints/best_model.pkl 训练过程中准确率最高的模型
checkpoints/model_epoch_N.pkl 第 N 轮快照
checkpoints/checkpoint_meta.json epoch、scheduler 状态等元信息

模型

组件 配置
输入 (B, 3, 1024) 采样点云
嵌入 Conv1d(3→128) × 2 + BN + ReLU
Self-Attention 4 层 Offset-Attention,每层 128 通道
特征融合 Concat 4 层输出 → Conv1d(512→1024)
全局池化 Max Pooling
分类头 FC(1024→512→256→40) + Dropout(0.5)
参数总量 ~1.37M

训练配置

项目 配置
优化器 SGD, lr=0.01, momentum=0.9, weight_decay=1e-4
学习率 Cosine Annealing, 0.01 → 1e-5
损失函数 Cross Entropy (无 label smoothing)
数据增强 绕 Y/Z 轴随机旋转、各向同性缩放(x0.8-1.25)、抖动(σ=0.01)

提交

result.json 打包为 result.zip 提交:

result.zip
└── result.json

result.json 格式:

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

key 为测试集样本编号(字符串,”0” 到 “2467”),value 为预测类别(整数,0-39)。

关于

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

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

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