- 升级Python版本要求从3.13到3.14 - 更新PyTorch CUDA索引URL从cu129到cu130 - 移除依赖版本固定,允许更灵活的版本选择 - 更新项目版本号从0.2.0到0.2.1 - 同步更新README和包元数据中的版本信息 - 更新Python版本锁定文件(.python-version)至3.14
CIFAR100 图像分类项目
项目简介
本项目使用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数据增强(随机遮挡部分图像)
测试集只进行基本的归一化处理。
训练策略
- 优化器:SGD(Nesterov动量,权重衰减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([
# 添加自定义变换
])
故障排除
常见问题
-
显存不足
- 尝试使用更小的配置(如"2gb")
- 减小批量大小或增加梯度累积步数
-
训练速度慢
- 确保使用CUDA加速
- 考虑使用更大的批量大小(如果显存允许)
-
准确率不理想
- 尝试调整学习率
- 增加训练轮数
- 尝试不同的数据增强策略
许可证
本项目采用MIT许可证 - 详见LICENSE文件
致谢
版本历史
- v0.2.1:更新python版本至3.14
- v0.2.0:添加多显存配置支持,训练可视化
- v0.1.0:初始版本,基本WideResNet实现