使用TensorFlow slim文件夹当中的inception_v4网络训练自己的分类数据集
使用TensorFlow slim文件夹当中的inception_resnet_v2网络训练自己的分类数据集
下载slim库 git clone https://github.com/tensorflow/models/
使用的数据集是斯坦福的狗脸分类数据集:http://vision.stanford.edu/aditya86/ImageNetDogs/
每个文件夹存放一种类别的图片 文件夹名称即为类别名称
转换数据集为TFRecords格式的文件:
进入下载以后的文件夹中/models/research/slim/,使用pycharm打开slim文件夹,打开转换格式的文件download_and_convert_data.py,只有cifar10、flowers、mnist这几种下载和转换的文件,为了转换自己的数据集,这里在文件夹datasets中复制粘贴download_and_convert_flowers.py文件,得到副本download_and_convert_flowers - 副本.py文件,将副本重命名为download_and_convert_dogs.py
然后download_and_convert_data.py引入库文件
from datasets import download_and_convert_dogs
在main函数中新增
elif FLAGS.dataset_name =='dogs':
download_and_convert_dogs.run(FLAGS.dataset_dir)
文件download_and_convert_flowers.py就配置好的
接着配置download_and_convert_dogs.py文件,由于数据集已经下载好的,不需要重复下载,这里注释掉run函数中下载数据集的代码:
将文件中的字符flowers全部替换为dogs
然后将函数 _get_filenames_and_classes中的
flower_root = os.path.join(dataset_dir, 'flower_photos')改为flower_root = os.path.join(dataset_dir, 'Images')
修改验证集图片的数量 _NUM_VALIDATION = 350 为 _NUM_VALIDATION = 2100
(如果第一步已经修改,这一步可以跳过)修改函数_get_dataset_filename中的:
output_filename = 'flowers_%s_%05d-of-%05d.tfrecord' 为 output_filename = 'dogs_%s_%05d-of-%05d.tfrecord'
如果不需要生成TFRecords文件以后,图片数据集被删除,需要注释掉:
clean_up_temporary_files(dataset_dir)
生成TFRecords文件:
python download_and_convert_data.py --dataset_name=dogs --dataset_dir=~/zstanf/data
训练:
主文件就是train_image_classifier.py,查看dataset_name变量,dataset_factory.py的文件中字典datasets_map只有cifar10、flowers、imagenet、mnist这四种数据集处理方式,训练我们自己的数据集就需要新增数据处理方式,这里在字典中添加新的item,'dogs':dogs
由于每个value都是一个py文件,所以需要在datasets文件夹中新建dogs.py文件,这里的做法是复制粘贴datasets文件夹中的flowers.py文件,得到副本flowers - 副本.py然后重命名为dogs.py
dataset_factory.py引入库文件
from datasets import dogs
打开dogs.py文件进行相应的修改:
将文件中的字符flowers全部替换为dogs,这样就修改_FILE_PATTERN = 'flowers_%s_*.tfrecord'为_FILE_PATTERN = 'dogs_%s_*.tfrecord'修改训练集和验证集的图片数量 SPLITS_TO_SIZES = {'train': 19000, 'validation': 2100}
修改类目数量 _NUM_CLASSES = 120
修改_ITEMS_TO_DESCRIPTIONS = { 'image': 'A color image of varying size.', 'label': 'A single integer between 0 and 122', }
修改get_split函数中的图片解析格式'image/format': tf.FixedLenFeature((), tf.string, default_value='png')修改为:'image/format': tf.FixedLenFeature((), tf.string, default_value='jpg')
下载预训练权重文件:
wget http://download.tensorflow.org/models/inception_v4_2016_09_09.tar.gz
tar zxf inception_v4_2016_09_09.tar.gz
运行命令开始训练网络:
python train_image_classifier.py \
--train_dir=./model/inception_v4_model \ #训练过程中用于保存ckpt、index、meta文件的目录
--dataset_name=dogs
--dataset_split_name=train
--dataset_dir=~/zstanf/data \ #存放TFRecords文件的目录
--model_name=inception_v4 \ #网络的名称
--checkpoint_path=./model/inception_v4_2016_09_09/inception_v4.ckpt \ #预训练权重文件
--checkpoint_exclude_scopes=InceptionV4/Logits,InceptionV4/AuxLogits/Aux_logits \
--trainable_scopes=InceptionV4/Logits,InceptionV4/AuxLogits/Aux_logits
--clone_on_cpu=False \
--max_number_of_steps=10000 \
--batch_size=50 \
--learning_rate=0.01 \
可视化:
tensorboard --logdir=/home/用户名/model/inception_v4_model
验证数据集:
python eval_image_classifier.py \
--checkpoint_path=./model/inception_v4_model \
--eval_dir=./model/eval_result \
--dataset_name=dogs \
--dataset_split_name=validation \
--dataset_dir=~/zstanf/data \
--model_name=inception_v4 \
参考内容:
TensorFlow学习笔记(11)--【Ubuntu】slim框架下的inception_v4模型的运行、可视化、导出和使用
- 使用ImageNet在faster-rcnn上训练自己的分类网络
- tensorflow object detection api训练自己的数据集
- tensorflowxun训练自己的数据集之从tfrecords读取数据
- 使用Caffe训练适合自己样本集的AlexNet网络模型,并对其进行分类
- TensorFlow Object Detection API教程——利用自己制作的数据集进行训练预测和测试
- 使用Kubernetes和TensorFlow Serving将神经网络镜像分类进行弹性扩容
- (更新视频教程)Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型
- Windows下安装TensorFlow Object Detection API,训练自己的数据集
- TensorFlow迁移学习-使用谷歌训练好的Inception-v3网络进行分类
- 【Tensorflow slim 实战】写Inception-V4 Inception-ResNet-v2结构
- Mask R-CNN+tensorflow/keras的配置介绍、代码详解与训练自己的数据集演示
- Windows下安装TensorFlow Object Detection API,训练自己的数据集
- 修改别人标注好的数据集xml文件,使用别人的数据集训练自己的网络
- 使用ImageNet在faster-rcnn上训练自己的分类网络
- 使用tf-slim的inception_resnet_v2预训练模型进行图像分类
- hellow ML(TensorFlow&神经网络模式分类)
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-1.制作自己的数据集
- FCN网络的训练——以SIFT-Flow 数据集为例
- Caffe windows下入门级别的从编译到训练然后到分类(用python接口)制作自己的数据和训练网络(三)
- caffe学习笔记(五)--使用自己的数据集第一次进行训练