win10使用Inception v3进行图像分类TensorFlow学习记录

win10中构建TensorFlow环境:

下载并安装anaconda环境,具体步骤这里有: spark2.3在Windows10当中来搭建python3的使用环境pyspark,只需要看anaconda的安装方法就行。安装好以后使用快捷键Ctrl+R打开运行,输入cmd打开命令行工具,输入conda install tensorflow命令安装TensorFlow,需要键入y确定下载安装。

下载训练代码和分类代码:

从GitHub中googlecodelabs/tensorflow-for-poets-2中下载Zip包,然后解压到本地,只需要用到scripts文件里面的retrain.py和label_image.py文件。retrain.py文件是使用已经构建好的TensorFlow图结构文件classify_image_graph_def.pb,来训练顶层。训练好以后的图结构会保存起来,训练的图标签也会保存起来,然后可以用来进行图像的分类。label_image.py文件是输入一张图片然后给出分类结果。代码文件的注释中都有说明运行代码的方式,这里具体讲解下。

下载图像文件:

需要满足有主目录,次级目录名称必须是分类标签,例如daisy、dandelion、roses、sunflowers、tulips,这主要是因为retrain.py文件是使用次级目录名称作为分类标签的,不需要额外的传入分类字典。要下载的这个图像文件包是满足这个要求的,从链接中下载http://download.tensorflow.org/example_images/flower_photos.tgz,然后解压出来,这里解压的目录是F:\


运行Windows Powershell开始训练:

进入代码解压以后的目录,F:\tensorflow-for-poets-2-master\scripts
然后按住Shift键不动单机鼠标右键,点击 在此处打开Powershell 窗口(S)


运行retrain.py文件,在Powershell中键入命令 python retrain.py --image_dir  F:\flower_photos,这里传入的路径是图像文件解压以后的主目录,程序运行最开始检测到已经构建好的TensorFlow图结构文件classify_image_graph_def.pb不存在,就会创建目录,然后自动下载这个文件


训练过程中出现的是这样的画面


等待训练完以后,会新生成一个文件夹tmp,里面有训练好的TensorFlow图结构文件output_graph.pb,还有一个类标签的TXT文件output_labels.txt,这些文件在对图像分类的时候需要用到


运行label_image.py文件,不关闭Powershell,接着运行命令

python label_image.py --image F:\flower_photos\dandelion\141935731_d26d600f4f_m.jpg  --graph F:\tmp\output_graph.pb --labels F:\tmp\output_labels.txt 

--image是图像文件的路径,--graph是训练好的TensorFlow图结构文件路径,--labels是图像标签文件的路径

返回错误KeyError: "The name 'import/input' refers to an Operation not in the graph."
这里需要修改label_image.py文件里面的input_layer参数,将input_layer = "input"修改为input_layer = "Mul"

重新运行命令,返回错误ValueError: Cannot feed value of shape (1, 224, 224, 3) for Tensor 'import/Mul:0', which has shape '(1, 299, 299, 3)',这里修改参数为input_height =299,input_width =299

然后再次运行命令得

就得到了输出结果

Evaluation time (1-image): 1.960s

roses (score=0.98647)
tulips (score=0.01164)
sunflowers (score=0.00151)
daisy (score=0.00021)
dandelion (score=0.00019)

还可以在最后增加几行代码输出对应的图片

import matplotlib.pyplot as plt
from skimage import io
img = io.imread(file_name)
plt.imshow(img)
plt.axis('off')
plt.show()
参考内容:
TensorFlow学习笔记:使用Inception v3进行图像分类
Tensorflow for Windows 10 (GPU) 入门笔记
https://github.com/googlecodelabs/tensorflow-for-poets-2

深度学习卷积神经网络——经典网络GoogLeNet(Inception V3)网络的搭建与实现




猜你喜欢

转载自blog.csdn.net/shiheyingzhe/article/details/80783305