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)

运行输出结果:

(标签为3,概率为0.984478)

标签字典:

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

其他的图片的预测结果:

预测图片1:

标签字典:

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

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

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

(0)

相关推荐

  • TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片

    本文是Python通过TensorFlow卷积神经网络实现猫狗识别的姊妹篇,是加载上一篇训练好的模型,进行猫狗识别 本文逻辑: 我从网上下载了十几张猫和狗的图片,用于检验我们训练好的模型. 处理我们下载的图片 加载模型 将图片输入模型进行检验 代码如下: #coding=utf-8 import tensorflow as tf from PIL import Image import matplotlib.pyplot as plt import input_data import numpy

  • python tensorflow学习之识别单张图片的实现的示例

    假设我们已经安装好了tensorflow. 一般在安装好tensorflow后,都会跑它的demo,而最常见的demo就是手写数字识别的demo,也就是mnist数据集. 然而我们仅仅是跑了它的demo而已,可能很多人会有和我一样的想法,如果拿来一张数字图片,如何应用我们训练的网络模型来识别出来,下面我们就以mnist的demo来实现它. 1.训练模型 首先我们要训练好模型,并且把模型model.ckpt保存到指定文件夹 saver = tf.train.Saver() saver.save(s

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

    利用Tensorflow训练好的模型,图片进行预测和识别,并输出相应的标签和预测概率. 如果想要多张图片,可以进行批次加载和预测,这里仅用单张图片进行演示. 模型文件: 预测图片: 这里直接贴代码,都有注释,应该很好理解 import tensorflow as tf import inference image_size = 128 # 输入层图片大小 # 模型保存的路径和文件名 MODEL_SAVE_PATH = "model/" MODEL_NAME = "model.

  • python神经网络tensorflow利用训练好的模型进行预测

    目录 学习前言 载入模型思路 实现代码 学习前言 在神经网络学习中slim常用函数与如何训练.保存模型文章里已经讲述了如何使用slim训练出来一个模型,这篇文章将会讲述如何预测. 载入模型思路 载入模型的过程主要分为以下四步: 1.建立会话Session: 2.将img_input的placeholder传入网络,建立网络结构: 3.初始化所有变量: 4.利用saver对象restore载入所有参数. 这里要注意的重点是,在利用saver对象restore载入所有参数之前,必须要建立网络结构,因

  • python之tensorflow手把手实例讲解斑马线识别实现

    一,斑马线的数据集 数据集的构成: test train zebra corssing:56 zebra corssing:168 other:54 other:164 二,代码部分 1.导包 import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator import numpy as np import matplotlib.pyplot as plt import ker

  • python实现识别相似图片小结

    文章简介 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简单几句就说清,所以本文只作基本算法的科普向. 如有错误,请多包涵和多多指教. 参考的文章和图片来源会在底部一一列出. 以及本篇文章所用的代码都会在底下给出github地址. 安装相关库 python用作图像处理的相关库主要有openCV(C++编写,提供了python语言的接口),PIL,

  • TensorFlow模型保存/载入的两种方法

    TensorFlow 模型保存/载入 我们在上线使用一个算法模型的时候,首先必须将已经训练好的模型保存下来.tensorflow保存模型的方式与sklearn不太一样,sklearn很直接,一个sklearn.externals.joblib的dump与load方法就可以保存与载入使用.而tensorflow由于有graph, operation 这些概念,保存与载入模型稍显麻烦. 一.基本方法 网上搜索tensorflow模型保存,搜到的大多是基本的方法.即 保存 定义变量 使用saver.s

  • 浅谈Tensorflow模型的保存与恢复加载

    近期做了一些反垃圾的工作,除了使用常用的规则匹配过滤等手段,也采用了一些机器学习方法进行分类预测.我们使用TensorFlow进行模型的训练,训练好的模型需要保存,预测阶段我们需要将模型进行加载还原使用,这就涉及TensorFlow模型的保存与恢复加载. 总结一下Tensorflow常用的模型保存方式. 保存checkpoint模型文件(.ckpt) 首先,TensorFlow提供了一个非常方便的api,tf.train.Saver()来保存和还原一个机器学习模型. 模型保存 使用tf.trai

  • 详解如何从TensorFlow的mnist数据集导出手写体数字图片

    在TensorFlow的官方入门课程中,多次用到mnist数据集. mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-ubyte的二进制文件. 如果我们想要知道大名鼎鼎的mnist手写体数字都长什么样子,就需要从mnist数据集中导出手写体数字图片.了解这些手写体的总体形状,也有助于加深我们对TensorFlow入门课程的理解. 下面先给出通过TensorFlow api接口导出mnist手写体数字图片的python代码,再对代

  • 解决tensorflow模型参数保存和加载的问题

    终于找到bug原因!记一下:还是不熟悉平台的原因造成的! Q:为什么会出现两个模型对象在同一个文件中一起运行,当直接读取他们分开运行时训练出来的模型会出错,而且总是有一个正确,一个读取错误? 而 直接在同一个文件又训练又重新加载模型预测不出错,而且更诡异的是此时用分文件里的对象加载模型不会出错? model.py,里面含有 ModelV 和 ModelP,另外还有 modelP.py 和 modelV.py 分别只含有 ModelP 和 ModeV 这两个对象,先使用 modelP.py 和 m

  • 关于Tensorflow 模型持久化详解

    当我们使用 tensorflow 训练神经网络的时候,模型持久化对于我们的训练有很重要的作用. 如果我们的神经网络比较复杂,训练数据比较多,那么我们的模型训练就会耗时很长,如果在训练过程中出现某些不可预计的错误,导致我们的训练意外终止,那么我们将会前功尽弃.为了避免这个问题,我们就可以通过模型持久化(保存为CKPT格式)来暂存我们训练过程中的临时数据. 如果我们训练的模型需要提供给用户做离线的预测,那么我们只需要前向传播的过程,只需得到预测值就可以了,这个时候我们就可以通过模型持久化(保存为PB

随机推荐