首页 > 编程 > Python > 正文

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

2019-11-25 12:18:15
字体:
来源:转载
供稿:网友

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

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

模型文件:

预测图片:

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

import tensorflow as tfimport 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) # 再把数据格式转换成能运算的float32decode_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

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表