目录

jmt24PA3: PA3 Point Cloud Transformer(Jittor)

1.任务说明

本作业要求在 Jittor 框架下实现 Point Cloud Transformer(PCT),完成 ModelNet40 分类,并提交 pct.pypct_model.pklresult.jsonREPORT.pdf 等文件。

本项目做的是三维点云分类。输入是一组点云(每个样本是 N x 3),输出是 40 类中的一个类别。 核心目标:正确搭建模型,训练稳定,结果文件格式正确,可复现。

2.项目结构

PA3/
├── data/
│   ├── train_points.npy
│   ├── train_labels.npy
│   ├── test_points.npy
│   └── categories.txt
├── pct.py
├── pct_model.pkl
├── result.json
├── train_log.json
├── REPORT.pdf
└── README
  • pct.py:数据集、模型、训练、推理全都在这里
  • pct_model.pkl:训练过程中按验证集最佳精度保存的权重
  • result.json:测试集预测结果(提交用)
  • train_log.json:每个 epoch 的训练日志(loss/acc/lr)

3.环境与依赖

建议使用 conda 环境,避免系统 Python 包冲突。

source /home/jmt/miniconda3/etc/profile.d/conda.sh
conda activate jittor
ython3.7 -V

必要依赖:

  • Python 3.7
  • Jittor 1.3.11.0
  • NVIDIA GPU(本实验使用 CUDA 训练)

可先做一次自检:

python3.7 -m jittor.test.test_example

4.实验流程

4.1 数据处理

  • 训练集:train_points.npy + train_labels.npy
  • 测试集:test_points.npy
  • 每次从原始点云中采样 n_points=1024
  • 训练时增强:随机绕 Y 轴旋转 + 随机缩放 + 抖动噪声(jitter)

4.2 模型结构

PCT 主体流程:

  1. 输入 embedding:Conv1d(3->128) + Conv1d(128->128)
  2. 4 层 Self-Attention(SA_Layer
  3. 多层特征拼接后融合到 1024 维
  4. 全局最大池化
  5. MLP 分类头输出 40 类 logits

4.3 训练策略

  • 优化器:SGD(momentum=0.9, weight_decay=1e-4)
  • 学习率调度:CosineAnnealingLR
  • 训练/验证划分:9:1
  • 保存策略:按 val_acc 记录最优权重(不是最后一轮)

5.运行方式

5.1 训练 + 推理一体化

python3.7 pct.py \
  --data_dir ./data \
  --n_points 1024 \
  --batch_size 24 \
  --epochs 200 \
  --lr 0.003 \
  --num_workers 0 \
  --val_ratio 0.1 \
  --use_cuda 1 \
  --seed 42 \
  --save_dir .

5.2 产物

运行完成后会自动生成:

  • pct_model.pkl
  • train_log.json
  • result.json

6.结果说明

本次采用学习率 lr=0.003,200 epoch。 终端末轮结果(示例):

  • Train Acc:87.06%
  • Val Acc:86.48%
  • Val Loss:0.4212

说明:

  • 提交时使用的是验证集最优模型,不依赖最后一轮偶然波动

7.result.json 格式与校验

result.json 是一个字典,格式类似:

{
  "0": 12,
  "1": 7,
  "...": "...",
  "2467": 30
}

校验点:

  1. 样本数应为 2468
  2. 键覆盖 0~2467
  3. 标签值范围 0~39

8.复现和稳定性说明

同样参数重复训练时,结果可能有小幅波动,主要来自:

  • 数据采样与增强随机性
  • GPU 非完全确定性
  • 训练过程的数值波动

为尽量稳定,你可以做:

  • 固定 seed等超参数
  • 使用“验证集最佳权重”作为最终模型
关于
249.5 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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