本文主要讲解了关于使用Tensorflow进行图片训练的过程,其中包括数据的准备、模型的准备、启动训练以及验证以及Tensorboard过程监控,本次训练采用了经典的slim框架。
第一部分数据准备:
基于Tensorflow框架的限制以及为了加快数据的读取,输入tensorflow进行计算的图像数据第一步需要打包成tfrecord格式,TFRecords其实是一种二进制文件,它可以更好的利用内存,更方便复制和移动:
先将图片整理,一个文件夹一个类,一般打乱的图片数据集有xml文件,可以写一个python程序,用python 应用xml.dom.minidom读xml文件;
运行Turn_to_record.py文件将分好类的文件夹生成tf-record,对应也会生成一个label文件。一般是1024张图片一个record,record数量可以自己在程序里设置,设置record参数为_NUM_SHARDS = 2。
我以行人数据集作为例子,文件夹名字为行人的ID,一个行人只有一个ID,但是一个行人可以多角度的拍摄很多图片,把同一个行人放到一个文件夹下。
第二部分:模型的准备
本次训练采用了综合性能比较高的Inception v4模型,Inception V4收敛速度更快。
该模型的下载地址:https://github.com/tensorflow/models/tree/master/slim
第三部分:启动训练
运行python文件train_image_classifier.py,在此之前无论是ubuntu还是windows都需要修改相应的record读入路径,以及指定基本的learning_rate、batch_size和model_name,一般用tensorflow计算,用python3更好。
第四部分:Tensorboard监控
tensorboard –logdir=/tmp/mytrain
第一张是对代价函数的监测图,当代价函数趋近于平稳时则训练可以停止;第二张是显示电脑IO读取情况图,一般不超过1是正常,如果超过1则说明训练使用的电脑IO读取不正常,应该考虑换动态硬盘,第二张图如果不正常会影响图片的读取,会影响最后的精度。
除了上述两张图,在tensorboard中还可以查看各层神经网络的稀疏性即神经元的使用情况,learning rate的变化图等等。