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编写一个模仿CPU工作的程序
Apr 16 Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
python列表生成式与列表生成器的使用
Feb 23 Python
python实现小球弹跳效果
May 10 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
Django Auth用户认证组件实现代码
Oct 13 Python
Python实现手势识别
Oct 21 Python
python3中布局背景颜色代码分析
Dec 01 Python
浅谈python中的多态
Jun 15 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 _autoload自动加载类与机制分析
2012/02/10 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
jquery replace方法去空格
2017/05/08 jQuery
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Python with用法实例
2015/04/14 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
matplotlib交互式数据光标mpldatacursor的实现
2021/02/03 Python
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
政府四风问题整改措施
2014/10/04 职场文书
先进个人评语大全
2015/01/04 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
KTV员工管理制度
2015/08/06 职场文书
Python基础之进程详解
2021/05/21 Python
Python中可变和不可变对象的深入讲解
2021/08/02 Python
简述Java中throw-throws异常抛出
2021/08/07 Java/Android
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技