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实现数据导出到excel的示例--普通格式
May 03 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
pytorch使用Variable实现线性回归
May 21 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
pycharm永久激活超详细教程
Oct 29 Python
python RSA加密的示例
Dec 09 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
详解Flask开发技巧之异常处理
Jun 15 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 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
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
2009/12/16 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
PHP数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
js实现图片粘贴上传到服务器并展示的实例
2017/11/08 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python实现发送邮件及附件功能
2021/03/02 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python API自动化框架总结
2019/11/12 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
交通事故调解协议书
2014/04/16 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
2015年化验员工作总结
2015/04/10 职场文书
中学校园广播稿
2015/08/18 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python