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 相关文章推荐
Python中的with...as用法介绍
May 28 Python
用python写的一个wordpress的采集程序
Feb 27 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
基于python实现简单日历
Jul 28 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
python实现多张图片拼接成大图
Jan 15 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
Python和Go语言的区别总结
Feb 20 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
django日志默认打印request请求信息的方法示例
May 17 Python
python3爬虫中多线程的优势总结
Nov 24 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时间戳与日期之间转换的实例介绍
2013/04/19 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
php实现websocket实时消息推送
2018/03/30 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
下载糗事百科的内容_python版
2008/12/07 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
软件测试面试题
2014/01/05 面试题
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
西安兵马俑导游词
2015/02/02 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
Python IO文件管理的具体使用
2022/03/20 Python
索尼ICF-36收音机评测
2022/04/30 无线电