本文是基于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文件:
2.创建数据集描述符:Creating a TF-Slim Dataset Descriptor.
对于flower的tfrecord格式数据,官方已提供好数据集描述符:
如下选中的flower.py文件:
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
训练完成的结果:
训练后生成的文件(存的路径:train_dir):
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
执行结果:
最后一行的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):
python label_image.py ^
-image=C:\Users\lab2_Zhemin\Yeally\6my_slim\test\0.jpg ^
--input_layer=input ^
--output_layer=InceptionV3/Predictions/Reshape_1 ^
输出结果:
分类正确
二、对自己的图片数据进行图像识别
后续更新。。。