目录

PCT_jittor

本项目提供了一个基于Jittor (计图)深度学习框架的 PCT (Point Cloud Transformer) 模型实现,用于完成 ModelNet40 三维点云数据集的分类任务。

本项目支持完整的端到端训练与推理流程,并在原生代码的基础上完善了数据增强策略优化器配置,最终会自动生成用于提交的 result.json 预测结果。

目录结构

在运行代码之前,请确保你的项目文件夹结构如下:

PCT-ModelNet40/
│
├── pct.py                  # 核心代码(包含模型定义、训练、推理)
├── README.md               # 项目说明文档
│
└── data/                   # 数据集存放目录(需自行下载并放置)
    ├── categories.txt      # 物品分类
    ├── train_points.npy    # 训练集点云数据 (N, 2048, 3)
    ├── train_labels.npy    # 训练集标签数据 (N,)
    └── test_points.npy     # 测试集点云数据 (M, 2048, 3)

数据集下载方式:可以从https://www.educoder.net/competitions/Jittor-7 下载比赛官方提供的数据集。

环境依赖

请确保你的系统中安装了 Python 3.7 或更高版本。 运行本项目需要安装 jittornumpy

你可以通过以下命令快速安装:

pip install jittor numpy

核心优化 (Completed TODOs)

pct.py 中,我已经完成了以下关键部分的优化:

  1. 三维数据增强

    • 随机旋转:绕 Y 轴进行 02π0 \sim 2\pi 的随机旋转,增强模型的旋转不变性。
    • 随机缩放:在 0.81.20.8 \sim 1.2 倍之间各向异性随机缩放物体大小。
    • 随机抖动:在三维空间中对点云进行轻微的随机平移偏移。 有效防止了模型在训练集上过拟合。
  2. 优化器与学习率调度

    • 使用了对 Transformer 架构更友好的 Adam 优化器(替代了基础的 SGD)。
    • 配合余弦退火算法 (Cosine Annealing LR) 动态调整学习率,使得模型在训练后期收敛更加平稳。
  3. Loss函数

    • 使用了带 Label Smoothing 的 Loss(替代了传统交叉熵损失函数)。

如何运行

打开终端,进入项目所在目录。

1. 快速开始(默认配置)

直接运行以下命令即可开始训练并自动生成测试集预测结果:

python pct.py

2. 自定义参数运行

代码中预留了命令行参数接口,可以根据显存大小或训练需求调整参数:

python pct.py --epochs 200 --batch_size 32 --lr 0.001 --n_points 1024

参数说明

  • --data_dir: 数据集存放路径(默认:./data
  • --n_points: 每个样本采样的点云数量(默认:1024
  • --batch_size: 批次大小,显存不足可调小至 16 或 8(默认:32
  • --epochs: 总训练轮数(默认:200
  • --lr: 初始学习率(默认:0.0001
  • --seed: 随机种子,保证结果可复现(默认:42

输出文件

训练和推理结束后,当前目录下会生成两个重要文件:

  1. **pct_model.pkl**:训练好的 Jittor 模型权重文件。如果你后续需要继续训练或查看模型,可以加载该文件。
  2. **result.json**:测试集的预测结果,格式为字典 {"样本编号": 预测类别ID}。此文件可直接用于提交比赛成绩。
关于

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

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

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