merge: integrate Gitlink initial commit
基于 Jittor 实现的 Point Cloud Transformer(PCT)点云分类项目,用于 ModelNet40 三维形状分类任务。本项目包含点云数据读取、训练数据增强、PCT 分类网络、训练流程、模型保存和测试集预测结果导出。
本项目是图形学实验 PA3 的代码实现,目标是在 ModelNet40 点云数据集上训练一个 PCT 分类模型。模型输入为三维点云坐标,输出 40 个类别的分类 logits,并在测试集上生成 result.json 预测文件。
result.json
项目使用的主要框架和工具:
. ├── pct.py # PCT 模型、数据集、训练和预测主程序 ├── README.md # 项目说明文件 ├── .gitignore # Git 忽略规则 ├── docs/ # 作业说明与报告相关文档 └── data/ # 数据集目录,本地使用,不建议提交到开源仓库
数据目录在本地应包含:
data/ ├── train_points.npy ├── train_labels.npy ├── test_points.npy └── categories.txt
建议在 WSL 中使用 conda 环境运行。本项目本地测试环境为:
jittor
进入环境:
conda activate jittor
如果从 Windows PowerShell 调用 WSL,可使用:
wsl bash -lc 'source /root/miniconda3/etc/profile.d/conda.sh && conda activate jittor && cd "/mnt/d/Users/25931/University/大二下/计图/作业/PA3" && python pct.py --help'
使用 smoke 模式可以快速检查数据读取、前向传播、训练、模型保存和预测导出流程:
python pct.py --smoke --no_cuda --model_path smoke_pct_model.pkl --output smoke_result.json
该命令会使用少量样本进行 1 个 epoch 的快速测试,并生成:
smoke_pct_model.pkl
smoke_result.json
默认训练命令:
python pct.py
默认配置:
1024
32
200
0.01
sgd
pct_model.pkl
训练完成后,脚本会自动保存模型并在测试集上生成预测文件。
python pct.py \ --data_dir ./data \ --n_points 1024 \ --batch_size 32 \ --epochs 200 \ --lr 0.01 \ --optimizer sgd \ --model_path pct_model.pkl \ --output result.json
参数说明:
--data_dir
./data
--n_points
--batch_size
--epochs
--lr
--optimizer
adam
--model_path
--output
--no_cuda
--smoke
当前 PCT 模型输入为 (B, 3, N) 的点云数据,整体结构如下:
(B, 3, N)
输入点云 -> Conv1d(3, 128) + BatchNorm + ReLU -> Conv1d(128, 128) + BatchNorm + ReLU -> SA_Layer × 4 -> 拼接四个注意力层输出,得到 512 通道特征 -> Conv1d(512, 1024) + BatchNorm + LeakyReLU -> 点维度最大池化,得到 1024 维全局特征 -> Linear(1024, 512) + BatchNorm + ReLU + Dropout -> Linear(512, 256) + BatchNorm + ReLU + Dropout -> Linear(256, 40)
其中 SA_Layer 使用 Query、Key、Value 计算点与点之间的自注意力关系,并通过残差连接增强全局几何特征建模能力。
SA_Layer
正式训练完成后会生成:
{样本编号: 预测类别}
这些文件属于训练产物,不建议提交到 Gitlink 开源仓库。提交课程作业时可按课程要求单独打包。
建议在 Gitlink 中使用以下项目信息:
PCT-Jittor-ModelNet40
基于 Jittor 实现的 Point Cloud Transformer(PCT)点云分类项目,用于 ModelNet40 三维形状分类任务。
开源仓库建议包含:
pct.py
README.md
.gitignore
docs/
不建议提交:
data/
*.npy
*.pkl
result.zip
__pycache__/
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
PCT-Jittor-ModelNet40
基于 Jittor 实现的 Point Cloud Transformer(PCT)点云分类项目,用于 ModelNet40 三维形状分类任务。本项目包含点云数据读取、训练数据增强、PCT 分类网络、训练流程、模型保存和测试集预测结果导出。
项目简介
本项目是图形学实验 PA3 的代码实现,目标是在 ModelNet40 点云数据集上训练一个 PCT 分类模型。模型输入为三维点云坐标,输出 40 个类别的分类 logits,并在测试集上生成
result.json预测文件。项目使用的主要框架和工具:
项目特点
目录结构
数据目录在本地应包含:
环境要求
建议在 WSL 中使用 conda 环境运行。本项目本地测试环境为:
jittor进入环境:
如果从 Windows PowerShell 调用 WSL,可使用:
快速测试
使用 smoke 模式可以快速检查数据读取、前向传播、训练、模型保存和预测导出流程:
该命令会使用少量样本进行 1 个 epoch 的快速测试,并生成:
smoke_pct_model.pklsmoke_result.json正式训练与预测
默认训练命令:
默认配置:
1024322000.01sgdpct_model.pklresult.json训练完成后,脚本会自动保存模型并在测试集上生成预测文件。
常用参数
参数说明:
--data_dir:数据集目录,默认./data--n_points:每个点云样本采样点数,默认1024--batch_size:批大小,默认32--epochs:训练轮数,默认200--lr:学习率,默认0.01--optimizer:优化器,可选sgd或adam,默认sgd--model_path:模型保存路径,默认pct_model.pkl--output:预测结果保存路径,默认result.json--no_cuda:使用 CPU 运行,适合快速调试--smoke:快速流程测试模式模型结构
当前 PCT 模型输入为
(B, 3, N)的点云数据,整体结构如下:其中
SA_Layer使用 Query、Key、Value 计算点与点之间的自注意力关系,并通过残差连接增强全局几何特征建模能力。输出文件
正式训练完成后会生成:
pct_model.pkl:训练得到的 Jittor 模型文件result.json:测试集预测结果,格式为{样本编号: 预测类别}这些文件属于训练产物,不建议提交到 Gitlink 开源仓库。提交课程作业时可按课程要求单独打包。
Gitlink 开源说明
建议在 Gitlink 中使用以下项目信息:
PCT-Jittor-ModelNet40基于 Jittor 实现的 Point Cloud Transformer(PCT)点云分类项目,用于 ModelNet40 三维形状分类任务。开源仓库建议包含:
pct.pyREADME.md.gitignoredocs/中的作业说明或报告文档不建议提交:
data/*.npy*.pklresult.jsonresult.zip__pycache__/参考