tensorflow实现数据增强(随机裁剪、翻转、对比度设置、亮度设置) 数据增强(Data Augmentation):是指对图片进行随机的旋转、翻转、裁剪、随机设置图片的亮度和对比度以及对数据进行标准化(数据的均值为0,方差为1)。通过这些操作,我们可以获得更多的图片样本,原来的一张图片可以变为多张图片,扩大了样本容量,对于提高模型的准确率和提升模型的泛化能力非常有帮助,在进行数据增强的同时也会需要消耗大量的系统资源。

数据增强(Data Augmentation):是指对图片进行随机的旋转、翻转、裁剪、随机设置图片的亮度和对比度以及对数据进行标准化(数据的均值为0,方差为1)。通过这些操作,我们可以获得更多的图片样本,原来的一张图片可以变为多张图片,扩大了样本容量,对于提高模型的准确率和提升模型的泛化能力非常有帮助,在进行数据增强的同时也会需要消耗大量的系统资源。

利用opencv来读取图片,然后利用tensorflow来对图片进行增强处理,最后再通过matplotlib来显示图片,需要注意的是matplotlib显示图片的时候是使用RGB通道顺序来显示图片,而opencv则是采用BGR的顺序来处理图片的,所以在对图片进行imshow之前需要先进行通道转换。

1、随机裁剪

原始图片的大小为300×300,将图片随机裁剪为280×280,通道大小不变。

[python] view plain copy
  1. import tensorflow as tf  
  2. import cv2  
  3. import matplotlib.pyplot as plt  
  4. #用来正常显示中文  
  5. plt.rcParams["font.sans-serif"]=["SimHei"]  
  6.   
  7. if __name__ == "__main__":  
  8.     img = cv2.imread("img/img.jpg")  
  9.     #将图片进行随机裁剪为280×280  
  10.     crop_img = tf.random_crop(img,[280,280,3])  
  11.     sess = tf.InteractiveSession()  
  12.     #显示图片  
  13.     # cv2.imwrite("img/crop.jpg",crop_img.eval())  
  14.     plt.figure(1)  
  15.     plt.subplot(121)  
  16.     #将图片由BGR转成RGB  
  17.     img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)  
  18.     plt.imshow(img)  
  19.     plt.title("原始图片")  
  20.     plt.subplot(122)  
  21.     crop_img = cv2.cvtColor(crop_img.eval(),cv2.COLOR_BGR2RGB)  
  22.     plt.title("裁剪后的图片")  
  23.     plt.imshow(crop_img)  
  24.     plt.show()  
  25.     sess.close()  

2、随机翻转

对图片的水平方向和垂直方向进行随机翻转。

[python] view plain copy
  1. img = cv2.imread("img/img.jpg")  
  2. #将图片随机进行水平翻转  
  3. h_flip_img = tf.image.random_flip_left_right(img)  
  4. #将图片随机进行垂直翻转  
  5. v_flip_img = tf.image.random_flip_up_down(img)  
  6. sess = tf.InteractiveSession()  
  7. #通道转换  
  8. img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)  
  9. h_flip_img = cv2.cvtColor(h_flip_img.eval(),cv2.COLOR_BGR2RGB)  
  10. v_flip_img = cv2.cvtColor(v_flip_img.eval(),cv2.COLOR_BGR2RGB)  
  11. #显示图片  
  12. plt.figure(1)  
  13. plt.subplot(131)  
  14. plt.title("水平翻转")  
  15. plt.imshow(h_flip_img)  
  16. plt.subplot(132)  
  17. plt.title("垂直翻转")  
  18. plt.imshow(v_flip_img)  
  19. plt.subplot(133)  
  20. plt.title("原始图片")  
  21. plt.imshow(img)  
  22. plt.show()  

3、随机亮度、对比度、色度、饱和度的设置

[python] view plain copy
  1. #随机设置图片的亮度  
  2. random_brightness = tf.image.random_brightness(img,max_delta=30)  
  3. #随机设置图片的对比度  
  4. random_contrast = tf.image.random_contrast(img,lower=0.2,upper=1.8)  
  5. #随机设置图片的色度  
  6. random_hue = tf.image.random_hue(img,max_delta=0.3)  
  7. #随机设置图片的饱和度  
  8. random_satu = tf.image.random_saturation(img,lower=0.2,upper=1.8)  

4、图片的标准化

标准化后图片的均值为0,方差为1

[python] view plain copy
  1. img = cv2.imread("img/img.jpg")  
  2. #将图片进行标准化  
  3. std_img = tf.image.per_image_standardization(img)  
  4. sess = tf.InteractiveSession()  
  5. print(std_img.eval())  

猜你喜欢

转载自blog.csdn.net/weixin_42052460/article/details/80740799