keras实现数据增强

文章目录

  • 一、目的
  • 二.keras扩充数据集

一、目的

在实际的深度学习当中,我们通常会遇到收集的数据过少,收集数据过于困难等,导致训练过程中很容易发生过拟合等现象.这时候我们就需要对数据进行扩充来避免这种现象.

二.keras扩充数据集

import os
from keras.preprocessing.image import ImageDataGenerator,img_to_array,load_img

datagen = ImageDataGenerator(

    rotation_range=20,#旋转范围, 随机旋转(0-180)度

    width_shift_range=0.2,#随机沿着水平或者垂直方向,以图像的长宽小部分百分比为变化范围进行平移;

    height_shift_range=0.2,

    shear_range=0.2,#水平或垂直投影变换

    zoom_range=0.2,#按比例随机缩放图像尺寸

    horizontal_flip=True,#水平翻转图像

    fill_mode='nearest')#填充像素, 出现在旋转或平移之后

path=r"C:\picture\pic1"  #需要处理的图片路径
for i in os.listdir(path):
    address=os.path.join(path,i)
    img=load_img(address)
    image=img_to_array(img)
    image=image.reshape((1,)+image.shape)#需要四维,人工加上一维
    j=0
    for i in data_generator.flow(image,batch_size=1,
                            save_to_dir=r"C:\Users\PC\Desktop\koutu\456",
                            save_prefix="picture",   
                            save_format='jpg'):      
        j+=1
        if(j>=7):
            break;    
print("全部完成")

参数:

  • rotation_range:整数,数据提升时图片随机转动的角度
  • width_shift_range:浮点数,图片宽度的某个比例,数据提升时图片水平偏移的幅度
  • height_shift_range:浮点数,图片高度的某个比例,数据提升时图片竖直偏移的幅度
  • shear_range:浮点数,剪切强度(逆时针方向的剪切变换角度)
  • zoom_range:浮点数或形如[lower,upper]的列表,随机缩放的幅度,若为浮点数,则相当于[lower,upper] = [1 - zoom_range, 1+zoom_range]
  • channel_shift_range:浮点数,随机通道偏移的幅度
  • fill_mode:;‘constant’,‘nearest’,‘reflect’或‘wrap’之一,当进行变换时超出边界的点将根据本参数给定的方法进行处理
  • cval:浮点数或整数,当fill_mode=constant时,指定要向超出边界的点填充的值
  • horizontal_flip:布尔值,进行随机水平翻转
  • vertical_flip:布尔值,进行随机竖直翻转

方法:

flow(self, X, y, batch_size=32, shuffle=True, seed=None, save_to_dir=None, save_prefix=’’, save_format=‘png’):接收numpy数组和标签为参数,生成经过数据提升或标准化后的batch数据,并在一个无限循环中不断的返回batch数据

  • x:样本数据,秩应为4.在黑白图像的情况下channel轴的值为1,在彩色图像情况下值为3
  • y:标签
  • batch_size:整数,默认32
  • shuffle:布尔值,是否随机打乱数据,默认为True
  • save_to_dir:None或字符串,该参数能让你将提升后的图片保存起来,用以可视化
  • save_prefix:字符串,保存提升后图片时使用的前缀, 仅当设置了save_to_dir时生效
  • save_format:“png"或"jpeg"之一,指定保存图片的数据格式,默认"jpeg”
  • yields:形如(x,y)的tuple,x是代表图像数据的numpy数组.y是代表标签的numpy数组.该迭代器无限循环.
    g"
  • yields:形如(x,y)的tuple,x是代表图像数据的numpy数组.y是代表标签的numpy数组.该迭代器无限循环.
  • seed: 整数,随机数种子

你可能感兴趣的:(keras实现数据增强)