本文主要介绍了如何使用TensorFlow环境运行一个最基本的图像分类器(Win10系统)。源码地址https://github.com/sourcedexter/tfClassifier/tree/master/image_classification

(这个大神好像改名了,原来叫akshaypai来着)

一.基础概念介绍

1.物体分类的思想

物体分类,也就是训练系统识别各个物体,如猫咪、狗狗、汽车等。TensorFlow是谷歌开发出的人工智能学习系统,相当于我们的运行环境。

2.神经网络与Inception v3体系结构模型

神经网络示意图如下:

通俗了讲,就是将若干个输入,进行若干次操作(线性或者非线性),最后输出结果。Inception v3模型是谷歌发布的一个深层卷积网络模型。我们使用的retrain_new.py脚本就是使用了Inception v3模型进行一个迁移学习。

3.训练集、测试集和验证集

训练集用来训练模型,验证集用来验证模型是否进行了过拟合,测试集用来测试模型的准确程度。三种图片集的比例会对准确度产生影响。

4.学习速率

不同的学习速率会导致不同的结果。如果速率过大,会导致准确率在训练的过程中不断上下跳动,如果速率过小会导致在训练结束前无法到达预期准确度。

二.环境搭建

1.Python环境搭建

具体的python搭建细节可以自行百度。参考链接:

https://blog.csdn.net/lyj_viviani/article/details/51763101

这里要注意一下版本,因为要对应后文的cuDnn库与cuda的版本。(我用的是python 3.6.4)

2.TensorFlow环境搭建(gpu)

(1)直接pip安装。命令:

pip install tensorflow-gpu

这样就安装好TensorFlow了,但是我们还需要GPU加速,所以还需要安装cuda和cuDnn(专门为deep learning准备的加速库)。

(2)cuda安装

cuda v8.0安装包下载:https://developer.nvidia.com/cuda-downloads

进行如下选择:

下载完后正常安装就可以了。

(3)cuDnn库下载

下载链接:https://developer.nvidia.com/rdp/cudnn-archive

我下载的是这个版本(cuDNN v7.0.5),这个版本要对应好cuda的版本。

下载完后解压缩,出现如下文件夹结构:

然后将这三个文件夹下的文件分别拷贝到cuda对应的文件夹下面就行了。

到这里还不能完整的运行,还需要配置一下环境变量:cuda安装完成后默认的环境变量配置不对,CUDA_PATH是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0,但是这样不能直接访问到bin和lib\x64下的程序包,在path中加上这两个路径即可。

(4)测试

用如下代码测试:

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()

三.基本使用

1.数据集的收集与创建

我用的是2018全球AI挑战赛的数据集。链接:

https://challenger.ai/datasets/lad2018

下载完后,将所有文件夹都放在一个文件夹下(我自己创建了一个叫DataSet),结构如下:

文件夹的名字就是最后输出的分类的结果。
每一个文件夹下都是图片(不能再有子文件夹),即:

2.训练模型

训练模型使用retrain_new.py脚本。在命令行运行,命令格式如下:

python retrain_new.py --model_dir 存放classify_image_graph_def.pb的路径 --image_dir 刚才的创建的DataSet的路径 --output_graph 产生的,pb文件的存放路径 --output_labels 产生的output_labels.txt的 存放路径 --how_many_training_steps 训练步数 --learning_rate 学习速率 --testing_percentage 测试集比例 --validation_percentage 验证集比例

示例命令:

python retrain_new.py --model_dir E:\tfclassifier\image_classification\inception --image_dir E:\tfclassifier\DataSet --output_graph E:\tfclassifier\image_classification\output_dir\output_graph.pb  --output_labels E:\tfclassifier\image_classification\output_dir\output_labels.txt --how_many_training_steps 500 --learning_rate 0.3 --testing_percentage 10 --validation_percentage 10

说明:

model_dir参数:指定了model的存放位置,就是我们的inception文件夹

image_dir参数:指定了数据集的位置

output_graph参数:产生的output_graph.pb文件的存放路径(后面要用)

output_labels 参数:产生的output_labels.txt的存放路径(后面要用)

how_many_training_steps参数:训练步数,和学习速率配合调整(我用的500)

learning_rate参数:学习速率,和训练步数配合调整(我用的0.3,常用的有0.001,0.01,0.1,0.3,1,3,可自己调整尝试一下)

testing_percentage参数:测试集比例

validation_percentage参数:验证集比例

注意:训练会在根目录下生成一个tmp文件夹,存放相关文件,即:

3.测试模型

核心的文件是output_graph.pb文件(我们训练所产生的图,是一个二进制文件)和output_labels.txt文件。

使用retrain_model_classifier.py脚本来测试模型。命令格式如下:

E:

cd E:\tfclassifier\image_classification(进入retrain_model_classifier.py脚本所在的目录)

python retrain_model_classifier.py 要识别图片的路径

例如:

python retrain_model_classifier.py D:\test2\testPic.jpg

然后会看到一些版本信息,和输出结果(红框部分):

四.遇到的问题以及解答

1.版本对应问题

Python版本,cuda版本和cuDNN版本都是对应的,如果结果中出现了乱码,很大概率是版本的问题。

2.带参数的python脚本编写与运行

