数据增强-图片数据的增强

        数据增强(Data Augmentation)就是增加数据量。数据对于机器学习或者深度学习来说非常重要,有时候拥有更多的数据胜过拥有一个好的模型。一般来说,更多的数据参与训练,训练得到的模型就更好。如果数据太少,而我们构建的神经网络又太复杂,那么就比较容易产生过拟合的现象。

        在图像领域,数据增加的手段经常被使用,常用的手段如下。

(1)旋转/反射变换(rotation/reflection):随机旋转图像一定角度,改变图像内容的朝向。       

(2)翻转变换(flip):沿着水平或者垂直方向翻转图像。

(3)缩放变换(zoom):按照一定的比例放大或者缩小图像。

(4)平移变换(shift):在图像平面上对图像以一定的方式进行平移。

(5)尺度变换(scale):对图像按照指定的尺度因子进行放大或缩小。

(6)对比度变换(contrast):在图像的HSV颜色空间中改变饱和度S和V亮度分量,保持色调H不变,对每个像素的S和V分量进行指数运算(指数因子在0.25~4之间),增加光照变化。

(7)噪声扰动(noise):对图像的每个像素RGB进行随机扰动。常用的噪声模式是椒盐噪声和高

斯噪声。

(8)颜色变换(color):对训练集图像的颜色进行一些有规律的调整。

我们通过代码来直观感受数据增强方法

jupyter notebook

windows10

tensorflow-gpu==2.9.1

numpy==1.21.5

 1.设计数据增强方式

import tensorflow as tf
import numpy as np
from tensorflow.keras.preprocessing.image import ImageDataGenerator,img_to_array,load_img
datagen=ImageDataGenerator(
    rotation_range=40, #随即旋转度数
    width_shift_range=0.2,#随机水平平移
    height_shift_range=0.2,#随机竖直平移
    rescale =1/255,
    shear_range=30, #随机错切变换
    zoom_range=0.2, #随即方法
    horizontal_flip=True,
    brightness_range=(0.7,1.3),#亮度变化
    fill_mode='nearest', #填充放还是
    )

2.实现数据增强

2.1 准备图片

将图片移动至目标文件夹

img =load_img('image.png')
img

数据增强-图片数据的增强_第1张图片

 

2.2 数据处理

先在文件目录中创建一个文件名为temp

#将图片转化为np数组
x=img_to_array(img)
#将数据变为4维度
x=np.expand_dims(x,0)
i=0
for batch in datagen.flow(x,batch_size=1,save_to_dir='temp',save_prefix='new_pet',save_format='png'):
    i+=1
    if i==20:
        break

2.3 查看效果

import os
start_directory = r'temp'
os.system("explorer.exe %s" % start_directory)

数据增强-图片数据的增强_第2张图片

数据增强成功

 

你可能感兴趣的:(深度学习-TF)