merge: 合并远程初始文件,保留本地 README
计图挑战热身赛二 — 基于 Jittor 框架的 PCT (Point Cloud Transformer) 点云分类模型,用于 ModelNet40 三维形状分类任务。 战队:单兵混子大队
计图挑战热身赛二 — 基于 Jittor 框架的 PCT (Point Cloud Transformer) 点云分类模型,用于 ModelNet40 三维形状分类任务。
战队:单兵混子大队
# 安装依赖 pip install -r requirements.txt
Jittor 1.3.x 与 cuDNN 9 存在兼容性问题。
本代码提供 双路径 支持,优先级为:**正常路径 (cuDNN) > 特判路径 (conv_opt=1)**:
PCT_USE_CUDNN=1
conv_opt=1
PCT_USE_CUDNN=0
# 自动模式 (默认, 优先 cuDNN) python pct.py # 强制使用 cuDNN 正常路径 PCT_USE_CUDNN=1 python pct.py # 强制使用特判路径 (cuDNN 9 环境推荐) PCT_USE_CUDNN=0 python pct.py
data/ ├── train_points.npy # 训练集点云 (9843, 2048, 3) ├── train_labels.npy # 训练集标签 (9843,) ├── test_points.npy # 测试集点云 (2468, 2048, 3) └── categories.txt # 类别名称 (40 行)
数据来自 ModelNet40 数据集,已预处理为 2048 点 npy 格式。
原始数据集: ModelNet
将数据文件放入 data/ 目录即可,无需额外配置路径。
data/
# 默认配置训练 (300 epochs, batch_size=32, lr=0.01) python pct.py # cuDNN 9 环境 (强制特判路径) PCT_USE_CUDNN=0 python pct.py # 指定自定义 nvcc 路径 PCT_USE_CUDA=1 cuda_archs=89 nvcc_path=/path/to/nvcc python pct.py
在 pct.py 的 main() 函数中可调整以下关键参数:
pct.py
main()
n_points
batch_size
epochs
lr
seed
np.random.seed
jt.set_global_seed
可复现性:代码中通过 seed=42 统一固定 numpy 和 Jittor 的随机种子,确保训练结果可复现。
seed=42
pct_model.pkl
result.json
训练完成后会自动对测试集进行推理,生成 result.json。
# 完整训练 + 推理(一条命令) python pct.py
{ "0": 15, "1": 7, "2": 32, ... }
np.random.seed(seed)
jt.set_global_seed(seed)
PCT (Point Cloud Transformer) ├── Embedding: Conv1d(3→128) × 2 + BN + ReLU ├── Self-Attention: SA_Layer × 4 (concat skip connections) ├── Fusion: Conv1d(512→1024) + BN + LeakyReLU ├── Global Pooling: MaxPool ├── Classifier: FC(1024→512→256→256) + Dropout └── Residual Block: 3-layer residual refinement
├── README.md # 本文档 ├── LICENSE # MIT License ├── .gitignore # Git 忽略规则 ├── requirements.txt # Python 依赖 ├── pct.py # 主训练/推理脚本 └── data/ └── README.md # 数据说明
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
jittor-单兵混子大队-计图挑战热身赛二
1. 环境安装
⚠️ cuDNN 9 兼容性说明
Jittor 1.3.x 与 cuDNN 9 存在兼容性问题。
本代码提供 双路径 支持,优先级为:**正常路径 (cuDNN) > 特判路径 (conv_opt=1)**:
PCT_USE_CUDNN=1conv_opt=1)PCT_USE_CUDNN=0或自动回退2. 数据准备
数据目录结构
数据来源
数据来自 ModelNet40 数据集,已预处理为 2048 点 npy 格式。
原始数据集: ModelNet
将数据文件放入
data/目录即可,无需额外配置路径。3. 训练
可调参数
在
pct.py的main()函数中可调整以下关键参数:n_pointsbatch_sizeepochslrseednp.random.seed和jt.set_global_seed)训练产物
pct_model.pkl: 训练好的模型权重result.json: 测试集预测结果4. 评测 / 推理
训练完成后会自动对测试集进行推理,生成
result.json。输出格式
5. 结果说明
评估指标
预期结果
与线上提交的差异
seed=42并统一设置np.random.seed(seed)和jt.set_global_seed(seed),最大程度保证可复现性conv_opt=1),卷积实现不同但精度一致6. 模型架构
7. 项目结构
8. 引用