图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint

本文是基于windows系统,并主要参考:https://github.com/tensorflow/models/tree/master/research/slim。

要完成自己图片的识别必须使用整个slim文件夹

slim下载链接,先需要下载整个模型包,然后在里面找到slim文件夹:

一、对于官方提供的flower数据集进行图像识别

以下所有程序都在slim文件夹下进行

1. 首先用官方提供的代码下载flower数据集并生成tfrecord格式文件和label文件:

在windows下编写批处理文件(.bat后缀结尾的文本文档):download_and_convert_flower.bat

python download_and_convert_data.py ^  
--dataset_name=flowers ^  
--dataset_dir="C:\Users\lab2_Zhemin\Yeally\6my_slim\my_data\flower_tfrecord" 

打开Anaconda Prompt执行:

后文不再说明如何执行windows批处理文件(.bat文件)

执行后的目录结果如下,一共有10个tfrecord文件和一个label文件:

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第1张图片

2.创建数据集描述符:Creating a TF-Slim Dataset Descriptor.

对于flower的tfrecord格式数据,官方已提供好数据集描述符:

如下选中的flower.py文件:

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第2张图片

3.  使用train_image_classifier.py(这个脚本在slim文件夹下)训练数据

python train_image_classifier.py ^  
--train_dir=C:/Users/lab2_Zhemin/Yeally/6my_slim/train_official_flower/train_log ^  
--dataset_name=flowers ^  
--dataset_split_name=train ^  
--dataset_dir=C:/Users/lab2_Zhemin/Yeally/6my_slim/train_official_flower/dataset/flowers ^  
--model_name=inception_v3 ^  
--checkpoint_path=C:/Users/lab2_Zhemin/Yeally/6my_slim/checkpoint/inception_v3/inception_v3.ckpt ^  
--checkpoint_exclude_scopes=InceptionV3/Logits,InceptionV3/AuxLogits ^  
--trainable_scopes=InceptionV3/Logits,InceptionV3/AuxLogits ^  
--max_number_of_steps=3000 

训练完成的结果:

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第3张图片

训练后生成的文件(存的路径:train_dir):

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第4张图片

4 评估模型

python eval_image_classifier.py ^  
--checkpoint_path=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\train_log ^  
--eval_dir=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\eva_log ^  
--dataset_name=flowers ^  
--dataset_split_name=validation ^  
--dataset_dir=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\dataset\flowers ^  
--model_name=inception_v3 

执行结果:

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第5张图片

最后一行的eval/Accuracy【0.915】表示样本数据的正确率(top1)

生成的文件:

6.生成模型图:

python export_inference_graph.py ^  
--alsologtostderr ^  
--model_name=inception_v3 ^  
--output_file=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\output_graph\inception_v3_graph.pb ^  
-dataset_name flowers  

目录下生成的文件:

7.上一步中生成的图只是一个结构框架,不包含参数信息,要生成包含参数信息的图需执行如下批处理文件(冻结图):

python freeze_graph.py ^  
--input_graph=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\output_graph\inception_v3_graph.pb ^  
--input_checkpoint=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\train_log\model.ckpt-3000 ^  
--input_binary=true ^  
--output_graph=C:\Users\lab2_Zhemin\Yeally\6my_slim\train_official_flower\frozen_graph\frozen_inception_v3_flowers.pb ^  
--output_node_names=InceptionV3/Predictions/Reshape_1  

 生成的文件:

8、对生成的模型通过输入图片进行测试:

要在hub master下载 hub master,并在这个目录下找到lab_image.py文件,复制到slim文件夹下。

在网上随手下在如下图片(命名为0.jpg):

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第6张图片

python label_image.py ^  
-image=C:\Users\lab2_Zhemin\Yeally\6my_slim\test\0.jpg ^  
--input_layer=input ^  
--output_layer=InceptionV3/Predictions/Reshape_1 ^ 

 输出结果:

图像识别——通过tensorflow利用自己的图片数据训练模型——Fine-tuning a model from an existing checkpoint_第7张图片

分类正确 

二、对自己的图片数据进行图像识别

后续更新。。。

你可能感兴趣的:(深度学习,图片识别)