贴一张自己画的思维导图 

数据集准备 
kaggle猫狗大战数据集(训练),微软的不需要FQ

  • 12500张cat
  • 12500张dog

生成图片路径和标签的List

step1:获取D:/Study/Python/Projects/Cats_vs_Dogs/data/Cat下所有的猫图路径名,存放到cats中,同时贴上标签0,存放到label_cats中。狗图同理。

train_dir = 'D:/Study/Python/Projects/Cats_vs_Dogs/data'def get_files(file_dir): for file in os.listdir(file_dir+'/Cat'): cats.append(file_dir +'/Cat'+'/'+ file) label_cats.append(0) for file in os.listdir(file_dir+'/Dog'): dogs.append(file_dir +'/Dog'+'/'+file) label_dogs.append(1)

step2:对生成的图片路径和标签List做打乱处理

    #把cat和dog合起来组成一个list(img和lab)image_list = np.hstack((cats, dogs))label_list = np.hstack((label_cats, label_dogs))#利用shuffle打乱顺序temp = np.array([image_list, label_list]) temp = temp.transpose() np.random.shuffle(temp) #从打乱的temp中再取出list(img和lab) image_list = list(temp[:, 0]) label_list = list(temp[:, 1]) label_list = [int(i) for i in label_list]

生成Batch

step1:将上面生成的List传入get_batch() ,转换类型,产生一个输入队列queue,因为img和lab是分开的,所以使用tf.train.slice_input_producer(),然后用tf.read_file()从队列中读取图像

  • image_W, image_H, :设置好固定的图像高度和宽度
  • 设置batch_size:每个batch要放多少张图片
  • capacity:一个队列最大多少
def get_batch(image, label, image_W, image_H, batch_size, capacity):#转换类型 image = tf.cast(image, tf.string) label = tf.cast(label, tf.int32) # make an input queue input_queue = tf.train.slice_input_producer([image, label]) label = input_queue[1] image_contents = tf.read_file(input_queue[0]) #read img from a queue

step2:将图像解码,不同类型的图像不能混在一起,要么只用jpeg,要么只用png等。

image = tf.image.decode_jpeg(image_contents, channels=3) 

step3:数据预处理,对图像进行旋转、缩放、裁剪、归一化等操作,让计算出的模型更健壮。


image = tf.image.resize_image_with_crop_or_pad(image, image_W, image_H)image = tf.image.per_image_standardization(image)

4:生成batch
  • image_batch: 4D tensor [batch_size, width, height, 3],dtype=tf.float32
  • label_batch: 1D tensor [batch_size], dtype=tf.int32
image_batch, label_batch = tf.train.batch([image, label],batch_size= batch_size,num_threads= 32, capacity = capacity)
#重新排列label,行数为[batch_size]
label_batch = tf.reshape(label_batch, [batch_size]) image_batch = tf.cast(image_batch, tf.float32)

测试

step1:变量初始化,每批2张图,尺寸208x208,设置好自己的图像路径

BATCH_SIZE = 2
CAPACITY = 256 IMG_W = 208 IMG_H = 208 train_dir = 'D:/Study/Python/Projects/Cats_vs_Dogs/data'

step2:调用前面的两个函数,生成batch

image_list, label_list = get_files(train_dir)
image_batch, label_batch = get_batch(image_list, label_list, IMG_W, IMG_H, BATCH_SIZE, CAPACITY)

step3:开启会话session,利用tf.train.Coordinator()tf.train.start_queue_runners(coord=coord)来监控队列(这里有个问题:官网的start_queue_runners()是有两个参数的,sess和coord,但是在这里加上sess的话会报错)。 
利用try——except——finally结构来执行队列操作(官网推荐的方法),避免程序卡死什么的。i<2执行两次队列操作,每一次取出2张图放进batch里面,然后imshow出来看看效果。

with tf.Session() as sess:i = 0coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(coord=coord)try:while not coord.should_stop() and i<2: img, label = sess.run([image_batch, label_batch]) # just test one batch for j in np.arange(BATCH_SIZE): print('label: %d' %label[j]) plt.imshow(img[j,:,:,:]) plt.show() i+=1 except tf.errors.OutOfRangeError: print('done!') finally: coord.request_stop() coord.join(threads)

step4:查看结果,会出现4张图,resize的效果感觉不是很好,不知道是什么问题 
2017.7.10 图片不正常是因为生成batch的时候将image转成了浮点型,吧image_batch = tf.cast(image_batch, tf.float32)注释掉后就好了

 

转载于:https://www.cnblogs.com/jyxbk/p/7750451.html

