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 相关文章推荐
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
详解Python3 pickle模块用法
Sep 16 Python
pytorch常见的Tensor类型详解
Jan 15 Python
python中使用input()函数获取用户输入值方式
May 03 Python
浅谈Python 参数与变量
Jun 20 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 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
Smarty安装配置方法
2008/04/10 PHP
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php设计模式小结
2013/02/15 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP文件与目录操作示例
2016/12/24 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
php中如何执行linux命令详解
2018/11/06 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[02:05]2014DOTA2国际邀请赛 BBC外卡赛赛后总结
2014/07/09 DOTA
Python递归函数定义与用法示例
2017/06/02 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
单位工作证明书格式
2014/10/04 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android