drd_vic 514af621d0 build: 更新Python版本至3.14并更新相关依赖
- 升级Python版本要求从3.13到3.14
- 更新PyTorch CUDA索引URL从cu129到cu130
- 移除依赖版本固定,允许更灵活的版本选择
- 更新项目版本号从0.2.0到0.2.1
- 同步更新README和包元数据中的版本信息
- 更新Python版本锁定文件(.python-version)至3.14
2025-11-18 18:57:16 +08:00
2025-10-22 11:41:55 +08:00
2025-10-22 11:41:55 +08:00

CIFAR100 图像分类项目

Python PyTorch License Version

项目简介

本项目使用PyTorch框架和Wide ResNet模型对CIFAR100数据集进行训练和分类。项目采用标准的src layout结构代码模块化便于维护和扩展。特别针对不同显存大小的GPU进行了优化支持从2G到高性能GPU的多种配置。

主要特性

  • 🚀 多种显存优化配置支持2G、4G、8G及高性能GPU的预定义配置
  • 📊 训练可视化:自动生成训练过程的损失和准确率曲线
  • 🔧 灵活的配置系统:易于自定义模型参数和训练策略
  • 💾 显存监控工具:提供显存使用测试脚本
  • 📦 打包分发支持wheel包安装和分发

项目结构

Cifar100/
├── src/
│   └── cifar100/
│       ├── __init__.py        # 包初始化文件
│       ├── config.py          # 配置管理(多显存配置)
│       ├── data.py            # 数据加载和增强
│       ├── model.py           # WideResNet模型定义
│       ├── trainer.py         # 训练器和评估功能
│       └── visualizer.py      # 训练过程可视化
├── main.py                    # 主训练脚本
├── test_memory.py             # 显存测试脚本
├── README_4GB.md              # 4G显存优化详细说明
├── pyproject.toml             # 项目依赖和配置
├── plots/                     # 训练图表保存目录
└── dist/                      # 构建输出目录

数据集信息

  • 数据集CIFAR-100
  • 图片尺寸32×32像素
  • 数据集类别数量100
  • 数据量60,000张图片
  • 数据划分
    • 训练数据50,000张每个类别500张
    • 测试数据10,000张每个类别100张

模型架构

本项目使用Wide ResNet (WRN) 模型,支持多种配置:

默认配置 (4G显存优化)

  • 模型结构WRN-22-4
  • 深度22层
  • 宽度因子4
  • Dropout率0.3

其他可用配置

  • 2G显存WRN-16-2优先考虑显存使用
  • 8G显存WRN-28-10平衡性能和显存
  • 高性能WRN-34-10优先考虑性能

数据增强策略

训练集数据增强包括:

  • 随机裁剪32×32填充4像素
  • 随机水平翻转
  • 颜色抖动ColorJitter
  • 随机旋转RandomRotation
  • 随机仿射变换RandomAffine
  • 随机擦除RandomErasing
  • Cutout数据增强随机遮挡部分图像

测试集只进行基本的归一化处理。

训练策略

  • 优化器SGDNesterov动量权重衰减5e-4
  • 学习率调度:余弦退火调度器 + 学习率预热
  • 标签平滑平滑因子0.1
  • 梯度累积:根据显存大小自动调整
  • 早停机制30个epoch的耐心值

安装说明

环境要求

  • Python 3.14 或更高版本
  • PyTorch 2.9.1 或更高版本
  • CUDA兼容的GPU推荐

使用uv安装推荐

# 克隆仓库
git clone https://drdfilenest.xyz:8443/root/Cifar100.git
cd Cifar100

# 使用uv创建虚拟环境并安装依赖
uv sync

使用pip安装

# 从源码安装
pip install .

# 或安装预构建的wheel包
pip install dist/cifar100-0.2.1-py3-none-any.whl

使用方法

基本使用

# 在main.py中选择配置
config_name = "4gb"  # 可选: "2gb", "4gb", "8gb", "high_performance"

# 运行训练
python main.py

显存测试

测试不同配置的显存使用情况:

python test_memory.py

自定义配置

from src.cifar100.config import get_config

# 获取预定义配置
config = get_config("4gb")

# 使用自定义参数
custom_config = {
    "depth": 28,
    "width_factor": 8,
    "dropout": 0.3,
    "batch_size": 96,
    "learning_rate": 0.1,
    "accumulation_steps": 1,
    "warmup_epochs": 5,
    "description": "自定义配置"
}

性能基准

在4G显存的GPU上使用默认配置WRN-22-4

  • 训练时间约2-3小时200个epoch
  • 峰值显存使用约3.5GB
  • 预期测试准确率70%+

模型保存

  • 每20个epoch保存一次检查点
  • 自动保存最佳模型(基于测试准确率)
  • 模型文件格式:wrn{depth}_{width_factor}_epoch_{epoch}.pth

训练可视化

训练过程会自动生成以下图表并保存在 ./plots目录:

  • 训练和验证损失曲线
  • 训练和验证准确率曲线
  • 学习率变化曲线

高级功能

分布式训练

# 在main.py中设置
use_ddp = True  # 启用分布式数据并行

混合精度训练

# 在main.py中设置
use_amp = True  # 启用自动混合精度

自定义数据增强

# 在src/cifar100/data.py中修改
train_transform = transforms.Compose([
    # 添加自定义变换
])

故障排除

常见问题

  1. 显存不足

    • 尝试使用更小的配置(如"2gb"
    • 减小批量大小或增加梯度累积步数
  2. 训练速度慢

    • 确保使用CUDA加速
    • 考虑使用更大的批量大小(如果显存允许)
  3. 准确率不理想

    • 尝试调整学习率
    • 增加训练轮数
    • 尝试不同的数据增强策略

许可证

本项目采用MIT许可证 - 详见LICENSE文件

致谢

版本历史

  • v0.2.1更新python版本至3.14
  • v0.2.0:添加多显存配置支持,训练可视化
  • v0.1.0初始版本基本WideResNet实现
Description
本项目使用PyTorch框架和Wide ResNet模型对CIFAR100数据集进行训练和分类,针对不同显存大小的GPU进行了优化,支持从2G到高性能GPU的多种配置。
Readme MIT 293 KiB
v0.2.1 Latest
2025-11-18 18:52:20 +08:00
Languages
Python 100%