想让python脚本带参数,可以在python脚本的末尾添加如下格式的代码:

运行时需要在python xxx.py后加上“--image_dir 参数”就可以了。

3.测试脚本的调整

要不断训练、测试,不断调整参数,直到训练快要结束的时候,验证比例达到稳定,并且在90以上,我们才认为系统较为完善。

五.参考链接:

深度学习动手入门:GitHub上四个超棒的TensorFlow开源项目

http://www.techweb.com.cn/news/2017-07-31/2566452.shtml

Win10 TensorFlow(gpu)安装详解

https://blog.csdn.net/sb19931201/article/details/53648615

用Inception-V3模型进行图像分类

https://blog.csdn.net/xingwei_09/article/details/79152796

谷歌机器学习速成课程

https://developers.google.cn/machine-learning/crash-course/prereqs-and-prework

TensorFlow图像识别(物体分类)入门教程的更多相关文章

  1. TensorFlow和深度学习入门教程(TensorFlow and deep learning without a PhD)【转】

    本文转载自:https://blog.csdn.net/xummgg/article/details/69214366 前言 上月导师在组会上交我们用tensorflow写深度学习和卷积神经网络,并把 ...

  2. Tensorflow 2.x入门教程

    前言 至于为什么写这个教程,首先是为了自己学习做个记录,其次是因为Tensorflow的API写的很好,但是他的教程写的太乱了,不适合新手学习.tensorflow 1 和tensorflow 2 有 ...

  3. TensorFlow 中文资源全集,官方网站,安装教程,入门教程,实战项目,学习路径。

    Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...

  4. TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。

    Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习路径推荐: 官方网站,初步了解. 安装教程,安装之后跑起来. 入门教程,简单的模型学习和运行. 实战项目, ...

  5. 【OpenCV入门教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    http://blog.csdn.net/poem_qianmo/article/details/26977557 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  6. GAN网络之入门教程(四)之基于DCGAN动漫头像生成

    目录 使用前准备 数据集 定义参数 构建网络 构建G网络 构建D网络 构建GAN网络 关于GAN的小trick 训练 总结 参考 这一篇博客以代码为主,主要是来介绍如果使用keras构建一个DCGAN ...

  7. caffe_实战之两个简单的例子(物体分类和人脸检测)

    一.物体分类: 这里使用的是caffe官网中自带的例子,我这里主要是对代码的解释~ 首先导入一些必要的库: import caffe import numpy as np import matplot ...

  8. WebGL入门教程(五)-webgl纹理

    前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...

  9. Objective-C 30分钟入门教程

    Objective-C 30分钟入门教程 我第一次看OC觉得这个语言的语法有些怪异,为什么充满了@符号,[]符号,函数调用没有()这个,但是面向对象的高级语言也不外乎类,接口,多态,封装,继承等概念. ...

随机推荐

  1. 解压版中文乱码问题MYSQL中文乱码

    安装的是解压版的MYSQL,具体配置参考:https://jingyan.baidu.com/article/9c69d48f85032f13c9024e15.html . 1:解压之后copy 一个 ...

  2. php 把一个一维数组的值依次赋值到二维数组中的每一项

    Array( [0] => 1 [1] => 4 [2] => 2 [3] => 6 ) Array( [0] => Array ( [field_name] => ...

  3. 8、JVM--虚拟机字节码执行引擎

    8.1.概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上 ...

  4. kali 2016.2安装及配置

    之前安装过kali,现在换了台电脑重新安装一遍,顺便记录下来,因为面向新手所以会很详(luo)细(suo) 安装: 首先到官网去下载镜像文件:https://www.kali.org/download ...

  5. pytorch 绘制训练曲线;服务器端训练,本地浏览器显示,本地打不开;tensorboard端口被占

    代码里面用tensorboard保存了训练的日志在logs目录里面 用tensorboard命令打开日志目录:tensorboard --logdir="./logs/" 会显示一 ...

  6. 前后端交互之封装Ajax+SpringMVC源码分析

    为什么需要封装呢?因为用的多,我想将其封装成函数,当我想用它时,只需将那个函数对应的js文件引入即可,而不要重复写很多相同代码,利于开发效率的提高. 无论是$.ajax或$.post.$.get等,在 ...

  7. C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果

    很酷的效果,很值得好好去学习的哈. 重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命 ...

  8. JAVA框架 Mybaits 输入和输出映射

    一.输入映射 当前端传来的参数,比较复杂,比如说用户名称.订单单号.账号信息等等.后端有可能有多个projo类对应这些信息.我们需要把这些的projo类封装成一个类似一个vo类. 通过设置字段形式关联 ...

  9. 【chrome】安装证书并配置为受信任网站连接(windows)

    当出现网站连接非私密连接不受信任时,可添加证书crt文件到系统证书里设置为受信任 1.chrome设置中, 高级-- 管理证书 2.选择  受信任的根证书颁发机构 -- 导入 3.下一步  找到所需要 ...

  10. 20155307实验八 《网络对抗》 Web基础

    20155307实验八 <网络对抗> Web基础 实验过程 Web前端:HTML 使用netstat -aptn查看80端口是否被占用(上次实验设置为Apache使用80端口),如果被占用 ...