浅谈tensorflow中Dataset图片的批量读取及维度的操作详解


Posted in Python onJanuary 20, 2020

三维的读取图片(w, h, c):

import tensorflow as tf
 
import glob
import os
 
 
def _parse_function(filename):
  # print(filename)
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_image(image_string) # (375, 500, 3)
 
  image_resized = tf.image.resize_image_with_crop_or_pad(image_decoded, 200, 200)
  return image_resized
 
 
 
 
with tf.Session() as sess:
 
  print( sess.run( img ).shape  )

读取批量图片的读取图片(b, w, h, c):

import tensorflow as tf
 
import glob
import os
 
'''
  Dataset 批量读取图片
'''
 
def _parse_function(filename):
  # print(filename)
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_image(image_string) # (375, 500, 3)
 
  image_decoded = tf.expand_dims(image_decoded, axis=0)
 
  image_resized = tf.image.resize_image_with_crop_or_pad(image_decoded, 200, 200)
  return image_resized
 
 
 
img = _parse_function('../pascal/VOCdevkit/VOC2012/JPEGImages/2007_000068.jpg')
 
# image_resized = tf.image.resize_image_with_crop_or_pad( tf.truncated_normal((1,220,300,3))*10, 200, 200) 这种四维 形式是可以的
 
with tf.Session() as sess:
 
  print( sess.run( img ).shape  ) #直接初始化就可以 ,转换成四维报错误,不知道为什么,若谁想明白,请留言 报错误
  #InvalidArgumentError (see above for traceback): Input shape axis 0 must equal 4, got shape [5]

Databae的操作:

import tensorflow as tf
 
import glob
import os
 
'''
  Dataset 批量读取图片:
  
    原因:
      1. 先定义图片名的list,存放在Dataset中 from_tensor_slices()
      2. 映射函数, 在函数中,对list中的图片进行读取,和resize,细节
        tf.read_file(filename) 返回的是三维的,因为这个每次取出一张图片,放进队列中的,不需要转化为四维
        然后对图片进行resize, 然后每个batch进行访问这个函数 ,所以get_next() 返回的是 [batch, w, h, c ]
      3. 进行shuffle , batch repeat的设置
      
      4. iterator = dataset.make_one_shot_iterator() 设置迭代器
      
      5. iterator.get_next() 获取每个batch的图片
'''
 
def _parse_function(filename):
  # print(filename)
  image_string = tf.read_file(filename)
  image_decoded = tf.image.decode_image(image_string) #(375, 500, 3)
  '''
    Tensor` with type `uint8` with shape `[height, width, num_channels]` for
     BMP, JPEG, and PNG images and shape `[num_frames, height, width, 3]` for
     GIF images.
  '''
 
  # image_resized = tf.image.resize_images(label, [200, 200])
  ''' images 三维,四维的都可以
     images: 4-D Tensor of shape `[batch, height, width, channels]` or
      3-D Tensor of shape `[height, width, channels]`.
    size: A 1-D int32 Tensor of 2 elements: `new_height, new_width`. The
       new size for the images.
  
  '''
  image_resized = tf.image.resize_image_with_crop_or_pad(image_decoded, 200, 200)
 
  # return tf.squeeze(mage_resized,axis=0)
  return image_resized
 
filenames = glob.glob( os.path.join('../pascal/VOCdevkit/VOC2012/JPEGImages', "*." + 'jpg') )
 
 
dataset = tf.data.Dataset.from_tensor_slices((filenames))
 
dataset = dataset.map(_parse_function)
 
dataset = dataset.shuffle(10).batch(2).repeat(10)
iterator = dataset.make_one_shot_iterator()
 
img = iterator.get_next()
 
with tf.Session() as sess:
  # print( sess.run(img).shape ) #(4, 200, 200, 3)
  for _ in range (10):
    print( sess.run(img).shape )

以上这篇浅谈tensorflow中Dataset图片的批量读取及维度的操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python读取Android permission文件
Nov 01 Python
Python使用urllib模块的urlopen超时问题解决方法
Nov 08 Python
Python面向对象编程基础解析(一)
Oct 26 Python
python中学习K-Means和图片压缩
Nov 20 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
Python 调用PIL库失败的解决方法
Jan 08 Python
python3人脸识别的两种方法
Apr 25 Python
Django REST framework 分页的实现代码
Jun 19 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
Python测试框架:pytest学习笔记
Oct 20 Python
python des,aes,rsa加解密的实现
Jan 16 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 #Python
python机器学习库xgboost的使用
Jan 20 #Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 #Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 #Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 #Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 #Python
基于Python获取照片的GPS位置信息
Jan 20 #Python
You might like
浅谈php和js中json的编码和解码
2016/10/24 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
javascript getElementsByClassName 和js取地址栏参数
2010/01/02 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
JavaScript事件 "事件对象"的注意要点
2016/01/14 Javascript
JS获取元素多层嵌套思路详解
2016/05/16 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
2018/11/22 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
JavaScript实现网页tab栏效果制作
2020/11/20 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Python实现高斯函数的三维显示方法
2018/12/29 Python
Python3中exp()函数用法分析
2019/02/19 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python如何计算语句执行时间
2019/11/22 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
幼儿园庆六一游园活动方案
2014/01/29 职场文书
市场部管理制度
2014/02/02 职场文书
作风整顿剖析材料
2014/09/30 职场文书
合作合同协议书范本
2015/01/27 职场文书
最美乡村教师观后感
2015/06/11 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python