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


Posted in Python onMarch 14, 2019

本文是Python通过TensorFlow卷积神经网络实现猫狗识别的姊妹篇,是加载上一篇训练好的模型,进行猫狗识别

本文逻辑:

  1. 我从网上下载了十几张猫和狗的图片,用于检验我们训练好的模型。
  2. 处理我们下载的图片
  3. 加载模型
  4. 将图片输入模型进行检验

代码如下:

#coding=utf-8 
import tensorflow as tf 
from PIL import Image 
import matplotlib.pyplot as plt
import input_data 
import numpy as np
import model
import os 
#从指定目录中选取一张图片 
def get_one_image(train): 
  files = os.listdir(train)
  n = len(files)
  ind = np.random.randint(0,n)
  img_dir = os.path.join(train,files[ind]) 
  image = Image.open(img_dir) 
  plt.imshow(image)
  plt.show()
  image = image.resize([208, 208]) 
  image = np.array(image)
  return image 
def evaluate_one_image(): 
 #存放的是我从百度下载的猫狗图片路径
  train = '/Users/yangyibo/GitWork/pythonLean/AI/猫狗识别/testImg/' 
  image_array = get_one_image(train) 
  with tf.Graph().as_default(): 
    BATCH_SIZE = 1 # 因为只读取一副图片 所以batch 设置为1
    N_CLASSES = 2 # 2个输出神经元,[1,0] 或者 [0,1]猫和狗的概率
    # 转化图片格式
    image = tf.cast(image_array, tf.float32) 
    # 图片标准化
    image = tf.image.per_image_standardization(image)
    # 图片原来是三维的 [208, 208, 3] 重新定义图片形状 改为一个4D 四维的 tensor
    image = tf.reshape(image, [1, 208, 208, 3]) 
    logit = model.inference(image, BATCH_SIZE, N_CLASSES) 
    # 因为 inference 的返回没有用激活函数,所以在这里对结果用softmax 激活
    logit = tf.nn.softmax(logit) 
    # 用最原始的输入数据的方式向模型输入数据 placeholder
    x = tf.placeholder(tf.float32, shape=[208, 208, 3]) 
    # 我门存放模型的路径
    logs_train_dir = '/Users/yangyibo/GitWork/pythonLean/AI/猫狗识别/saveNet/'  
    # 定义saver 
    saver = tf.train.Saver() 
    with tf.Session() as sess: 
      print("从指定的路径中加载模型。。。。")
      # 将模型加载到sess 中 
      ckpt = tf.train.get_checkpoint_state(logs_train_dir) 
      if ckpt and ckpt.model_checkpoint_path: 
        global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1] 
        saver.restore(sess, ckpt.model_checkpoint_path) 
        print('模型加载成功, 训练的步数为 %s' % global_step) 
      else: 
        print('模型加载失败,,,文件没有找到') 
      # 将图片输入到模型计算
      prediction = sess.run(logit, feed_dict={x: image_array})
      # 获取输出结果中最大概率的索引
      max_index = np.argmax(prediction) 
      if max_index==0: 
        print('猫的概率 %.6f' %prediction[:, 0]) 
      else: 
        print('狗的概率 %.6f' %prediction[:, 1]) 
# 测试
evaluate_one_image()

/Users/yangyibo/GitWork/pythonLean/AI/猫狗识别/testImg/ 存放的是我从百度下载的猫狗图片

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

执行结果:

因为从testimg 中选取图片是随机的,所以每次执行的结果不同

从指定的路径中加载模型。。。。
模型加载成功, 训练的步数为 11999
狗的概率 0.964047
[Finished in 6.8s]

代码地址:https://github.com/527515025/My-TensorFlow-tutorials/blob/master/猫狗识别/evaluateCatOrDog.py

欢迎star。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
使用python编写android截屏脚本双击运行即可
Jul 21 Python
深入解析Python中的WSGI接口
May 11 Python
python网络编程之文件下载实例分析
May 20 Python
Python中的变量和作用域详解
Jul 13 Python
快速了解Python相对导入
Jan 12 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
python每天定时运行某程序代码
Aug 16 Python
关于pymysql模块的使用以及代码详解
Sep 01 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
tensorflow 变长序列存储实例
Jan 20 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
May 03 Python
Django REST framework 限流功能的使用
Jun 24 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 #Python
python3实现钉钉消息推送的方法示例
Mar 14 #Python
详解Python做一个名片管理系统
Mar 14 #Python
在Python中使用Neo4j的方法
Mar 14 #Python
浅谈Python中eval的强大与危害
Mar 13 #Python
详解python中init方法和随机数方法
Mar 13 #Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 #Python
You might like
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
PHP SOCKET编程详解
2015/05/22 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
js实现验证码功能
2020/07/24 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
益模软件Java笔试题
2012/03/27 面试题
物流管理专业自荐信
2014/06/23 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
优秀员工演讲稿
2019/06/21 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
php png失真的原因及解决办法
2021/10/24 PHP
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python