首页 > 其他 > 详细

tensorflow 数据处理

时间:2020-07-28 21:54:37      阅读:58      评论:0      收藏:0      [点我收藏+]

 

读取图片的方法(三种):

  第一种:直接把图片看做是一个图片直接读取进来,先获取图片的原始数据,然后在解码

    import tensorflow as tf

    image_raw_data = tf.gfile.FastGFile("./test.jpg").read()

    image = tf.image.decode_jpeg(image_raw_data)

    image.eval(session=tf.Session())

    其中:tf.gfile.FastGFile()就相当于平时使用的open()函数一样,打开文件,read方法就是读取图片中的内容以字符串的形式返回。

    tf.image.decode_jpeg(),就是将一张jpeg压缩编码格式的图片解码成uint8 tensor,给予tensorflow当做tensor流进行处理。这种解码的方式还有很多如:tf.image.decode_png,tf.image.decode_image等等。。。

  第二种:把图片看成一个文件,用队列的方式读取。

    import tensorflow as tf

    path = "./test.jpg"
    file_queue = tf.train.string_input_producer([path])
    image_reader = tf.WholeFileReader()
    _,image = image_reader.read(file_queue)
    image = tf.image.decode_jpeg(image)

    with tf.Session() as sess:
      coord = tf.train.Coordinator()
      threads = tf.train.start_queue_runners(sess,coord)
      print sess.run(image)
      coord.request_stop()
      coord.join(threads)

    其中:tf.train.string_input_producer()就是将文件名称全部加载到一个队列中,之后tf就是从这个队列里面读取目录,要注意一点的是这个函数的shuffle参数默认是True,也就是你传给他文件顺序是1234,但是到时候读就不一定了。

    tf.WholeFileReader()创建读取文件的reader,read读取的是输入的队列。读取的仍然是原始数据,需要解码。

    tf.train.Coordinator() 创建线程的协调器,帮助管理线程,当用到队列读取数据的时候需要使用。 

    tf.train.start_queue_runners() 启动队列,若果不启动的话,tf的队列将会无休止的挂起,程序将没有反应。

  第三种:tensorflow的read_file,decode输出是Tensor,eval后是ndarray 与方法1的gfile读取差别不大,只是换了一个函数read_file

    path = "./test.jpg"
    image_value = tf.read_file(path)
    image = tf.image.decode_jpeg(image_value)
    print image.eval(session=tf.Session())

 

图像处理:在训练模型的时候,数据是至关重要的,但是数据收集以及标注的代价都是巨大的,所以运用图像处理技术,可以很好的扩充图像,增大数据量,缓解数据不足的问题,提高模型的识别准确率。

  改变图像大小:

    tf.image.resize_images(image,(256,256),tf.image.ResizeMethod.AREA)

    image表示需要改变此存的图像,第二个参数改变之后图像的大小,method用于表示改变图像过程用的差值方法。0:双线性差值。1:最近邻居法。2:双三次插值法。3:面积插值法。

  对图片进行裁剪或者填充:

    tf.image.resize_image_with_crop_or_pad(image,100,100)

    第一个参数为原始图像,后面两个参数是调整后的目标图像的高和宽。如果原始图像的尺寸大于目标图像,那么这个函数会自动截取原始图像中居中的部分。如果目标图像大于原始图像,这个函数自动在原始图像的四周填充全0背景。

  图像翻转:

    上下翻转:tf.image.flip_up_down(image)

    左右翻转:tf.image.flip_left_right(image)

    对角线翻转:tf.image.transpose_image(image)

    以一定概率上下翻转:tf.image.random_flip_up_down(image)

    以一定概率左右翻转:tf.image.random_flip_left_right(image)

  图像色彩调整:

    调整亮度:tf.image.adjust_brightness(image,-0.5),当第二个参数为负的时候,是减少图像的亮度,正的时候,是增加亮度。

    在一定范围内随机调整亮度:tf.image.random_brightness(image,0.5),这第二个参数表示的是一个范围[-0.5,0.5)随机选值调整亮度。

    调整图像对比度:tf.image.adjust_contrast(image,5),当第二个参数为负的时候,是减少图像的对比度,正的时候,是增加对比度。

    在一定范围内随机调整对比度:tf.image.random_contrast(image,lower,upper),在[lower,upper]的范围内随机调整图像的对比度,其中upper必须大于lower,lower不能为负数。

    调整图像的色相(饱和度): 

    调整色相:tf.image.adjust_hue(image,0.5) 第二参数只能为正数,当为负数的时候,展现的结果是和他的正数的效果是一样的。意思是为图像的色相增加多少。

    在一定范围内随机调整色相:tf.image.random_hue(image,0.5)  意思就是在[0,0.5]之间随机的调整色相。

    调整饱和度:tf.image.adjust_saturation(image,5)  第二个参数为正的时候,增大图像的饱和度,反之为负,就是减小图像的饱和度。

    在一定范围内随机调整饱和度:tf.image.random_saturation(image,lower,upper)  在[lower,upper]的范围内随机调整图像的饱和度,其中upper必须大于lower

  图像标准化:使图像的均值变为0,方差为1(是图像的亮度)

    tf.image.per_image_standardization(image)

  

    

 

    

 

 

 

   

 

tensorflow 数据处理

原文:https://www.cnblogs.com/magicpig666/p/8820100.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!