深度学习14 数据扩充效果查看
2023-09-14 09:15:04 时间
基于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)
相关文章
- Struts2学习笔记《一》
- 机器学习入门08 - 表示法 (Representation)
- Lucene5学习之NumericRangeQuery使用
- Python深入学习之特殊方法与多范式
- Android开发学习---如何写数据到外部存储设备(sd卡),Environment.getExternalStorageDirectory,怎么获取sd卡的大小?
- 机器学习笔记 - 在Vehicles数据集上训练 YOLOv5 目标检测器
- 学习ASP.NET Core,你必须了解无处不在的“依赖注入”
- 使用Java程序消费SAP Leonardo的机器学习API
- Flutter学习 — 从新页面返回数据给上一个页面
- Python编程语言学习:for循环实现对多个不同的DataFrame数据执行相同操作(可用于对分开的测试集、训练集实现执行相同逻辑任务)
- ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读
- ML之DataScience:基于机器学习处理数据科学(DataScience)任务(数据分析、特征工程、科学预测等)的简介、流程、案例应用执行详细攻略
- ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现
- ML:人工智能之机器学习ML解决实际应用问题的思路总过程(最全)
- Python编程语言学习:判断两个列表是否对应完全相等(巧解输出是一摸一样的列表数据,但就是不相等)
- Python编程语言学习:批量对array数组数据按照条件限制进行替换/修改、横向拼接两个array矩阵数据
- 通俗的理解机器学习
- 强化学习之贝尔曼方程中文解释
- M-SQL:超强的多任务表示学习方法
- Python Flask框架学习13:Flask Cookies
- Pytorch迁移学习---训练花卉数据集
- 智能车学习(六)——OLED屏幕使用
- Kinect学习笔记(六)——深度数据测量技术及应用
- 特征学习——特征工程自动化,无非类似CNN最后一层softmax前的输出层就是特征表征层,但那是分类器,如何用在无标注数据中是难点——word2vec对“上下文”距离建模来实现特征提取;此外,kernel mechine的结合相当于学习内核,即特征空间
- Hive最全学习笔记总结
- 深度学习笔记:为什么(预)特征提取不能与数据增强结合使用
- Pytorch 2 迁移学习 图像数据集分类