目录

PCT: Point Cloud Transformer for ModelNet40 Classification

基于 Jittor 框架的 PCT (Point Cloud Transformer) 模型,用于 ModelNet40 三维形状分类任务。

Reference: Guo et al., “PCT: Point Cloud Transformer”, Computational Visual Media, 2021.

环境安装

  • Python >= 3.8
  • Jittor 框架
# 创建并激活 conda 环境
conda create -n jitu python=3.9 -y
conda activate jitu

# 安装依赖
pip install jittor numpy tensorboardX

数据准备

下载 ModelNet40 预处理数据集,将以下文件放入 data/ 目录:

  • train_points.npy — 训练点云 (N, 2048, 3)
  • train_labels.npy — 训练标签 (N,)
  • test_points.npy — 测试点云 (M, 2048, 3)

目录结构:

data/
├── train_points.npy
├── train_labels.npy
├── test_points.npy
└── README.md

可通过 --data_dir 指定数据目录:

python scripts/train.py --data_dir /path/to/data

训练

使用默认配置训练:

python scripts/train.py

自定义参数:

python scripts/train.py --epochs 200 --lr 0.01 --batch_size 64 --optimizer sgd --scheduler warmup_cosine

启用半监督训练(利用测试集无标注数据):

python scripts/train.py --semi --semi_weight 1.0 --semi_conf 0.9 --semi_start_epoch 50

从检查点恢复训练:

python scripts/train.py --resume outputs/checkpoints/best_model.pkl

小样本快速测试(验证代码能跑通):

python scripts/train.py --test_mode

配置文件

默认配置位于 configs/default.py。可通过 --config 指定其他配置文件,命令行参数优先级高于配置文件。

训练过程会保存:

  • 实际配置:outputs/logs/config.json
  • 运行命令:outputs/logs/command.txt
  • 模型检查点:outputs/checkpoints/
  • TensorBoard 日志:outputs/logs/

评测/推理

python scripts/eval.py --ckpt outputs/checkpoints/best_model.pkl

预测结果保存为 result.json,格式为 {"样本编号": 预测类别}

结果说明

评价指标

  • **Overall Accuracy (OA)**:分类准确率 = 正确预测样本数 / 总样本数 × 100%

最佳成绩

配置 Val Acc 说明
SGD + WarmupCosineLR (lr=0.01, wd=0.001) 90.15% 300 epochs, bs=32
SGD + WarmupCosineLR (lr=0.001, wd=0.05) 85.69% 300 epochs, bs=32

与线上成绩差异

本地验证集从训练集随机划分(默认 90%/10%),与线上测试集分布可能存在差异,本地验证准确率仅供参考。

目录结构

├── README.md
├── LICENSE
├── .gitignore
├── configs/            # 配置文件
│   └── default.py
├── src/                # 核心代码
│   ├── model.py        # PCT 模型定义
│   ├── dataset.py      # 数据集类
│   ├── utils.py        # 点云工具函数
│   └── scheduler.py    # 学习率调度器
├── scripts/            # 运行脚本
│   ├── train.py        # 训练入口
│   └── eval.py         # 评测/推理入口
├── tools/              # 工具脚本
├── data/               # 数据说明
│   └── README.md
└── outputs/            # 输出目录(不提交)
    ├── logs/
    └── checkpoints/

可复现性

  • 通过 --seed 设置随机种子(默认 42),统一设置 numpy 和 Jittor 的随机种子
  • 每次运行自动保存实际配置 (config.json)、运行命令 (command.txt) 和训练日志
  • 数据缺失时给出明确的错误提示和修复建议

引用

PCT 模型基于以下论文实现:

Guo, M. H., Cai, J. X., Liu, Z. N., Mu, T. J., Martin, R. R., & Hu, S. M. (2021). PCT: Point cloud transformer. Computational Visual Media, 7(2), 187-199.

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

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