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 dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
Python中的Numpy矩阵操作
Aug 12 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
python 实现视频 图像帧提取
Dec 10 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 Python
python实现梯度下降算法的实例详解
Aug 17 Python
python如何提升爬虫效率
Sep 27 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
Python txt文件如何转换成字典
Nov 03 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php设计模式之单例模式代码
2016/06/11 PHP
php实现文章评论系统
2019/02/18 PHP
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
Python中input与raw_input 之间的比较
2017/08/20 Python
Python Series从0开始索引的方法
2018/11/06 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
《在山的那边》教学反思
2014/02/23 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
python常见的占位符总结及用法
2021/07/02 Python