目录

ModelNet40 点云分类 - PCT Baseline

基于 PCT(Point Cloud Transformer)的 ModelNet40 三维形状分类项目,计图挑战赛赛道二热身赛。

项目结构

├── configs/              # 训练配置文件
│   └── default.yaml
├── data/                 # 数据目录(需自行下载,不提交)
│   ├── train_points.npy  # 训练集点云 (9843, 2048, 3)
│   ├── train_labels.npy  # 训练集标签 (9843,)
│   ├── test_points.npy   # 测试集点云 (2468, 2048, 3)
│   └── categories.txt    # 40 个类别名称
├── scripts/              # 运行脚本
│   ├── train.sh          # Jittor 训练脚本 (Linux)
│   ├── train_pytorch.sh  # PyTorch 训练脚本 (Linux)
│   └── train_pytorch.bat # PyTorch 训练脚本 (Windows)
├── src/                  # 核心代码
│   ├── pct.py            # Jittor 版 PCT 模型
│   └── pct_pytorch.py    # PyTorch 版 PCT 模型
├── outputs/              # 日志、权重、结果(不提交)
├── requirements.txt
├── .gitignore
└── LICENSE

环境安装

Python 版本

  • Python >= 3.8

方式一:Jittor(比赛原始要求)

pip install jittor numpy

方式二:PyTorch(推荐,GPU 支持更好)

# CPU
pip install torch numpy

# CUDA 12.4
pip install torch numpy --index-url https://download.pytorch.org/whl/cu124

数据准备

  1. 下载 ModelNet40 点云数据(赛题提供)
  2. 解压至项目根目录下的 data/ 文件夹,确保目录结构如下:
data/
├── train_points.npy
├── train_labels.npy
├── test_points.npy
└── categories.txt
  1. 数据路径通过 --data_dir 参数配置,默认为 ./data

训练

Jittor 版本

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

或使用脚本:

bash scripts/train.sh

PyTorch 版本

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

或使用脚本:

# Linux
bash scripts/train_pytorch.sh

# Windows
scripts\train_pytorch.bat

训练参数说明

参数 默认值 说明
--data_dir ./data 数据根目录
--n_points 1024 每个样本采样点数
--batch_size 32 批大小
--epochs 200 训练轮数
--lr 0.01 初始学习率
--seed 42 随机种子

评测/推理

训练完成后自动对测试集进行预测,生成 result.json

# PyTorch 版本(训练完成后自动推理)
python src/pct_pytorch.py --data_dir ./data --epochs 200

输出文件 result.json 格式:

{
    "0": 4,
    "1": 35,
    "2": 10,
    ...
}
  • key:测试集样本编号(字符串,从 “0” 开始)
  • value:预测类别(整数,0-39)

结果说明

  • 指标:分类准确率(Accuracy)= 正确预测数 / 总测试样本数
  • 通过线:测试集准确率 >= 0.80
  • 模型:PCT(Point Cloud Transformer),参数量约 1.36M
  • 优化器:SGD(momentum=0.9, weight_decay=1e-4)+ Cosine Annealing 学习率调度
  • 数据增强:随机 Y 轴旋转、随机缩放(0.8~1.2)、随机抖动(N(0, 0.01))

提交方式

result.json 打包为 result.zip 提交:

zip result.zip result.json

第三方引用

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

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