本文利用TensorFlow实现VGG16,并以17 Flowers(17 Category Flower Dataset)为案例进行实战。
1. 项目架构
注:所有图片都在jpg文件夹下,删除该文件夹下两个非图片文件。
先看项目架构:
注:Example文件夹下为测试数据,部分来自于训练集,其余来自于网上。
2. 文件说明
文件 | 功能 |
---|---|
pre.py | 将jpg文件下图片按类别分开 |
loadNpy.py | 读取预训练权重(用于查看预训练权重格式) |
create_tfrecords.py | 将训练数据转换成TFRecords格式 |
VGG16.py | VGG16模型定义 |
training.py | 网络训练过程 |
test.py | 对网络训练结果进行测试 |
注:学习率为1e-5,否则不会收敛。vgg16.npy文件可以从网上自行获取。
3. 训练过程
- 先运行 pre.py 文件,将数据按类别分开,便于生成标签。
- 再运行 create_tfrecords.py 文件,生成 train.tfrecords 文件。
- 运行training.py进行训练。
- 训练500轮结果,一般在200轮收敛。
4. 项目源码
https://github.com/dhuQChen/VGG16
vgg16预训练权重链接: https://pan.baidu.com/s/1haAfyxjwsYx-ZGLz7iO5HA 提取码: bgw4
作为练习,读者可以对猫狗大战数据集使用VGG16进行分类。