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 相关文章推荐
下载安装setuptool和pip linux安装pip    
Jan 24 Python
python使用range函数计算一组数和的方法
May 07 Python
Django Highcharts制作图表
Aug 27 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
Oct 18 Python
Python数据分析之绘图和可视化详解
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
php项目打包方法
2008/02/18 PHP
学习php中的正则表达式
2014/08/17 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
python创建关联数组(字典)的方法
2015/05/04 Python
利用Python破解验证码实例详解
2016/12/08 Python
Python编写登陆接口的方法
2017/07/10 Python
关于python的list相关知识(推荐)
2017/08/30 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
浅析python的Lambda表达式
2019/02/27 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
python 实现二维列表转置
2019/12/02 Python
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
简历的自我评价
2014/02/03 职场文书
工程专业应届生求职信
2014/02/19 职场文书
硕士论文致谢范文
2015/05/14 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js