深度学习14 数据扩充效果查看

基于keras的数据扩充方法参数较为繁多,在本博客中将一一测试ImageDataGenerator的各个参数的扩充效果。

1、扩充参数列表说明

可设置的参数列表中,关于数据扩充的方法一共有11个,其中fill_model不参与测试

datagen = image.ImageDataGenerator(
                                   fill_mode='nearest',   #默认值,操作导致图像缺失时填充方式。constant,nearest,eflect,wrap
                                   channel_shift_range=0.0,#浮点数[0.0,255.0],图像上色
                                   rotation_range=90	,  # 指定旋转角度范围
                                   zca_whitening=False,#是否应用 ZCA 白化。
                                   brightness_range=[0.3,1.5],#随机调整亮度
                                   width_shift_range=0.2,  #水平平移百分比,不宜太大一般0.1,0.2
                                   height_shift_range=0.2,  #垂直平移百分比,不宜太大一般0.1,0.2
                                   zoom_range=[0.9,1],    #随机缩放范围
                                   horizontal_flip=True,   # 随机对图片执行水平翻转操作
                                   vertical_flip=True,  # 对图片执行上下翻转操作
                                   shear_range=30,#错切变换角度。
                                   
                                   rescale=1./255,  # 缩放
                                   data_format='channels_last')

逐个测试的参数列表如一下数组所示 

aug_method=['channel_shift_range=128',
            'rotation_range=360',
            'zca_whitening=True',
            'brightness_range=[0.1,3]',
            'width_shift_range=0.5',
            'height_shift_range=0.5',
            'zoom_range=[0.5,2]',
            'shear_range=30',
            'horizontal_flip=True',
            'vertical_flip=True']

原始图像:

 2、各种参数下的扩充效果

 channel_shift_range=128 扩充效果

 rotation_range=360 扩充效果

zca_whitening=True (感官上无任何效果)

brightness_range=[0.1,3] 

width_shift_range=0.5 (水平平移)

height_shift_range=0.5 (垂直平移) 

zoom_range=[0.5,2]  (随机缩放)

 shear_range=90 (随机倾斜角度)

horizontal_flip=True

 

vertical_flip=True  

 

 3、用于测试自己数据扩充效果的全部代码

from PIL import Image
import numpy as np
from keras.preprocessing import image
import os
# 生成图片地址和对应标签
file_dir1 = r"data"
shape=(350,500)
seed = 1
# 设置生成器参数
datagen = image.ImageDataGenerator(
                                   fill_mode='nearest',   #默认值,操作导致图像缺失时填充方式。constant,nearest,eflect,wrap
                                   channel_shift_range=0.0,#浮点数[0.0,255.0],图像上色
                                   rotation_range=90	,  # 指定旋转角度范围
                                   zca_whitening=False,#是否应用 ZCA 白化。
                                   brightness_range=[0.3,1.5],#随机调整亮度
                                   width_shift_range=0.2,  #水平平移百分比,不宜太大一般0.1,0.2
                                   height_shift_range=0.2,  #垂直平移百分比,不宜太大一般0.1,0.2
                                   zoom_range=[0.9,1],    #随机缩放范围
                                   horizontal_flip=True,   # 随机对图片执行水平翻转操作
                                   vertical_flip=True,  # 对图片执行上下翻转操作
                                   shear_range=30,#错切变换角度。
                                   
                                   rescale=1./255,  # 缩放
                                   data_format='channels_last')
aug_method=['channel_shift_range=128',
            'rotation_range=360',
            'zca_whitening=True',
            'brightness_range=[0.1,3]',
            'width_shift_range=0.5',
            'height_shift_range=0.5',
            'zoom_range=[0.5,2]',
            'shear_range=30',
            'horizontal_flip=True',
            'vertical_flip=True']

import math
batch_size=1
for am in aug_method:
    tag=am.split('=')[0]
    save_path1="data-%s"%tag
    if not os.path.exists(save_path1):
        os.makedirs(save_path1)
    datagen=eval("image.ImageDataGenerator(%s)"%am)
    gen1=datagen.flow_from_directory(file_dir1,
                                   target_size=shape,
                                   batch_size=batch_size,
                                   save_to_dir=save_path1,
                                   save_prefix='kc',
                                   seed=seed,
                                   save_format='jpg')
    step=math.ceil(len(gen1.classes)/gen1.batch_size)
    #把数据扩充50倍
    for i in range(10*step):
        gen1.next()
    print("%s:数据扩充完成"%am)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里鹏程转瞬至

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值