目录

计图挑战赛 - 热身赛2:点云分类 (PCT)

本仓库包含了计图挑战赛热身赛2(ModelNet40点云分类)的完整实现。项目基于 Jittor 框架,使用了 Point Cloud Transformer (PCT) 模型。

1. 环境安装

本项目在以下环境下运行并通过验证:

  • 操作系统: Ubuntu 22.04
  • 显卡: NVIDIA GeForce RTX 4060 (8GB)
  • Python 版本: 3.10+
  • 框架: Jittor (最新版本)

安装依赖:
pip install jittor numpy
# 确保安装了用于处理ModelNet数据的必要库

2. 目录结构

遵循开源代码规范,项目结构如下:

  • src/
    • models/pct.py: 核心模型 PCT 的架构实现。
    • utils/dataset.py: ModelNet40 数据集加载与增强逻辑。
  • scripts/
    • train.py: 训练入口脚本,包含学习率调度与验证逻辑。
    • test.py: 推理脚本,用于生成最终提交的 result.json。
  • configs/: 存放模型超参数配置文件。
  • data/: 存放数据集下载说明及预处理后的数据路径。
  • outputs/: 存放训练日志、各阶段 Checkpoints 及最终预测结果。

3. 数据准备

  1. 下载: 从比赛官网下载 ModelNet40 数据集。

  2. 结构: 将数据放置于 data/ 目录下,确保路径结构如下:
    data/modelnet40_normal_resampled/
    ├── train/
    ├── test/
    └── modelnet40_shape_names.txt

  3. 预处理: ModelNetDataset 类会自动处理点云采样(默认1024点)及归一化。

4. 训练流程

运行以下命令开始训练:
python3 scripts/train.py --epochs 100 --batch_size 32 --lr 0.01

训练关键特性:

  • 学习率策略: 使用 CosineAnnealingLR 调度。
  • 数据增强: 包含随机旋转(Random Rotation)与随机抖动(Random Jitter)。
  • 监控: 每个 Epoch 自动计算验证集准确率并保存最佳权重 pct_best.pkl。

5. 评测与推理

使用训练好的最佳权重生成提交文件:
python3 scripts/test.py --ckpt outputs/checkpoints/pct_best.pkl

该脚本将输出 result.json,格式如下:
{
“0”: 0,
“1”: 0,
“2”: 15,

}

6. 实验结果与分析

6.1 性能指标

  • 最高验证准确率 (Accuracy): 0.8465 (小数形式)
  • 最终收敛 Loss: 0.1294

6.2 结果分析

  • 模型表现: PCT 在处理对称性较强的物体(如花瓶、瓶子)时表现极其稳定。
  • 改进点: 在准确率达到 0.84 以后,增长趋于平缓。未来可通过增加采样点至 2048 点或引入标签平滑(Label Smoothing)进一步提升至 0.88 以上。

7. 许可说明

本项目遵循 MIT 许可证。

关于

jittor-俺不是孬丹-jittor_热身赛2

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

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