目录

ModelNet40 点云分类

计图(Jittor)挑战赛 热身赛二:在 ModelNet40 点云数据集上训练 PCT(Point Cloud Transformer) 分类模型,对测试集样本预测 40 类物体类别,并生成符合赛题要求的 result.json 提交文件。

项目简介

  • 任务:三维形状分类(输入点云 → 输出类别 0–39)
  • 框架Jittor
  • 模型:PCT(自注意力 + 多尺度特征融合)
  • 通过线:测试集分类准确率 ≥ 80%

目录结构

project/
├── README.md           # 本文件
├── LICENSE             # 开源许可证
├── requirements.txt    # Python 依赖
├── .gitignore
├── pct.py              # 数据加载、模型、训练与推理入口
└── data/               # 数据目录(需自行下载,不随仓库提交大文件)
    ├── train_points.npy    # (9843, 2048, 3)
    ├── train_labels.npy    # (9843,)
    ├── test_points.npy     # (2468, 2048, 3)
    └── categories.txt      # 40 类类别名称

训练与推理产物(默认不提交到 Git):

  • pct_model.pkl:训练权重
  • result.json:测试集预测结果

环境安装

系统要求

  • Linux(推荐 Ubuntu 20.04+)
  • Python 3.73.9(与 Jittor 版本匹配即可)
  • NVIDIA GPU + CUDA(推荐;代码中 jt.flags.use_cuda = 1
  • C++ 编译器:g++(Jittor 即时编译需要)

安装步骤

# 建议使用 conda 创建独立环境
conda create -n jittor python=3.9 -y
conda activate jittor

# 安装依赖
pip install -r requirements.txt

# 安装 Jittor(若 requirements 未包含,请按官网说明安装)
# https://github.com/Jittor/jittor
# pip install jittor

数据准备

  1. 从赛题页面下载 ModelNet40 点云数据(已预处理为 npy 格式)。
  2. 解压到项目根目录下的 data/ 文件夹:
data/
├── train_points.npy   # 训练集点云
├── train_labels.npy   # 训练集标签
├── test_points.npy    # 测试集点云(无标签)
└── categories.txt     # 类别名称列表
  1. 可通过参数指定数据路径:
python pct.py --data_dir ./data

训练

默认配置:1024 点/样本、batch=32、200 epoch、命令行 --lr 默认 0.01(实际优化器学习率为 lr × 0.1,即 0.001)。

conda activate jittor
cd /path/to/project1

python pct.py \
  --data_dir ./data \
  --n_points 1024 \
  --batch_size 32 \
  --epochs 200 \
  --lr 0.01 \
  --seed 42

训练结束后会生成:

  • pct_model.pkl:模型权重
  • result.json:对测试集的预测

主要超参数

参数 默认值 说明
--data_dir ./data 数据根目录
--n_points 1024 每样本采样点数(从 2048 中随机/均匀采样)
--batch_size 32 批大小
--epochs 200 训练轮数
--lr 0.01 命令行学习率;优化器使用 lr × 0.1
--seed 42 随机种子(numpy / Jittor)

训练策略说明

  • 优化器:SGD,momentum=0.9weight_decay=1e-4
  • 学习率调度:Cosine Annealing(T_max=epochseta_min=1e-6
  • 数据增强:绕 Y 轴随机旋转、随机缩放 (0.9–1.1)、高斯抖动 (σ=0.005)

许可证

本项目采用 MIT License 开源。

使用 Jittor 框架,请同时遵守其许可协议。

引用与致谢

  • PCT / Point Cloud Transformer 相关论文与实现思路
  • ModelNet40 数据集
  • 计图(Jittor)深度学习框架
关于

计图(Jittor)挑战赛热身赛二:基于 PCT(Point Cloud Transformer)在 ModelNet40 点云数据集上的三维形状分类。

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

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