Update README.md
基于 Jittor 框架的 Point Cloud Transformer (PCT) 实现,用于 ModelNet40 三维形状分类任务。
. ├─ pct.py # 完整的训练 + 推理脚本 ├─ data/ │ ├─ train_points.npy # 训练集点云 (N, 2048, 3) │ ├─ train_labels.npy # 训练集标签 (N,) │ ├─ test_points.npy # 测试集点云 (N, 2048, 3) │ └─ categories.txt # 40 个类别名(可选) ├─ dockerfile # CUDA 12.2 + Python 3.8 Docker 镜像 ├─ start.sh # Docker 容器启动脚本 ├─ pct_model.pkl # 训练后的模型参数(自动生成) ├─ result.json # 测试集预测结果(自动生成) └─ README.md # 本文档
pip install jittor numpy
编辑 pct.py 第 283 行:
pct.py
jt.flags.use_cuda = 0 # 改为 0 使用 CPU
python pct.py
使用默认参数训练 250 epochs,输出 result.json。
result.json
python pct.py \ --data_dir ./data \ # 数据集路径 --n_points 1024 \ # 每样本点数采样 --batch_size 64 \ # 批大小 --epochs 250 \ # 训练轮数 --lr 0.001 \ # 初始学习率 --seed 42 # 随机种子
--data_dir
./data
--n_points
1024
--batch_size
64
--epochs
250
--lr
0.001
--seed
42
训练完成后生成:
pct_model.pkl
model.load()
{"样本id": 预测类别, ...}
示例:
{ "0": 5, "1": 12, "2": 8, ... }
在 ModelNet40Dataset.__getitem__() 中实现,训练时自动应用,包括:
ModelNet40Dataset.__getitem__()
测试集不使用数据增强。
输入: (B, 3, 1024) 点云坐标 ↓ Conv1d (3 → 128) + ReLU + BatchNorm Conv1d (128 → 128) + ReLU + BatchNorm ↓ 4 × Self-Attention Layer (128 channels) ↓ Concat (128×4 → 512) + Conv1d (512 → 1024) + LeakyReLU ↓ Global Max Pooling → (B, 1024) ↓ FC (1024 → 512) + ReLU + Dropout FC (512 → 256) + ReLU + Dropout FC (256 → 40) [Logits] ↓ 输出: (B, 40) 类别 logits
模型参数量约为几百万,具体数值训练时输出。
docker build -t my-jittor-cuda:12.2 -f dockerfile .
bash start.sh
或手动运行:
docker run -it --rm --gpus all \ -v /path/to/PA3:/workspace \ -v /path/to/jittor_cache:/root/.cache/jittor \ my-jittor-cuda:12.2 bash
一个使用Jittor实现的用于分类ModelNet40的PCT(Point Cloud Transformer)网络
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
Jittor-PCT (Jittor)
基于 Jittor 框架的 Point Cloud Transformer (PCT) 实现,用于 ModelNet40 三维形状分类任务。
功能特性
项目结构
环境要求
安装依赖
如不使用 GPU
编辑
pct.py第 283 行:使用方法
基础用法
使用默认参数训练 250 epochs,输出
result.json。自定义参数
参数说明
--data_dir./data--n_points1024--batch_size64--epochs250--lr0.001--seed42输出文件
训练完成后生成:
pct_model.pkl**:模型参数文件,可用model.load()加载result.json**:格式为{"样本id": 预测类别, ...},共 40 个类别(0-39)示例:
数据增强
在
ModelNet40Dataset.__getitem__()中实现,训练时自动应用,包括:测试集不使用数据增强。
模型架构
模型参数量约为几百万,具体数值训练时输出。
Docker 支持(可选)
构建镜像
运行容器
或手动运行: