refactor: change project format
A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 classification.
本项目是基于 Jittor 框架实现的 Point Cloud Transformer (PCT) 点云分类 baseline,用于 ModelNet40 三维形状分类任务。仓库按照计图比赛开源规范组织,包含配置文件、核心代码、运行脚本、数据说明和可复现输出约定。
安装依赖:
pip install -r requirements.txt
如需 GPU 训练,请先确认 CUDA 环境可被 Jittor 正确识别。Jittor 安装说明可参考官方文档:https://cg.cs.tsinghua.edu.cn/jittor/download/
本项目默认读取预处理后的 NumPy 点云文件。请在仓库根目录创建 data/,并放入:
data/
data/ ├── train_points.npy ├── train_labels.npy └── test_points.npy
文件说明:
train_points.npy
(N, 2048, 3)
train_labels.npy
(N,)
test_points.npy
数据根目录通过配置文件字段 data_dir 设置,也可以用命令行参数覆盖:
data_dir
python src/pct.py --config configs/default.json --data_dir ./data
使用默认配置训练:
python src/pct.py --config configs/default.json --mode train
覆盖部分配置示例:
python src/pct.py \ --config configs/default.json \ --mode train \ --data_dir ./data \ --output_dir ./outputs \ --epochs 200 \ --batch_size 32 \ --lr 0.01 \ --seed 42
也可以使用脚本:
bash scripts/train.sh
训练会在 outputs/ 中保存模型并自动生成一次测试集预测结果。单独推理可执行:
outputs/
python src/pct.py \ --config configs/default.json \ --mode infer \ --ckpt outputs/pct_model.pkl \ --result_file outputs/result.json
bash scripts/infer.sh
训练日志会输出训练集分类准确率:
Train Acc = 正确分类样本数 / 训练样本总数 * 100%
推理结果保存为 outputs/result.json,格式为:
outputs/result.json
{ "0": 12, "1": 3 }
其中 key 为测试样本编号,value 为预测类别编号。
项目提供 --seed 参数,并在代码中统一设置 NumPy 与 Jittor 随机种子。每次运行会在 output_dir 中保存:
--seed
output_dir
config.json
command.txt
train.log
pct_model.pkl
result.json
命令行参数优先级高于 configs/default.json。
configs/default.json
PCT_jittor/ ├── configs/ │ └── default.json ├── data/ │ └── README.md ├── scripts/ │ ├── train.sh │ └── infer.sh ├── src/ │ └── pct.py ├── tools/ │ └── README.md ├── .gitignore ├── LICENSE ├── README.md └── requirements.txt
src/pct.py 中主要包含:
src/pct.py
ModelNet40Dataset
SA_Layer
PCT
CosineAnnealingLR
train_one_epoch
predict
本项目代码用于课程作业与 Jittor 点云分类实验学习。PCT 模型思路来源于 Point Cloud Transformer 相关工作,主体代码框架来源于清华大学计算机图形学基础课程。
A Jittor implementation of Point Cloud Transformer(PCT) for ModelNet40 classification
PCT_jittor
A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 classification.
本项目是基于 Jittor 框架实现的 Point Cloud Transformer (PCT) 点云分类 baseline,用于 ModelNet40 三维形状分类任务。仓库按照计图比赛开源规范组织,包含配置文件、核心代码、运行脚本、数据说明和可复现输出约定。
环境安装
安装依赖:
如需 GPU 训练,请先确认 CUDA 环境可被 Jittor 正确识别。Jittor 安装说明可参考官方文档:https://cg.cs.tsinghua.edu.cn/jittor/download/
数据准备
本项目默认读取预处理后的 NumPy 点云文件。请在仓库根目录创建
data/,并放入:文件说明:
train_points.npy(N, 2048, 3)train_labels.npy(N,)test_points.npy(N, 2048, 3)数据根目录通过配置文件字段
data_dir设置,也可以用命令行参数覆盖:训练
使用默认配置训练:
覆盖部分配置示例:
也可以使用脚本:
评测/推理
训练会在
outputs/中保存模型并自动生成一次测试集预测结果。单独推理可执行:也可以使用脚本:
结果说明
训练日志会输出训练集分类准确率:
推理结果保存为
outputs/result.json,格式为:其中 key 为测试样本编号,value 为预测类别编号。
可复现设置
项目提供
--seed参数,并在代码中统一设置 NumPy 与 Jittor 随机种子。每次运行会在output_dir中保存:config.json:实际使用的配置command.txt:实际运行命令train.log:训练日志,仅训练模式生成pct_model.pkl:模型权重,仅训练模式生成result.json:测试集预测结果命令行参数优先级高于
configs/default.json。项目结构
代码说明
src/pct.py中主要包含:ModelNet40Dataset:读取 ModelNet40 点云数据,支持训练数据增强SA_Layer:PCT self-attention 层PCT:点云分类模型主体CosineAnnealingLR:余弦退火学习率调度器train_one_epoch:单轮训练逻辑predict:测试集推理并导出预测结果第三方引用与声明
本项目代码用于课程作业与 Jittor 点云分类实验学习。PCT 模型思路来源于 Point Cloud Transformer 相关工作,主体代码框架来源于清华大学计算机图形学基础课程。