目录

pct

PCT - Jittor

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

本项目为清华大学计算机系图形学实验 PA3 作业实现。


项目简介

  • 项目名称:PCT_jittor
  • 项目简介:A Jittor implementation of Point Cloud Transformer (PCT) for ModelNet40 3D shape classification.
  • 框架:Jittor
  • 任务:三维点云分类(ModelNet40,40 类)
  • 输入:B×N×3 点云坐标
  • 输出:40 类预测概率分布

环境依赖

jittor
numpy
tqdm
json

安装 Jittor:

pip install -U jittor

文件结构

pct.py                # 主程序:数据集、模型、训练、推理
data/
  train_points.npy    # 训练集点云
  train_labels.npy    # 训练集标签
  test_points.npy     # 测试集点云
pct_model.pkl         # 训练好的模型权重
result.json           # 测试集预测结果(编号→类别)
README.md
.gitignore

模型架构(PCT)

  1. 输入嵌入

    • 两层 Conv1d + BN + ReLU,将 3 维坐标映射到 128 维逐点特征
  2. 自注意力模块(SA_Layer)

    • Q/K/V 线性投影 + 注意力权重 + 残差连接 + BN/ReLU
    • 共堆叠 4 层自注意力,捕获点云全局几何关系
  3. 多尺度特征融合

    • 拼接 4 层注意力输出:B×512×N
    • Conv1d 升维到 1024 维
  4. 全局池化

    • 最大池化得到 1024 维全局特征
  5. 分类头

    • FC(1024→512) → Dropout → BN → ReLU
    • FC(512→256) → Dropout → BN → ReLU
    • FC(256→40)

训练配置

  • 优化器:SGD(lr=0.1, momentum=0.9, weight_decay=1e-4)
  • 学习率调度:CosineAnnealingLR(余弦退火)
  • 损失函数:交叉熵损失 CrossEntropyLoss
  • 批次大小:32
  • 点数:1024
  • 轮数:100
  • 数据增强:绕 Y 轴随机旋转 + 高斯噪声

运行方式

训练 + 测试一键运行

python pct.py

执行后会自动:

  1. 加载训练集并训练 PCT 模型
  2. 每轮输出 loss / train_acc
  3. 保存最终模型到 pct_model.pkl
  4. 在测试集上推理并保存结果到 result.json

输出说明

  • pct_model.pkl:模型权重
  • result.json:测试集预测字典
    {
      "0": 23,
      "1": 5,
      "2": 30,
      ...
    }

实验提交内容

  1. 源码:pct.py
  2. 模型:pct_model.pkl
  3. 预测结果:result.json
  4. 实验报告:REPORT.pdf
  5. Gitlink 开源仓库截图 + 链接
关于

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

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

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