前言

网上关于VGG模型的文章有很多,有介绍算法本身的,也有代码实现,但是很多代码只给出了模型的结构实现,并不包含数据准备的部分,这让人很难愉快的将代码迁移自己的任务中。为此,这篇博客接下来围绕着如何使用VGG实现自己的图像分类任务,从数据准备到实验验证。代码基于Python与TensorFlow实现,模型结构采用VGG-16,并且将很少的出现算法和理论相关的东西。

数据准备

下载数据和转换代码

大多数人自己的训练数据,一般都是传统的图片形式,如.jpg,.png等等,而图像分类任务的话,这些图片的天然组织形式就是一个类别放在一个文件夹里,那么有啥大众化的数据集是这样的组织形式呢?TensorFlow的FlowersData,它下载下来是这个样子:

一共有五类,每一类中都有几百张图,我们把这些数据组织成TFrecord形式,对应的博客在这里,源码的github在这里,FlowersData数据集在这里。
有上面这三个东西之后,就可以生成TFrecord文件了。

组织图片数据

首先将FlowersData文件夹下的数据分成两个部分,训练数据和测试数据,我把原文件五个类别中都拿出大概100张图左右,数据的构成和路径如下:

生成训练TFrecord

#图片路径
cwd = 'F:\\flowersdata\\trainimages\\'
#文件路径
filepath = 'F:\\flowersdata\\tfrecord\\train\\'
classes=['daisy','dandelion','roses','sunflowers','tulips']
#tfrecords格式文件名
ftrecordfilename = ("traindata.tfrecords-%.3d" % recordfilenum)
#tfrecords格式文件名
ftrecordfilename = ("traindata.tfrecords-%.3d" % recordfilenum)

生成效果:

生成预测TFrecord

#图片路径
cwd = 'F:\\flowersdata\\testimages\\'
#文件路径
filepath = 'F:\\flowersdata\\tfrecord\\test\\'
classes=['daisy','dandelion','roses','sunflowers','tulips']
#tfrecords格式文件名
ftrecordfilename = ("testdata.tfrecords-%.3d" % recordfilenum)
#tfrecords格式文件名
ftrecordfilename = ("testdata.tfrecords-%.3d" % recordfilenum)

生成效果:

训练模型

初始权重与源码下载

VGG-16的初始权重我上传到了百度云,在这里下载;
VGG-16源码我上传到了github,在这里下载;

在源码中:
train_and_val.py文件是最终要执行的文件,它定了训练和预测的过程;
input_data.py是将上一步中生成的TFRecord文件组织成batch的过程;
VGG.py定义了VGG-16的网络结构;
tool.py是最底层,定义了一些卷积池化等操作。

训练模型

train_and_val.py文件修改:

if __name__=="__main__":train()#evaluate()

根据自己的路径修改:

#初始权重路径
pre_trained_weights = 'vgg16_pretrain/vgg16.npy'
#训练数据路径
train_data_dir = 'F:\\flowersdata\\tfrecord\\train\\traindata.tfrecords*'test_data_dir =
#预测数据路径
'F:\\flowersdata\\tfrecord\\test\\testdata.tfrecords*'
#训练生成文件路径
train_log_dir = 'logs/train/'
#预测生成文件路径
val_log_dir = 'logs/val/'

根据自己的显存容量修改:

IMG_W = 224
IMG_H = 224
BATCH_SIZE = 8

训练过程每50个step打印loss;
每200个step计算一个batch中的准确率;
每1000个step保存一次权重。

预测

train_and_val.py文件修改:

if __name__=="__main__":#train()evaluate()
#训练过程中生成的权重
log_dir = 'logs/train/'
#预测数据集路径
test_data_dir = 'F:\\flowersdata\\tfrecord\\test\\testdata.tfrecords*'
#用于生成tf文件的图片数量
n_test = 502

打印测试样本总数;
打印正确预测的样本总数;
打印top_1。

