ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-09-10 16:59:50  阅读:353  来源: 互联网

标签:扩充 14 查看 shift 0.2 0.5 flip range True


基于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)

标签:扩充,14,查看,shift,0.2,0.5,flip,range,True
来源: https://blog.csdn.net/a486259/article/details/120225202

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有