目录

PCT_jittor

本项目是图形学实验 PA3:Point Cloud Transformer 的 Jittor 实现,用于在 ModelNet40 点云数据集上完成三维形状分类任务。

模型输入为点云数据,输出为 ModelNet40 的 40 类分类 logits。最终生成的 result.json 已在头歌 Educoder Jittor-7 平台通过评测。

项目文件

  • pct.py:包含数据读取、模型定义、训练、验证、推理和结果导出流程。
  • pct_model.pkl:训练完成后保存的模型参数。
  • result.json:测试集预测结果文件,用于提交评测。
  • PA3_README.pdf:实验说明文档。

ModelNet40 的数据文件体积较大,未放入仓库。运行时请将数据放到 data/ 目录下。

数据目录格式如下:

data/
  train_points.npy
  train_labels.npy
  test_points.npy

环境要求

本项目基于 Jittor 框架实现。Jittor 支持 Linux 和 Windows/WSL,运行前需要准备:

  • Python
  • Jittor
  • NumPy
  • C++ 编译器,例如 g++clang

Jittor 安装教程:

https://cg.cs.tsinghua.edu.cn/jittor/download/

运行方式

训练模型并导出测试集预测结果:

python pct.py

使用已训练好的模型进行推理:

python pct.py --eval_only --model_path pct_model.pkl --result_path result.json

CPU 快速测试命令:

python pct.py --epochs 1 --batch_size 4 --n_points 128 --num_workers 0

常用参数说明:

  • --data_dir:数据集目录,默认为 ./data
  • --model:模型类型,可选 pctpointnetpointnet_stn
  • --n_points:每个样本采样的点数,默认为 1024
  • --batch_size:批大小,默认为 32
  • --epochs:训练轮数,默认为 200
  • --use_cuda:是否使用 CUDA,0 表示不使用,1 表示使用。
  • --model_path:模型参数保存或读取路径,默认为 pct_model.pkl
  • --result_path:预测结果保存路径,默认为 result.json

模型结构

PCT 模型接收形状为 (B, 3, N) 的点云输入,并输出 40 类分类结果。主要结构包括:

  • 两层逐点 Conv1d 特征嵌入;
  • 四个自注意力模块,用于建模点与点之间的全局关系;
  • 多层特征拼接与融合;
  • 全局最大池化;
  • 全连接分类头;
  • 交叉熵分类损失;
  • SGD 优化器和余弦退火学习率调度。

评测结果

最终提交的 result.json 已通过头歌 Educoder Jittor-7 平台评测。

评测分数:

0.8266

评测编号:

2026051510143346343746
关于

A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 classification

3.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802032778号