目录

jittor-好厚米-pct

项目简介

本项目为计图挑战赛赛道二热身赛参赛项目,使用 Jittor 深度学习框架,在 ModelNet40 点云数据集上完成三维形状分类任务。

本项目基于赛事提供的 PCT(Point Cloud Transformer)示例代码进行优化,模型输入为三维点云,输出为对应的类别编号。

环境安装

推荐运行环境:

  • Python 3.9
  • Jittor
  • NumPy
  • CUDA

安装依赖:

pip install jittor numpy

数据准备

从比赛页面下载并解压 ModelNet40 点云数据,将数据文件放在项目的 data 目录下。

目录结构如下:

data/
├── train_points.npy
├── train_labels.npy
├── test_points.npy
└── categories.txt

数据文件说明:

  • train_points.npy:训练集点云,shape 为 (9843, 2048, 3)
  • train_labels.npy:训练集标签,shape 为 (9843,)
  • test_points.npy:测试集点云,shape 为 (2468, 2048, 3)
  • categories.txt:40个类别名称

比赛数据不包含在本开源仓库中,请从比赛官方页面获取。

运行方法

执行以下命令进行训练和测试集预测:

python pct.py --data_dir ./data --n_points 1024 --batch_size 32 --epochs 250 --lr 0.001 --seed 42 --output_dir ./outputs

参数说明:

  • --data_dir:数据集目录
  • --n_points:每个样本使用的点数
  • --batch_size:训练批次大小
  • --epochs:训练轮数
  • --lr:初始学习率
  • --seed:随机种子
  • --output_dir:模型和预测结果保存目录

如果显存不足,可以减小批次大小:

python pct.py --data_dir ./data --batch_size 16 --output_dir ./outputs

输出结果

训练和预测完成后,将在 outputs 目录下生成:

outputs/
├── pct_model.pkl
└── result.json

其中:

  • pct_model.pkl:训练得到的模型参数
  • result.json:测试集预测结果

result.json 格式如下:

{
    "0": 4,
    "1": 35,
    "2": 10
}

字典的 key 为测试集样本编号,value 为模型预测的类别编号,类别编号范围为 0-39

提交结果

将生成的 result.json 压缩为 result.zip,压缩包结构必须为:

result.zip
└── result.json

Linux 环境下可以执行:

cd outputs
zip result.zip result.json

请确保压缩包中没有额外目录,即解压 result.zip 后可以直接得到 result.json

模型优化

本项目在 PCT baseline 的基础上进行了以下优化:

  1. 增加随机旋转、缩放、平移和随机抖动等数据增强。
  2. 使用 Adam 优化器进行模型训练。
  3. 使用带 Warmup 的余弦退火学习率策略。
  4. 使用 Label Smoothing 损失函数降低过拟合。
  5. 通过随机种子提高实验的可复现性。

评测方式

比赛使用测试集分类准确率 Accuracy 作为评测指标:

Accuracy = 正确分类的样本数 / 测试集样本总数

热身赛通过要求为测试集准确率不低于 0.80,最终成绩以比赛平台评测结果为准。

开源说明

本仓库仅包含模型训练与预测代码,不包含以下文件:

  • ModelNet40 原始数据
  • 模型权重
  • 测试集预测结果
  • 训练日志及其他中间产物

本项目基于赛事提供的 PCT 示例代码进行修改和优化,仅用于计图挑战赛参赛与学习交流。

License

本项目采用 MIT License。

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

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