目录

PCT_jittor

PCT (Point Cloud Transformer) for ModelNet40 Classification

基于 Jittor 框架实现的 Point Cloud Transformer (PCT) 模型,用于 ModelNet40 数据集的点云分类任务。

简介

本项目是 PCT (Point Cloud Transformer) 的 Jittor 实现,用于三维点云分类。模型利用自注意力机制捕获点云中的全局上下文信息,在 ModelNet40 数据集上实现高精度分类。

模型架构

  • Self-Attention Layer: 捕获点云中的长距离依赖关系
  • 4层 SA Layer: 逐层提取特征
  • 特征融合: 拼接多层特征后通过卷积层融合
  • 分类头: 3层全连接网络,带 Dropout 正则化

模型参数

  • 参数量: ~2.1M
  • 输入点数: 1024
  • 输出类别: 40

数据集

使用 ModelNet40 数据集,需要预先处理为 .npy 格式: data/ ├── train_points.npy # 训练集点云 ├── train_labels.npy # 训练集标签 ├── test_points.npy # 测试集点云 └── test_labels.npy # 测试集标签

text

数据增强

训练时自动应用以下增强策略(随机概率):

  • 随机缩放 (0.8-1.2)
  • 随机平移 (±0.1)
  • 随机旋转 (绕三轴)
  • 随机抖动 (sigma=0.005)
  • 随机丢弃 (10% 点)

环境配置

训练模型
bash
# 基础训练
python pct.pyw --data_dir ./data --epochs 200 --batch_size 64

# 带参数训练
python pct.pyw --data_dir ./data --n_points 1024 --batch_size 32 --epochs 250 --lr 0.01

# 禁用 GPU
python pct.pyw --no_cuda
命令行参数
参数    默认值    说明
--data_dir    ./data    数据目录路径
--n_points    1024    每个样本的点数
--batch_size    64    批次大小
--epochs    200    训练轮数
--lr    0.01    初始学习率
--weight_decay    1e-4    权重衰减
--seed    42    随机种子
--no_cuda    False    禁用 CUDA
输出文件
训练完成后会自动生成:

pct_model.pkl - 训练好的模型权重

result.json - 测试集预测结果(样本ID → 类别ID)

json
{
  "0": 15,
  "1": 3,
  ...
}
学习率调度
采用余弦退火调度 (Cosine Annealing):

lr = eta_min + (base_lr - eta_min) * (1 + cos(π * epoch / T_max)) / 2
性能指标
指标    值
训练集准确率    ~95%
测试集准确率    ~90-92%
单 epoch 时间    ~60s (GPU)
注:实际性能取决于硬件配置和参数设置

项目结构
PCT_jittor/
├── pct.pyw           # 主程序(训练 + 推理)
├── data/             # 数据集目录
├── pct_model.pkl     # 训练好的模型
├── result.json       # 预测结果
└── README.md         # 项目文档
常见问题
1. 数据文件找不到
确保 data/ 目录下存在 train_points.npy, train_labels.npy, test_points.npy, test_labels.npy 文件。

2. GPU 内存不足
减小 --batch_size 参数,例如改为 32 或 16。

3. Jittor argmax 返回 tuple 问题
代码已处理该问题,自动提取 tuple 中的第一个元素作为预测结果。

引用
如果本项目对您的研究有帮助,请引用:

bibtex
@article{guo2021pct,
  title={PCT: Point cloud transformer},
  author={Guo, Meng-Hao and Cai, Jun-Xiong and Liu, Zheng-Ning and Mu, Tai-Jiang and Martin, Ralph R and Hu, Shi-Min},
  journal={Computational Visual Media},
  volume={7},
  pages={187--199},
  year={2021},
  publisher={Springer}
}
关于

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

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

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