VGG16 复现 - PaddlePaddle 实现

GitHub: https://github.com/geyuxu/paddle_recurrence_vgg16

本项目使用 PaddlePaddle 深度学习框架,完整复现经典卷积神经网络 VGG16 架构,支持在 CIFAR10、ImageNet 以及自定义数据集上进行训练与评估。

项目结构清晰,模块解耦,具备以下特性:


📦 项目结构

paddle_recurrence_vgg16/
├── model.py          # VGG16 模型定义
├── dataset.py        # 数据加载与 transform 定义
├── train.py          # 通用训练脚本(支持 CLI 参数)
├── evaluate.py       # 模型验证脚本
├── utils.py          # 保存/加载模型工具函数
├── config.py         # 训练默认配置项(可选)
└── README.md

🚀 快速开始

1. 安装 PaddlePaddle

pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

2. 训练模型(默认使用 CIFAR10)

python train.py

或者使用命令行参数控制:

python train.py \
    --dataset cifar10 \
    --input_size 32 \
    --num_classes 10 \
    --epochs 20 \
    --lr 0.001 \
    --batch_size 64

3. 自定义数据集使用方式(建议自行扩展 dataset.py):

# dataset.py 中添加自定义数据集逻辑
if name == 'custom':
    return CustomDataset(...)

📊 模型验证

训练过程中会自动在验证集上进行评估,查看准确率。


💾 模型保存

训练每个 epoch 后,会自动将模型参数保存至 ./checkpoints/ 目录下:


🔍 单图预测(可选)

你可以在 predict.py 中加载模型并进行图像预测,具体见脚本说明。


📚 关于 VGG16

VGG16 是由 Oxford VGG 团队提出的经典 CNN 架构,特点是使用多个 3x3 卷积堆叠代替大卷积核,结构简单但效果出色,广泛应用于图像分类、目标检测等任务。

本项目复现版本遵循原始结构(13个卷积层 + 3个全连接层),使用全局平均池化简化模型计算。


✅ 示例截图(CIFAR-10)

[Epoch 3] Batch 100, Loss: 1.4253
Validation Accuracy: 0.6324

📌 TODO(可选扩展)


🧠 作者

作者:Yuxu Ge(葛于旭)
框架:基于 PaddlePaddle 2.x
数据集:CIFAR10


📝 License

MIT