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 16 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
Python实现批量下载文件
May 17 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
Python读取properties配置文件操作示例
Mar 29 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
python中dict使用方法详解
Jul 17 Python
浅析python redis的连接及相关操作
Nov 07 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
python 利用panda 实现列联表(交叉表)
Feb 06 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php调用shell的方法
2014/11/05 PHP
java模拟PHP的pack和unpack类
2016/04/13 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
js 自定义个性下拉选择框示例
2013/08/20 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
2020/04/24 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
Ajax的优点和缺点
2014/11/21 面试题
《天安门广场》教学反思
2014/04/23 职场文书
五年级学生期末评语
2014/12/26 职场文书
二手房购房意向书
2015/05/09 职场文书
初中生物教学随笔
2015/08/15 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android