您的位置:首页 > 理论基础 > 计算机网络

使用TensorFlow slim文件夹当中的inception_v4网络训练自己的分类数据集

2018-09-01 22:00 1061 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shiheyingzhe/article/details/82291199

使用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模型的运行、可视化、导出和使用

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