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


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


1、随机裁剪

原始图片的大小为300×300,将图片随机裁剪为280×280,通道大小不变。
import tensorflow as tf import cv2 import matplotlib.pyplot as plt #用来正常显示中文
plt.rcParams["font.sans-serif"]=["SimHei"] if __name__ == "__main__": img =
cv2.imread("img/img.jpg") #将图片进行随机裁剪为280×280 crop_img =
tf.random_crop(img,[280,280,3]) sess = tf.InteractiveSession() #显示图片 #
cv2.imwrite("img/crop.jpg",crop_img.eval()) plt.figure(1) plt.subplot(121)
#将图片由BGR转成RGB img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) plt.imshow(img)
plt.title("原始图片") plt.subplot(122) crop_img =
cv2.cvtColor(crop_img.eval(),cv2.COLOR_BGR2RGB) plt.title("裁剪后的图片")
plt.imshow(crop_img) plt.show() sess.close()


2、随机翻转

对图片的水平方向和垂直方向进行随机翻转。
img = cv2.imread("img/img.jpg") #将图片随机进行水平翻转 h_flip_img =
tf.image.random_flip_left_right(img) #将图片随机进行垂直翻转 v_flip_img =
tf.image.random_flip_up_down(img) sess = tf.InteractiveSession() #通道转换 img =
cv2.cvtColor(img,cv2.COLOR_BGR2RGB) h_flip_img =
cv2.cvtColor(h_flip_img.eval(),cv2.COLOR_BGR2RGB) v_flip_img =
cv2.cvtColor(v_flip_img.eval(),cv2.COLOR_BGR2RGB) #显示图片 plt.figure(1)
plt.subplot(131) plt.title("水平翻转") plt.imshow(h_flip_img) plt.subplot(132)
plt.title("垂直翻转") plt.imshow(v_flip_img) plt.subplot(133) plt.title("原始图片")
plt.imshow(img) plt.show()


3、随机亮度、对比度、色度、饱和度的设置
#随机设置图片的亮度 random_brightness = tf.image.random_brightness(img,max_delta=30)
#随机设置图片的对比度 random_contrast = tf.image.random_contrast(img,lower=0.2,upper=1.8)
#随机设置图片的色度 random_hue = tf.image.random_hue(img,max_delta=0.3) #随机设置图片的饱和度
random_satu = tf.image.random_saturation(img,lower=0.2,upper=1.8)


4、图片的标准化

标准化后图片的均值为0,方差为1
img = cv2.imread("img/img.jpg") #将图片进行标准化 std_img =
tf.image.per_image_standardization(img) sess = tf.InteractiveSession()
print(std_img.eval())



友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信