目录

PCT_jittor

基于 Jittor 框架的 Point Cloud Transformer(PCT)实现,用于 ModelNet40 三维点云分类任务。

项目简介

本项目基于 Jittor 深度学习框架实现了 Point Cloud Transformer(PCT) 模型。PCT 将 Transformer 的自注意力机制应用于三维点云数据,在 ModelNet40 分类基准上取得了优异的性能。

  • 论文: PCT: Point Cloud Transformer (Guo et al., 2021) — [arXiv]
  • 框架: Jittor
  • 任务: ModelNet40 三维形状分类(40 个类别)

模型架构

PCT 将 Transformer 架构扩展到不规则点云上,模型由以下部分组成:

  • 两层 Conv1d 进行输入嵌入(3 → 128 通道)
  • 四个堆叠的 Self-Attention(SA)层用于特征学习
  • 跨 SA 层的特征拼接(跳跃连接)
  • 全局最大池化聚合
  • 三层全连接网络进行分类(1024 → 512 → 256 → 40)

数据集

ModelNet40 数据集包含 12,311 个 CAD 模型,涵盖 40 个物体类别:

  • 训练集:9,843 个样本
  • 测试集:2,468 个样本
  • 每个样本表示为包含 2,048 个点的点云(x, y, z 坐标)

请将数据集放置于 data/ 目录下:

data/
├── train_points.npy    # 训练集点云坐标
├── train_labels.npy    # 训练集标签
└── test_points.npy     # 测试集点云坐标(无标签)

数据下载链接:ModelNet40 数据集(请自行下载并放置于 data/ 目录)

环境配置

pip install jittor

依赖项:

  • Python >= 3.7
  • Jittor
  • NumPy

使用方法

训练模型

python pct.py --data_dir ./data --n_points 1024 --batch_size 32 --epochs 200 --lr 0.01

参数说明

参数 默认值 说明
--data_dir ./data 数据集路径
--n_points 1024 输入点云采样点数
--batch_size 32 批次大小
--epochs 200 训练轮数
--lr 0.01 初始学习率
--seed 42 随机种子

输出文件

  • pct_model.pkl — 训练好的模型权重
  • result.json — 测试集预测结果(样本编号 → 预测类别)

实验结果

指标 数值
总体准确率 详见 result.json
模型参数量 ~2.9M

项目结构

PCT_jittor/
├── pct.py             # 主程序(数据集、模型、训练、推理)
├── result.json        # 测试集预测结果
├── README.md          # 项目说明文档
├── .gitignore         # Git 忽略规则
└── report.md          # 实验报告

许可证

本项目为课程作业,仅供学习使用。

参考文献

关于

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

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

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