# 深度学习 **Repository Path**: lemonlen/deep-learning ## Basic Information - **Project Name**: 深度学习 - **Description**: 计算机视觉到自然语言处理 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-21 - **Last Updated**: 2025-08-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 深度学习项目 ## 📖 项目介绍 本项目是一个完整的深度学习实践项目,涵盖计算机视觉经典模型的实现与训练。项目采用模块化设计,提供统一的训练框架,支持多种CNN模型的快速实验和对比分析。 **推荐硬件配置:** RTX 4090显卡(24GB显存)或其他24GB以上显存的GPU **推荐训练命令:** ```python nohup python train.py > training.log 2>&1 & ``` 查看训练状态 ```python tail -f training.log ``` ## 🏗️ 项目架构 ### 📁 目录结构 ``` deep-learning/ ├── cv/ # 计算机视觉模块 │ ├── moudle/ # 通用训练框架 │ │ ├── __init__.py # 模块初始化 │ │ ├── config.py # 配置管理(支持YAML) │ │ ├── data_loader.py # 数据加载器 │ │ ├── trainer.py # 通用训练器 │ │ ├── tensorboard_logger.py # TensorBoard记录器 │ │ ├── utils.py # 工具函数 │ │ └── README.md # 框架使用说明 │ ├── dataset/ # 数据集 │ │ ├── Mini-ImageNet-Dataset/ # Mini-ImageNet数据 │ │ └── label.json # 标签映射文件 │ ├── alexnet/ # AlexNet实现 │ │ ├── main.py # 训练脚本 │ │ └── config.yaml # 配置文件 │ ├── vgg/ # VGG19实现 │ │ ├── main.py # 训练脚本 │ │ └── config.yaml # 配置文件 │ ├── googlenet/ # GoogLeNet实现 │ │ ├── main.py # 训练脚本 │ │ └── config.yaml # 配置文件 │ ├── resnet/ # ResNet50实现 │ │ ├── main.py # 训练脚本 │ │ └── config.yaml # 配置文件 │ ├── densenet/ # DenseNet实现(待完成) │ ├── senet/ # SENet实现(待完成) │ └── nin/ # NiN实现(待完成) ├── nlp/ # 自然语言处理模块(待开发) ├── LICENSE # 许可证 └── README.md # 项目说明文档 ``` ## 🎯 已实现的模型 ### 计算机视觉模型 | 模型 | 年份 | 层数 | 参数量 | 批次大小 | 学习率 | 特色技术 | 状态 | |------|------|------|--------|----------|--------|----------|------| | **AlexNet** | 2012 | 8 | ~60M | 256 | 0.01 | 首个成功的深度CNN | ✅ 已完成 | | **VGG19** | 2014 | 19 | ~140M | 128 | 0.001 | 小卷积核深层网络 | ✅ 已完成 | | **GoogLeNet** | 2014 | 22 | ~7M | 256 | 0.01 | Inception模块 + 辅助分类器 | ✅ 已完成 | | **ResNet50** | 2015 | 50 | ~26M | 256 | 0.1 | 残差连接 + 跳跃连接 | ✅ 已完成 | | **DenseNet** | 2017 | - | - | - | - | 密集连接 | 🚧 待实现 | | **SENet** | 2017 | - | - | - | - | 注意力机制 | 🚧 待实现 | | **NiN** | 2013 | - | - | - | - | 网络中的网络 | 🚧 待实现 | ## 🛠️ 技术特性 ### 🎨 模块化训练框架 - **统一接口**:所有模型使用相同的训练、验证、测试接口 - **配置驱动**:支持YAML配置文件,便于实验管理 - **可扩展性**:易于添加新模型和训练策略 - **专业记录**:集成TensorBoard,完整记录训练过程 ### ⚙️ 核心功能 1. **数据处理**: - 自动数据加载和预处理 - 可配置的数据增强策略 - 支持多种图像尺寸和归一化参数 2. **训练管理**: - 自动保存最佳模型 - 学习率调度策略 - 训练过程可视化 - 支持GPU/CPU自动切换 3. **实验追踪**: - TensorBoard日志记录 - 训练历史保存 - 配置文件自动备份 - 详细的性能统计 ### 🔧 专用优化 - **GoogLeNet**:实现辅助损失函数,专用训练器处理多输出 - **ResNet**:学习率预热策略,优化深层网络训练 - **VGG**:针对参数量大的特点优化批次大小和学习率 - **AlexNet**:经典配置,作为基准模型 ## 📊 数据集 ### Mini-ImageNet数据集 - **来源**:[百度AI Studio](https://aistudio.baidu.com/datasetdetail/167270/0) - **任务类型**:图像分类 - **类别数量**:100类 - **图像尺寸**:224×224 - **数据分割**:训练集/验证集/测试集 **数据集结构:** ``` dataset/ ├── Mini-ImageNet-Dataset/ │ ├── train/ # 训练集 │ ├── val/ # 验证集 │ └── test/ # 测试集 └── label.json # 类别标签映射 ``` ## 🚀 快速开始 ### 环境要求 ```bash # 核心依赖 torch >= 1.8.0 torchvision >= 0.9.0 tensorboard >= 2.4.0 PyYAML >= 5.4.0 # 用于YAML配置支持 ``` ### 训练模型 ```bash # 1. 训练AlexNet cd cv/alexnet python main.py # 2. 训练VGG19 cd cv/vgg python main.py # 3. 训练GoogLeNet cd cv/googlenet python main.py # 4. 训练ResNet50 cd cv/resnet python main.py ``` ### 自定义配置 每个模型都有对应的`config.yaml`文件,可以轻松调整超参数: ```yaml # 示例:修改训练配置 training: num_epochs: 50 # 训练轮数 lr: 0.01 # 学习率 batch_size: 128 # 批次大小 # 修改模型配置 model: dropout: 0.5 # Dropout率 num_classes: 100 # 分类数量 ``` ### 查看训练过程 ```bash # 启动TensorBoard tensorboard --logdir=cv/{模型名}/logs # 浏览器访问 http://localhost:6006 ``` ## 📈 实验结果对比 ### 模型性能特点 1. **AlexNet**:历史意义重大,参数适中,训练快速 2. **VGG19**:参数量最大,表达能力强,需要更多计算资源 3. **GoogLeNet**:参数效率极高,多尺度特征提取 4. **ResNet50**:训练最稳定,深层网络代表,性能优秀 ### 训练策略对比 - **学习率**:ResNet > GoogLeNet/AlexNet > VGG - **训练时间**:ResNet > GoogLeNet > VGG > AlexNet - **收敛速度**:ResNet > GoogLeNet > AlexNet > VGG - **参数效率**:GoogLeNet > ResNet > AlexNet > VGG ## 🔄 使用模块化框架 ### 基本使用 ```python from moudle import ( YAMLConfig, create_data_loaders, Trainer, TensorBoardLogger, setup_device ) # 1. 加载配置 config = YAMLConfig('config.yaml') # 2. 创建数据加载器 train_loader, val_loader, test_loader, _ = create_data_loaders( data_dir=config.get('data_dir'), batch_size=config.get('batch_size') ) # 3. 创建训练器 trainer = Trainer( model=your_model, device=setup_device(), tensorboard_logger=TensorBoardLogger(config.get('log_dir'), 'model_name') ) # 4. 开始训练 trainer.train(train_loader, val_loader, num_epochs=config.get('num_epochs')) ``` ### 添加新模型 1. 在`cv/`下创建新的模型文件夹 2. 实现模型类 3. 创建`config.yaml`配置文件 4. 使用框架的`Trainer`类进行训练 ## 🎮 进阶功能 ### 自定义训练器 ```python from moudle import Trainer class CustomTrainer(Trainer): def train_epoch(self, train_loader, epoch): # 自定义训练逻辑 return super().train_epoch(train_loader, epoch) ``` ### 多配置实验 ```bash # 创建不同的配置文件进行对比实验 cp config.yaml config_exp1.yaml cp config.yaml config_exp2.yaml # 修改配置后分别训练 ``` ## 🤝 贡献指南 1. **添加新模型**:参考现有模型结构,实现新的CNN架构 2. **优化框架**:改进训练器、数据加载器等核心组件 3. **实验对比**:添加更多数据集和评估指标 4. **文档完善**:补充使用说明和最佳实践 ## 📝 许可证 本项目采用开源许可证,详见 [LICENSE](LICENSE) 文件。 ## 🙏 致谢 - 感谢PyTorch团队提供优秀的深度学习框架 - 感谢各模型原作者的开创性工作 - 感谢百度AI Studio提供数据集资源 --- **项目亮点**:模块化设计 | YAML配置 | 完整实验流程 | TensorBoard可视化 | 多模型对比