fix: added link
A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 classification.
本项目是图形学实验 PA3 的点云分类实现,基于 Jittor 深度学习框架,在 ModelNet40 数据集上训练 Point Cloud Transformer,并生成测试集预测文件 result.json。
result.json
. ├── pct.py # 主程序:数据读取、模型定义、训练和预测 ├── README.md # 项目说明 └── .gitignore # Git 忽略规则
数据集、模型权重和预测结果文件体积较大或由程序生成,默认不纳入 Git 仓库。运行时请将数据放在 data/ 目录下。
data/
g++
安装依赖:
pip install jittor numpy
检查 GPU:
nvidia-smi
本实验使用预处理后的 ModelNet40 点云数据。目录结构如下:
data/ ├── train_points.npy ├── train_labels.npy ├── test_points.npy └── categories.txt
其中:
train_points.npy
(N, 2048, 3)
train_labels.npy
test_points.npy
categories.txt
数据集下载链接:https://cloud.tsinghua.edu.cn/d/53154af941ba49ba99f1/
GPU 环境下推荐使用 PCT 模型训练:
python pct.py \ --model pct \ --data_dir ./data \ --optimizer adam \ --lr 0.001 \ --epochs 200 \ --n_points 1024 \ --batch_size 16 \ --test_votes 5 \ --use_cuda
训练完成后,程序会保存模型文件并生成预测文件:
pct_model.pkl result.json
可以从已有模型继续微调:
python pct.py \ --model pct \ --data_dir ./data \ --optimizer adam \ --lr 0.0002 \ --epochs 80 \ --n_points 1024 \ --batch_size 16 \ --test_votes 7 \ --use_cuda \ --resume pct_model.pkl \ --save_path pct_adam_ft.pkl \ --result_path result.json
如果已经有训练好的模型,可以只生成测试集预测结果:
python pct.py \ --model pct \ --data_dir ./data \ --resume pct_model.pkl \ --eval_only \ --n_points 1024 \ --batch_size 16 \ --test_votes 7 \ --use_cuda \ --result_path result.json
PCT 的自注意力模块需要构造 N x N 注意力矩阵,在 CPU 上训练较慢。本项目也保留了一个轻量 PointNet 分类器,便于调试代码流程:
N x N
python pct.py \ --model pointnet \ --data_dir ./data \ --optimizer adam \ --lr 0.001 \ --epochs 120 \ --n_points 1024 \ --batch_size 16
注意:最终提交使用的是 PCT 模型结果。
--model
pct
pointnet
--data_dir
--n_points
--batch_size
--epochs
--optimizer
adam
sgd
--lr
--test_votes
--use_cuda
--resume
--eval_only
--save_path
--result_path
输出文件 result.json 为字典格式,键为测试样本编号,值为预测类别编号:
{ "0": 12, "1": 4, "2": 33 }
该文件可直接提交到课程评测平台进行 Accuracy 评测。
A Jittor implementation of Point Cloud Transformer for ModelNet40 classification
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
PCT_jittor
A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 classification.
本项目是图形学实验 PA3 的点云分类实现,基于 Jittor 深度学习框架,在 ModelNet40 数据集上训练 Point Cloud Transformer,并生成测试集预测文件
result.json。Features
Project Structure
数据集、模型权重和预测结果文件体积较大或由程序生成,默认不纳入 Git 仓库。运行时请将数据放在
data/目录下。Requirements
g++安装依赖:
检查 GPU:
Dataset
本实验使用预处理后的 ModelNet40 点云数据。目录结构如下:
其中:
train_points.npy:训练集点云,形状为(N, 2048, 3);train_labels.npy:训练集类别标签;test_points.npy:测试集点云,无标签;categories.txt:类别名称列表。数据集下载链接:https://cloud.tsinghua.edu.cn/d/53154af941ba49ba99f1/
Usage
Train PCT
GPU 环境下推荐使用 PCT 模型训练:
训练完成后,程序会保存模型文件并生成预测文件:
Fine-tune
可以从已有模型继续微调:
Evaluation-only Prediction
如果已经有训练好的模型,可以只生成测试集预测结果:
CPU-friendly Option
PCT 的自注意力模块需要构造
N x N注意力矩阵,在 CPU 上训练较慢。本项目也保留了一个轻量 PointNet 分类器,便于调试代码流程:注意:最终提交使用的是 PCT 模型结果。
Main Arguments
--modelpct或pointnet--data_dir--n_points--batch_size--epochs--optimizeradam或sgd--lr--test_votes--use_cuda--resume--eval_only--save_path--result_pathResult Format
输出文件
result.json为字典格式,键为测试样本编号,值为预测类别编号:该文件可直接提交到课程评测平台进行 Accuracy 评测。