一、代码运行环境
Tensorflow-gpu==2.4.0
Python==3.7
二、此博客测试原图片如下:
三、此博客的演示代码如下:
import tensorflow as tf
import os
import matplotlib.pyplot as plt
# 环境变量的准备
os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices'
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'
# 图像处理与数据增强处理
def deal_image_by_tensorflow(path):
image = tf.io.read_file(path) # 文件的读取
image = tf.image.decode_jpeg(image, channels=3) # 对图片进行相应的解码,channels=3代表图片是三通道
# image = tf.image.random_flip_up_down(image) # 二分之一概率进行上下翻转
# image = tf.image.random_flip_left_right(image) # 二分之一概率进行左右翻转
# image = tf.image.random_contrast(image, 0, 100) # 随机调整图像的对比度
# image = tf.image.random_crop(image, [128, 128, 3]) # 随机进行图片的裁剪
# image = tf.image.random_hue(image, 0.4) # 用随机因子调整RGB图像的色调,max_delta必须在间隔[0, 0.5]
# image = tf.image.random_saturation(image, 0, 100) # 用随机因子调整图像的饱和度
# image = tf.image.random_jpeg_quality(image, 0, 25) # 用随机因子调整图像的编码质量
image = tf.image.resize(image, [256, 256])
# image = tf.image.random_brightness(image, 100) # 随机对原图进行亮度调整,这里的范围是-99~99
image = tf.cast(image / 256, tf.float32)
plt.imshow(image)
plt.savefig('result.jpg')
plt.show()
if __name__ == '__main__':
deal_image_by_tensorflow(r'test.jpg')
四、数据增强函数如下:
1. tf.image.random_flip_up_down()
函数说明:以二分之一的概率使原图进行上下的翻转操作,否则进行原图输出。
tf.image.random_flip_up_down(
image, #需要进行处理的图片,shape需要为[height, width, channels]
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
2. tf.image.random_flip_left_right()
函数说明:以二分之一的概率使原图进行左右的翻转操作,否则进行原图输出。
tf.image.random_flip_left_right(
image, #需要进行处理的图片,shape需要为[height, width, channels]
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
3. tf.image.random_contrast()
函数说明:随机的对原图的对比度进行调整,调整范围在两个参数之间。
tf.image.random_contrast(
image, #具有3个或更多维度的图像张量
lower, #浮点型,随机对比因子的下限
upper, #浮点型,随机对比因子的上限
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
4. tf.image.random_crop()
函数说明:对于输入的图像进行随机的裁剪,裁剪之后的尺寸有参数决定。
tf.image.random_crop(image, #输入的原图张量
[128, 128, 3] #被裁剪之后的尺寸
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
5. tf.image.random_brightness()
函数说明:随机的调整输入图片的亮度。
tf.image.random_brightness(
image, #具有3个或更多维度的图像张量
max_delta, #float类型,必须是非负的
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
6. tf.image.random_hue()
函数说明:随机对输入的图片进行色调的调整。
tf.image.random_hue(
image, #具有3个或更多维度的图像张量
max_delta, #在区间[-max_delta, max_delta]随机调整图像的色调,max_delta必须在间隔[0, 0.5]中
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
7. tf.image.random_saturation()
函数说明:随机调整输入图像的饱和度。
tf.image.random_saturation(
image, #具有3个或更多维度的图像张量
lower, #浮点型,随机饱和因子的下界
upper, #浮点型,随机饱和因子的上界
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果:
8. tf.image.random_jpeg_quality()
函数说明:随机调整输入图像的编码质量。
image = tf.image.random_jpeg_quality(image, #具有3个或更多维度的图像张量
min_jpeg_quality, # 随机图片质量的下限
max_jpeg_quality, #随机图片质量的上限
seed=None #一个Python整数,用于创建一个随机种子
)
处理结果: