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中的多线程编程
Apr 09 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
一个基于flask的web应用诞生(1)
Apr 11 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 Python
python实现控制COM口的示例
Jul 03 Python
python pygame实现球球大作战
Nov 25 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 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实现保存submit内容之后禁止刷新
2014/03/19 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
jQuery实现评论模块
2020/08/19 jQuery
使用Vue实现一个树组件的示例
2020/11/06 Javascript
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
zooplus波兰:在线宠物店
2019/07/21 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
公司培训欢迎词
2014/01/10 职场文书
小学安全教育材料
2014/02/17 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
2015年考研复习计划
2015/01/19 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
道歉的话语大全
2015/05/12 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
决心书格式范文
2015/09/23 职场文书
Flask response响应的具体使用
2021/07/15 Python