您当前的位置:首页 > IT编程 > Keras
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:深度学习扩增小数据集样本-Keras数据增强并保存到本地

51自学网 2022-03-01 15:39:14
  Keras
这篇教程深度学习扩增小数据集样本-Keras数据增强并保存到本地写得很实用,希望能帮到您。

Keras数据增强并保存到本地

当需要对指定文件夹下的图片进行数据增广时,使用keras的ImageDataGenerator类的flow_from_directory()方法可快速的实现

1.首先实例化ImageDataGenerator对象以自己想要的属性

 img_datagen = keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
                                             samplewise_center=False,
                                             featurewise_std_normalization=False,
                                             samplewise_std_normalization=False,
                                             zca_whitening=False,
                                             zca_epsilon=1e-06,
                                             rotation_range=0,
                                             width_shift_range=0.0,
                                             height_shift_range=0.0,
                                             shear_range=0.0,
                                             zoom_range=0.0,
                                             horizontal_flip=False,
                                             vertical_flip=False,
                                             rescale=None, )
#### 对于数据增强主要可能用到的属性如下,按自己的需求设置即可:

##### featurewise_center: 布尔值。将输入数据的均值设置为 0,逐特征进行。
#####  samplewise_center: 布尔值。将每个样本的均值设置为 0。
##### featurewise_std_normalization: Boolean. 布尔值。将输入除以数据标准差,逐特征进行。
##### zca_epsilon: ZCA 白化的 epsilon 值,默认为 1e-6。
##### zca_whitening: 布尔值。是否应用 ZCA 白化。
##### rotation_range: 整数。随机旋转的度数范围。
##### width_shift_range: 浮点数、一维数组或整数
##### height_shift_range: 浮点数、一维数组或整数
##### shear_range: 浮点数。剪切强度(以弧度逆时针方向剪切角度)。
##### zoom_range: 浮点数 或 [lower, upper]。随机缩放范围。
##### channel_shift_range: 浮点数。随机通道转换的范围。
##### horizontal_flip: 布尔值。随机水平翻转。
##### vertical_flip: 布尔值。随机垂直翻转。

Copy

2. 调用flow_from_directory()函数

train_generator = train_datagen.flow_from_directory(
            directory = img_path,
            target_size=(224, 224),
            batch_size= batch_size,
            save_to_dir= "./data/test_data/",
            class_mode= class_mode)

####  可选参数如下
##### directory: 目标目录的路径。每个类应该包含一个子目录。任何在子目录树下的 PNG, JPG, BMP, PPM 或 TIF 图像,都将被包含在生成器中。
##### target_size: 整数元组 (height, width),默认:(256, 256)。所有的图像将被调整到的尺寸。
##### color_mode: "grayscale", "rbg" 之一。默认:"rgb"。图像是否被转换成 1 或 3 个颜色通道。
##### classes: 可选的类的子目录列表(例如 ['dogs', 'cats'])。默认:None。如果未提供,类的列表将自动从 directory 下的 子目录名称/结构 中推断出来,其中每个子目录都将被作为不同的类(类名将按字典序映射到标签的索引)。包含从类名到类索引的映射的字典可以通过 class_indices 属性获得。
##### class_mode: "categorical", "binary", "sparse", "input" 或 None 之一。对于只进行数据增强,设置为None.
##### batch_size: 一批数据的大小(默认 32)。
##### save_to_dir: None 或 字符串(默认 None)。图片保存目录!!!
##### save_prefix: 字符串。 保存图片的文件名前缀(仅当 save_to_dir 设置时可用)。
##### save_format: "png", "jpeg" 之一(仅当 save_to_dir 设置时可用)。默认:"png"。
##### interpolation: 在目标大小与加载图像的大小不同时,用于重新采样图像的插值方法。

Copy

3.小例子

注意事项: 1:class_mode设置为None,只生成图像 2:一定要调用生成器,写了个for循环一直调用(但是好像不会停,可以写个计数让它停下啦)

import keras
frozm keras_preprocessing.image import ImageDataGenerator

def generate_from_derictory(img_path,batch_size,class_mode = None):
    train_datagen = ImageDataGenerator(
            rescale=1./255,
            shear_range=0.2,
            zoom_range=0.2,
            featurewise_center=True,
            samplewise_center= True,
            featurewise_std_normalization= True,
            samplewise_std_normalization= True,
            zca_whitening= True,
            zca_epsilon=1e-06,
            rotation_range=0.3,
            width_shift_range=0.3,
            height_shift_range=0.3,
            brightness_range=None,
            channel_shift_range=0.2,
            fill_mode='nearest',
            cval=0.0,
            horizontal_flip=True,
            vertical_flip= True,
            validation_split=0.0
    )

    train_generator = train_datagen.flow_from_directory(
            directory=img_path,
            target_size=(224, 224),
            batch_size= batch_size,
            save_to_dir= "./data/aug_data/",
            class_mode= class_mode)
    return train_generator

data_gen = generate_from_derictory('./data/train_data/',64,None)
for im in data_gen:
    print("do some thing")

原文;http://note4lin.top/post/keras_data_aug/


实现批量数据增强 | keras ImageDataGenerator使用
keras模型的FLOPs值计算方法
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1