猫狗分类--Tensorflow实现相关推荐

  1. TensorFlow 2.0 - tf.data.Dataset 数据预处理 猫狗分类

    文章目录 1 tf.data.Dataset.from_tensor_slices() 数据集建立 2. Dataset.map(f) 数据集预处理 3. Dataset.prefetch() 并行处 ...

  2. tensorflow.js在nodejs训练猫狗分类模型在浏览器上使用

    目录 本人系统环境 注意事项 前言 数据集准备 处理数据集 数据集初步处理 将每一张图片数据转换成张量数据(tensor) 将图片转换成张量数组的代码和运行效果 将图片的标注转换成张量数据(tenso ...

  3. 使用Tensorflow 2进行猫狗分类识别

    使用Tensorflow 2进行猫狗分类识别 本文参照了大佬Andrew Ng的所讲解的Tensorflow 2视频所写,本文将其中只适用于Linux的功能以及只适用于Google Colab的功能改 ...

  4. 基于tensorflow的猫狗分类

    基于tensorflow的猫狗分类 数据的准备 引入库 数据集来源 准备数据 显示一张图片的内容 搭建网络模型 构建网络 模型的编译 数据预处理 模型的拟合与评估 模型的拟合 预测一张图片 损失和精度 ...

  5. CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用

    CV之IC之AlexNet:基于tensorflow框架采用CNN卷积神经网络算法(改进的AlexNet,训练/评估/推理)实现猫狗分类识别案例应用 目录 基于tensorflow框架采用CNN(改进 ...

  6. Tensorflow 学习之猫狗分类案例

    Tensorflow 学习之猫狗分类案例 本人一直在Cousera上学习Ng Andrew老师的Tensorflow课程,在本次猫狗分类案例当中,我对课程做了相应的记录,呈现在此,一方面加深学习的印象 ...

  7. DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)

    DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型) 目录 基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型) 设计思路 输出结果 1488/1 ...

  8. AlexNet 实现猫狗分类(keras and pytorch)

    AlexNet 实现猫狗分类 前言 在训练网络过程中遇到了很多问题,先在这里抱怨一下,没有硬件条件去使用庞大的ImageNet2012 数据集 .所以在选择合适的数据集上走了些弯路,最后选择有kagg ...

  9. 基于Pytorch的猫狗分类

    无偿分享~ 猫狗二分类文件下载地址 在下一章说        猫狗分类这个真是困扰我好几天,找了好多资料都是以TensorFlow的猫狗分类,但我们要求的是以pytorch的猫狗分类.刚开始我找到了也 ...

最新文章

  1. 深入理解 Spring Cloud 核心组件与底层原理!
  2. 图论--DFS-SPFA求负环
  3. 【Android 进程保活】提升进程优先级 ( 1 像素 Activity 提高进程优先级 | taskAffinity 亲和性说明 | 运行效果 | 源码资源 )
  4. MFC对话框控件成员变量编程熟悉 - 开发一个简单天线长度计算器
  5. 产品问答 | PM最应该花时间做这件事……
  6. SpringBoot2.0 基础案例(06):引入JdbcTemplate,和多数据源配置
  7. 通过C++的try和catch来捕获SEH异常
  8. dubbo之服务降级
  9. 【风电功率预测】基于matlab遗传算法优化BP神经网络风电功率预测【含Matlab源码 760期】
  10. 带你轻轻松松了解route-map
  11. CSTSOFT ActiveX GDIPlus Pack 2021.03
  12. Python比较文件不同
  13. 水声网络架构及关键问题笔记
  14. 电脑主屏幕黑屏但有计算机硬盘显示,显示器黑屏但电脑一直在运行怎么办?显示器黑屏的详细解决方案...
  15. 【No server address listed in hbase:meta for region XX】
  16. SVG格式化<PATH>说明
  17. Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效
  18. JMS基本概念和模型
  19. HDU 5514 Frogs 容斥
  20. 基于J2EE的科研项目管理系统设计与实现

热门文章

  1. 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query
  2. DISCUZ 使用 JQ做效果导致DIY失效的解决办法
  3. JS 给某个DIV增加CLASS样式名
  4. Jetty:配置概览-怎么配置Jetty
  5. POJ 3801/HDU 3157 Crazy Circuits | 有下界的最小流
  6. 剑指offer第12题打印从1到n位数以及大整数加法乘法
  7. 终于理解了函数式技术
  8. 获取本机IP_考虑多网卡的情况
  9. WeChall_PHP-0817
  10. vue,vue-router实现浏览器返回不刷新页面