Tensorflow模型实现预测或识别单张图片


Posted in Python onJuly 19, 2019

利用Tensorflow训练好的模型,图片进行预测和识别,并输出相应的标签和预测概率。

如果想要多张图片,可以进行批次加载和预测,这里仅用单张图片进行演示。

模型文件:

Tensorflow模型实现预测或识别单张图片

预测图片:

Tensorflow模型实现预测或识别单张图片

这里直接贴代码,都有注释,应该很好理解

import tensorflow as tf
import inference
 
image_size = 128 # 输入层图片大小
 
# 模型保存的路径和文件名
MODEL_SAVE_PATH = "model/"
MODEL_NAME = "model.ckpt"
 
# 加载需要预测的图片
image_data = tf.gfile.FastGFile("./data/test/d.png", 'rb').read()
 
# 将图片格式转换成我们所需要的矩阵格式,第二个参数为1,代表1维
decode_image = tf.image.decode_png(image_data, 1)
 
# 再把数据格式转换成能运算的float32
decode_image = tf.image.convert_image_dtype(decode_image, tf.float32)
 
# 转换成指定的输入格式形状
image = tf.reshape(decode_image, [-1, image_size, image_size, 1])
 
# 定义预测结果为logit值最大的分类,这里是前向传播算法,也就是卷积层、池化层、全连接层那部分
test_logit = inference.inference(image, train=False, regularizer=None)
 
# 利用softmax来获取概率
probabilities = tf.nn.softmax(test_logit)
 
# 获取最大概率的标签位置
correct_prediction = tf.argmax(test_logit, 1)
 
# 定义Savar类
saver = tf.train.Saver()
 
with tf.Session() as sess:
  sess.run((tf.global_variables_initializer(), tf.local_variables_initializer()))
 
  # 加载检查点状态,这里会获取最新训练好的模型
  ckpt = tf.train.get_checkpoint_state(MODEL_SAVE_PATH)
  if ckpt and ckpt.model_checkpoint_path:
    # 加载模型和训练好的参数
    saver.restore(sess, ckpt.model_checkpoint_path)
    print("加载模型成功:" + ckpt.model_checkpoint_path)
 
    # 通过文件名得到模型保存时迭代的轮数.格式:model.ckpt-6000.data-00000-of-00001
    global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1]
 
    # 获取预测结果
    probabilities, label = sess.run([probabilities, correct_prediction])
 
    # 获取此标签的概率
    probability = probabilities[0][label]
 
    print("After %s training step(s),validation label = %d, has %g probability" % (global_step, label, probability))
  else:
    print("模型加载失败!" + ckpt.model_checkpoint_path)

运行输出结果:

Tensorflow模型实现预测或识别单张图片

(标签为3,概率为0.984478)

标签字典:

Tensorflow模型实现预测或识别单张图片

3对应小写d,识别正确。

其他的图片的预测结果:

预测图片1:

Tensorflow模型实现预测或识别单张图片

Tensorflow模型实现预测或识别单张图片

标签字典:

Tensorflow模型实现预测或识别单张图片

图片1,识别结果为1,可能概率0.993034

识别结果还是挺好看的,不知道是不是过拟合了,还是迭代次数不够多,还需要调整调整。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
Python写的服务监控程序实例
Jan 31 Python
python读取oracle函数返回值
Jul 18 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python实现最大子序和(分治+动态规划)
Jul 05 Python
Python numpy数组转置与轴变换
Nov 15 Python
在Django中实现添加user到group并查看
Nov 18 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
Python range与enumerate函数区别解析
Feb 28 Python
Python列表倒序输出及其效率详解
Mar 04 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
python django下载大的csv文件实现方法分析
Jul 19 #Python
python使用flask与js进行前后台交互的例子
Jul 19 #Python
Django 模型类(models.py)的定义详解
Jul 19 #Python
Tensorflow实现神经网络拟合线性回归
Jul 19 #Python
使用TensorFlow实现简单线性回归模型
Jul 19 #Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 #Python
简单了解django缓存方式及配置
Jul 19 #Python
You might like
强烈推荐:php.ini中文版(1)
2006/10/09 PHP
php修改时间格式的代码
2011/05/29 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
json2.js的初步学习与了解
2011/10/06 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
jQuery实现HTML表格单元格的合并功能
2016/04/06 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
Python中的自定义函数学习笔记
2014/09/23 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python类装饰器实现方法详解
2018/12/21 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
html5时钟实现代码
2010/10/22 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
比利时家具购买网站:Home24
2019/01/03 全球购物
创业计划书——互联网商机
2014/01/12 职场文书
员工工作表现评语
2014/04/26 职场文书
校园安全标语
2014/06/07 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
整改落实情况汇报材料
2014/10/29 职场文书