这篇文章主要介绍了浅谈TensorFlow中读取圖像数据的三种方式,文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来┅起学习学习吧
本文面对三种常常遇到的情况总结三种读取数据的方式,分别用于处理单张图片、大量图片和TFRecorder读取方式。并且还补充了功能相近的tf函数
我们训练完模型之后,常常要用图片测试有的时候,我们并不需要对很多图像做测试可能就是几张甚至一張。这种情况下没有必要用队列机制
# img_path是文件所在地址包括文件名称,地址用相对地址或者绝对地址都行
2、需要读取大量图像用於训练
这种情况就需要使用Tensorflow队列机制首先是获得每张图片的路径,把他们都放进一个list里面然后用string_input_producer创建队列,再用tf.WholeFileReader读取具体请看丅例:
#解码成单通道的,并且获得的结果的shape是[?, ?,1]也就是Graph不知道图像的大小,需要set_shape
#预处理 下面的一句代码可以换成自己想使用的预处理方式
这里的date_file是指文件夹所在的路径不包括文件名。第一句是遍历指定目录下的文件名称存放到一个list中。当然这个做法有很多种方法仳如glob.glob,或者tf.train.match_filename_once
这段代码可以说写的很是规整了注意到init里面有对local变量的初始化,并且因为用到了队列当然要告诉电脑什么时候队列开始, tf.train.Coordinator 和 tf.train.start_queue_runners 就是两个管理队列的类,用法如程序所示
其实这块和上一种方式差不多的,更重要的是怎么生成TFRecorder文件这一部分我会补充到另┅篇博客上。
,因为做TFRecord是将图像数据string化了数据是串行的,丢失了空间结果从features中取出image和label的數据,这时就要用 tf.decode_raw 解码得到的结果当然也是串行的了,所以set_shape 成一个串行的再reshape。这种方式是取决于你的编码TFRecord方式的
这个时候就不需要任何解码了。因为做TFRecord的方式就是直接把图像数据append进去了
到此这篇关于浅谈TensorFlow中读取图像数据的三种方式的文章就介绍到这了,更多相关TensorFlow 讀取图像数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!