使用VGG模型自定义图像分类任务相关推荐

  1. 【MatConvnet速成】MatConvnet图像分类从模型自定义到测试

    欢迎来到专栏<2小时玩转开源框架系列>,这是我们第10篇,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,cha ...

  2. 【darknet速成】Darknet图像分类从模型自定义到测试

    欢迎来到专栏<2小时玩转开源框架系列>,这是我们第12篇文章,前面已经说过了caffe,tensorflow,pytorch,mxnet,keras,paddlepaddle,cntk,c ...

  3. 【DL4J速成】Deeplearning4j图像分类从模型自定义到测试

    文章首发于微信公众号<有三AI> [DL4J速成]Deeplearning4j图像分类从模型自定义到测试 欢迎来到专栏<2小时玩转开源框架系列>,这是我们第九篇,前面已经说过了 ...

  4. 【chainer速成】chainer图像分类从模型自定义到测试

    文章首发于微信公众号<有三AI> [chainer速成]chainer图像分类从模型自定义到测试 欢迎来到专栏<2小时玩转开源框架系列>,这是我们第八篇,前面已经说过了caff ...

  5. 【cntk速成】cntk图像分类从模型自定义到测试

    文章首发于微信公众号<有三AI> [cntk速成]cntk图像分类从模型自定义到测试 欢迎来到专栏<2小时玩转开源框架系列>,这是我们第七篇,前面已经说过了caffe,tens ...

  6. 【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [paddlepaddle速成]paddlepaddle图像分类从模型自定义到测试 这是给大家准备的paddlepaddle与visualdl速成例子 ...

  7. 【pytorch速成】Pytorch图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [pytorch速成]Pytorch图像分类从模型自定义到测试 前面已跟大家介绍了Caffe和TensorFlow,链接如下. [caffe速成]ca ...

  8. 【mxnet速成】mxnet图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [mxnet速成]mxnet图像分类从模型自定义到测试 这是给大家准备的mxnet速成例子 这一次我们讲讲mxnet,相关的代码.数据都在我们 Git ...

  9. 【Keras速成】Keras图像分类从模型自定义到测试

    文章首发于微信公众号<与有三学AI> [Keras速成]Keras图像分类从模型自定义到测试 这是给大家准备的Keras速成例子 这一次我们讲讲keras这个简单.流行的深度学习框架,一个 ...

最新文章

  1. R语言eval函数评估表达式或者字符串实战
  2. python有多态特性吗_Python:多态、协议和鸭子类型
  3. 论面向组合子程序设计方法 之 南无阿弥陀佛
  4. 【数位DP】CF 54C,509C,431D,628D,855E,1245F,95D
  5. 中国寒龙反网络病毒联盟核心小组:官方公告,近期本站将会发布各种编程技术视频教程,详情请点击我们的以下公告!...
  6. android——wifi系统架构
  7. Ubuntu搭建DNS主从服务器
  8. 【05】JSON笔记
  9. 星舆科技北斗高精度定位网启动北斗三号服务
  10. 基于React技术栈打造炫酷个人简历实战-郭永峰-专题视频课程
  11. TypeError:Cannot read property 'bind' of underfined(React)
  12. Rails图像上传:使用CarrierWave和Devise
  13. css+html 嵌套表格做简单网页
  14. 技术的真相 I 让手机夜拍也精彩的原理竟然是...
  15. SDN多控制器资源池的设计与实现
  16. 34岁的困境!测试工程师如何突破职业瓶颈?
  17. 乐高大颗粒作品22:灯塔
  18. uva 10859 放置街灯--Placing Lampposts
  19. 2020蓝桥杯之单片机设计与开发(1)——CT107D开发板了解与准备
  20. chrom如何兼容本地file文件

热门文章

  1. 虚拟机玩转 Veritas NetBackup(NBU)之服务端安装部署
  2. 计算机内存不足16g内存,win10 16g内存显示内存不足怎么办_win10 16g内存显示可用7.95g如何恢复...
  3. 《银杏,银杏》原文小说
  4. csr867x入门之iis使用(八)
  5. java接入支付宝网站api
  6. Nginx全站开启HTTPS
  7. 全站替换https攻略
  8. c语言课程设计报告停车系统,停车场管理系统C语言课程设计
  9. Win10_此电脑_多余项目设备和驱动器
  10. 苹果呼叫转移设置不了_手机不想接电话怎么设置为空号教程