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程序设计入门(1)基本语法简介
Jun 13 Python
Python 中 list 的各项操作技巧
Apr 13 Python
教你学会使用Python正则表达式
Sep 07 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
python按比例随机切分数据的实现
Jul 11 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
Python图像识别+KNN求解数独的实现
Nov 13 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
总结Pyinstaller打包的高级用法
Jun 28 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处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
Yii框架实现多数据库配置和操作的方法
2017/05/25 PHP
Javascript中的数学函数
2007/04/04 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
Python中encode()方法的使用简介
2015/05/18 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
python中while和for的区别总结
2019/06/28 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
大学生求职自荐信
2013/12/12 职场文书
追悼会上的答谢词
2014/01/10 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
教师个人自我评价范文
2014/04/13 职场文书
求职信怎么写
2014/05/23 职场文书
2014年就业工作总结
2014/11/26 职场文书
交警失职检讨书
2015/01/26 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
2015年物资管理工作总结
2015/05/20 职场文书
培养联系人考察意见
2015/06/01 职场文书
举起手来观后感
2015/06/09 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书