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实现的简单抽奖系统实例
May 22 Python
python3中set(集合)的语法总结分享
Mar 24 Python
Python MD5加密实例详解
Aug 02 Python
Python面向对象编程基础解析(二)
Oct 26 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
Python实现为PDF去除水印的示例代码
Apr 03 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更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
Python优秀开源项目Rich源码解析的流程分析
2020/07/06 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
python计算auc的方法
2020/09/09 Python
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
学雷锋演讲稿
2014/03/04 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
消防隐患整改通知书
2015/04/22 职场文书
廉政承诺书2015
2015/04/28 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android