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将人民币转换大写的脚本代码
Feb 10 Python
python简单实现基于SSL的IRC bot实例
Jun 15 Python
Python多线程和队列操作实例
Jun 21 Python
快速入门python学习笔记
Dec 06 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
Python numpy 点数组去重的实例
Apr 18 Python
anaconda如何查看并管理python环境
Jul 05 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
Jan 03 Python
在python3.64中安装pyinstaller库的方法步骤
Jun 02 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
CI框架给视图添加动态数据
2014/12/01 PHP
PHP整合PayPal支付
2015/06/11 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
列表内容的选择
2006/06/30 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
详解Python3中字符串中的数字提取方法
2017/01/14 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
Python判断有效的数独算法示例
2019/02/23 Python
详解Python 解压缩文件
2019/04/09 Python
Python中的延迟绑定原理详解
2019/10/11 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python中itertools的用法详解
2020/02/07 Python
Python lambda表达式原理及用法解析
2020/08/18 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
平面设计自荐信
2013/10/07 职场文书
小学红领巾中秋节广播稿
2014/01/13 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
关于运动会的广播稿
2014/09/22 职场文书
党员思想汇报材料
2014/12/19 职场文书
成本会计岗位职责
2015/02/03 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
写给同事的离职感言
2015/08/04 职场文书