tensorflow图片预处理,随机亮度,旋转,剪切,翻转。

Posted 晴堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow图片预处理,随机亮度,旋转,剪切,翻转。相关的知识,希望对你有一定的参考价值。

图像预处理是一个非常简单,通过提高训练数据的多样性,进而对训练模型的召回率,适应性有着非常大的提升作用。

另外在训练时,需要更多的训练次数,比如说我对每张图片进行了一次旋转,那么训练次数就要提高一倍。也就是说训练集多样性增加,同时训练次数也要增加。

代码:

import tensorflow as tf
from scipy import misc
import numpy as np

#随机旋转图片
def random_rotate_image(image_file, num):
    with tf.Graph().as_default():
        tf.set_random_seed(666)
        file_contents = tf.read_file(image_file)
        image = tf.image.decode_image(file_contents, channels=3)
        image_rotate_en_list = []
        def random_rotate_image_func(image):
            #旋转角度范围
            angle = np.random.uniform(low=-30.0, high=30.0)
            return misc.imrotate(image, angle, 'bicubic')
        for i in range(num):
            image_rotate = tf.py_func(random_rotate_image_func, [image], tf.uint8)
            image_rotate_en_list.append(tf.image.encode_png(image_rotate))
        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            sess.run(tf.local_variables_initializer())
            results = sess.run(image_rotate_en_list)
            for idx,re in enumerate(results):
                with open('data/'+str(idx)+'.png','wb') as f:
                    f.write(re)

#随机左右翻转图片
def random_flip_image(image_file, num):
    with tf.Graph().as_default():
        tf.set_random_seed(666)
        file_contents = tf.read_file(image_file)
        image = tf.image.decode_image(file_contents, channels=3)
        image_flip_en_list = []
        for i in range(num):
            image_flip = tf.image.random_flip_left_right(image)
            image_flip_en_list.append(tf.image.encode_png(image_flip))
        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            sess.run(tf.local_variables_initializer())
            results = sess.run(image_flip_en_list)
            for idx,re in enumerate(results):
                with open('data/'+str(idx)+'.png','wb') as f:
                    f.write(re)

#随机变化图片亮度
def random_brightness_image(image_file, num):
    with tf.Graph().as_default():
        tf.set_random_seed(666)
        file_contents = tf.read_file(image_file)
        image = tf.image.decode_image(file_contents, channels=3)
        image_bright_en_list = []
        for i in range(num):
            image_bright = tf.image.random_brightness(image, max_delta=0.3)
            image_bright_en_list.append(tf.image.encode_png(image_bright))
        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            sess.run(tf.local_variables_initializer())
            results = sess.run(image_bright_en_list)
            for idx,re in enumerate(results):
                with open('data/'+str(idx)+'.png','wb') as f:
                    f.write(re)

#随机裁剪图片
def random_crop_image(image_file, num):
    with tf.Graph().as_default():
        tf.set_random_seed(666)
        file_contents = tf.read_file(image_file)
        image = tf.image.decode_image(file_contents, channels=3)
        image_crop_en_list = []
        for i in range(num):
            #裁剪后图片分辨率保持160x160,3通道
            image_crop = tf.random_crop(image, [160, 160, 3])
            image_crop_en_list.append(tf.image.encode_png(image_crop))
        with tf.Session() as sess:
            sess.run(tf.global_variables_initializer())
            sess.run(tf.local_variables_initializer())
            results = sess.run(image_crop_en_list)
            for idx,re in enumerate(results):
                with open('data/'+str(idx)+'.png','wb') as f:
                    f.write(re)

if __name__ == '__main__':
    #处理图片,进行20次随机处理,并将处理后的图片保存到输入图片相同的路径下
    random_brightness_image('data/test.png', 20)

运行效果:

    随机裁剪

    随机亮度

    随机旋转

    随机翻转

更多图像处理操作,请查看tensorflow官方文档http://www.tensorfly.cn/tfdoc/api_docs/python/image.html

以上是关于tensorflow图片预处理,随机亮度,旋转,剪切,翻转。的主要内容,如果未能解决你的问题,请参考以下文章

使用TensorFlow对图像进行随机旋转的实现示例

使用TensorFlow对图像进行随机旋转的实现示例

js进行数字图像处理:亮度对比度马赛克画笔放大缩小镜像贴纸旋转颜色值显示

PS处理图片选择区域调亮后,会在区域边(虚线框)的位置留下白色的边框。怎么处理掉?请各位大神帮忙。

js设置图片随机旋转角度

tensorflow学习笔记