在深度学习中,我们经常需要用到一些技巧(比如将图片进行旋转,翻转等)来进行data augmentation, 来减少过拟合。 在本文中,我们将主要介绍如何用深度学习框架keras来自动的进行data augmentation。

keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,samplewise_center=False,featurewise_std_normalization=False,samplewise_std_normalization=False,zca_whitening=False,zca_epsilon=1e-6,rotation_range=0.,width_shift_range=0.,height_shift_range=0.,shear_range=0.,zoom_range=0.,channel_shift_range=0.,fill_mode='nearest',cval=0.,horizontal_flip=False,vertical_flip=False,rescale=None,preprocessing_function=None,data_format=K.image_data_format())

  • 生成批次的带实时数据增益的张量图像数据。数据将按批次无限循环。
  • 参数

    • featurewise_center: 布尔值。将输入数据的均值设置为 0,逐特征进行。
    • samplewise_center: 布尔值。将每个样本的均值设置为 0。
    • featurewise_std_normalization: 布尔值。将输入除以数据标准差,逐特征进行。
    • samplewise_std_normalization: 布尔值。将每个输入除以其标准差。
    • zca_epsilon: ZCA 白化的 epsilon 值,默认为 1e-6。
    • zca_whitening: 布尔值。应用 ZCA 白化。
    • 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" or "wrap"} 之一。输入边界以外的点根据给定的模式填充:
      • "constant": kkkkkkkk|abcd|kkkkkkkk (cval=k)
      • "nearest": aaaaaaaa|abcd|dddddddd
      • "reflect": abcddcba|abcd|dcbaabcd
      • "wrap": abcdabcd|abcd|abcdabcd
    • cval: 浮点数或整数。用于边界之外的点的值,当 fill_mode = "constant" 时。
    • horizontal_flip: 布尔值。随机水平翻转。
    • vertical_flip: 布尔值。随机垂直翻转。
    • rescale: 重缩放因子。默认为 None。如果是 None 或 0,不进行缩放,否则将数据乘以所提供的值(在应用任何其他转换之前)。
    • preprocessing_function: 应用于每个输入的函数。这个函数会在任何其他改变之前运行。这个函数需要一个参数:一张图像(秩为 3 的 Numpy 张量),并且应该输出一个同尺寸的 Numpy 张量。
    • data_format: {"channels_first", "channels_last"} 之一。"channels_last" 模式表示输入尺寸应该为 (samples, height, width, channels),"channels_first" 模式表示输入尺寸应该为 (samples, channels, height, width)。默认为 在 Keras 配置文件 ~/.keras/keras.json 中的 image_data_format 值。如果你从未设置它,那它就是 "channels_last"。
  • 方法:
  • fit(x): 根据一组样本数据,计算与数据相关转换有关的内部数据统计信息。当且仅当 featurewise_center 或 featurewise_std_normalization 或 zca_whitening 时才需要。
  • flow(x, y): 传入 Numpy 数据和标签数组,生成批次的 增益的/标准化的 数据。在生成的批次数据上无限制地无限次循环。
  • flow_from_directory(directory): 以目录路径为参数,生成批次的 增益的/标准化的 数据。在生成的批次数据上无限制地无限次循环。
from keras.preprocessing.image import ImageDataGenerator,array_to_img,img_to_array,load_imgdatagen=ImageDataGenerator(rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest'
)img=load_img("test.jpg")
x=img_to_array(img) # 把PIL图像格式转换成numpy格式
x=x.reshape((1,)+x.shape)i=0
for batch in datagen.flow(x,batch_size=2,save_to_dir="datagen",save_prefix="cat",save_format="jpeg"):i+=1if i>10:break

其他注意api:

compile

compile(self, optimizer, loss, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None) 

用于配置训练模型。

fit

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None) 

以固定数量的轮次(数据集上的迭代)训练模型。

fit_generator

fit_generator(self, generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False, shuffle=True, initial_epoch=0) 

使用 Python 生成器逐批生成的数据,按批次训练模型。

evaluate

evaluate(self, x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None) 

在测试模式下返回模型的误差值和评估标准值。

evaluate_generator

evaluate_generator(self, generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False)

在数据生成器上评估模型。

predict

predict(self, x, batch_size=None, verbose=0, steps=None)

为输入样本生成输出预测。

predict_generator

predict_generator(self, generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0) 

为来自数据生成器的输入样本生成预测。

  • https://keras.io/zh/preprocessing/image/

Keras Data augmentation(数据扩充)相关推荐

  1. Keras ImageDataGenerator用于数据扩充/增强的原理及方法

    摘要 在这篇博客中,您将学习如何使用Keras的ImageDataGenerator类执行数据扩充/增强.另外将介绍什么是数据增强,数据增强的类型,为什么使用数据增强以及它能做什么/不能做什么. 有三 ...

  2. data augmentation 数据增强方法总结

    1.问题描述 收集数据准备微调深度学习模型时,经常会遇到某些分类数据严重不足的情况,另外数据集过小容易造成模型的过拟合. 本文参考一些网友对于数据增强方法的一些tips,后续会附上自己实现的C++代码 ...

  3. DEC-DA:Deep Embedded Clustering with Data Augmentation

    Deep Embedded Clustering with Data Augmentation 1 摘要 2 介绍 3 相关工作 3.1 Denoising Autoencoder 3.2 Deep ...

  4. MulDA: A Multilingual Data Augmentation Framework for Low-Resource Cross-Lingual NER 阅读笔记

    MulDA: A Multilingual Data Augmentation Framework for Low-Resource Cross-Lingual NER 2021 Associatio ...

  5. 【深度学习】数据扩充 (Data Augmentation)

    Introduction 数据扩充(data augmentation),又名 数据增强 / 数据增广. 其本质即: 缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花. 数据扩充方法包括: 简 ...

  6. tf torch keras 数据增强 data augmentation

    数据增强 data augmentation 2017年11月14日 22:19:27 阅读数:7964

  7. Data Augmentation for Deep Learning-based Radio ModulationClassification解读(基于深度学习的无线电调制分类数据扩充)

    摘要:深度学习最近被应用于自动分类接收无线电信号的调制类别,而无需人工经验.然而,训练深度学习模型需要大量的数据.训练数据不足会导致严重的过度拟合问题,降低分类精度.为了处理小数据集,数据增强被广泛应 ...

  8. Keras Image Data Augmentation 各参数详解

    图像深度学习任务中,面对小数据集,我们往往需要利用Image Data Augmentation图像增广技术来扩充我们的数据集,而keras的内置ImageDataGenerator很好地帮我们实现图 ...

  9. 数据增强 data augmentation

    有人称为数据扩充,不过更多按原意翻译为:数据增强(补充:数据增广更准确) 数据增强的方法种类 一些常见方法,如裁剪/缩放/彩色变换/翻转等,可参考:https://www.cnblogs.com/zh ...

最新文章

  1. shell的数字、字符串处理
  2. 数据库审计服务器性能要求,数据库审计技术指标资质要求-.docx
  3. 2013年新的开始,每周至少要写一篇博客!
  4. ckeditor5加字数_CKEditor5基本使用
  5. 北京内推 | ​百度自然语言处理部内容理解方向招收NLP算法实习生
  6. IO-BufferedInputStream
  7. mysqldump导出数据库 (dos环境下)
  8. LocalReport Print with C# C#打印RDLC
  9. 2.Functions and Getting Help
  10. python外卷(10)--取整
  11. python中number函数_Python 数字(Number)
  12. Java™ 教程(常见问题及其解决方案)
  13. 动态修改实体类转json的属性名
  14. devc运行窗口不显示_编写Qt多窗口程序
  15. Java面试中如何介绍自己的项目经验?
  16. 渗透小实战 BSPHP验证系统存在未授权访问漏洞
  17. 和ZLTT一起学pwn 2.ret2text
  18. 本机微信开发环境搭建
  19. win8经典开始菜单计算机,玩转Win8.1开始菜单将那个经典的“老菜单”恢复回来...
  20. 计算机专业写不出程序,计算机专业的同学总说在编写程序,他们究竟在编什

热门文章

  1. 轻量级ORM框架Dapper应用四:使用Dapper返回多个结果集
  2. EXSITS应该怎么用?
  3. 2017计算机软件,2017年计算机防病毒软件排名全面保护PC安全!
  4. 小说形象特征包括哪些方面_中高考常考题:怎样鉴赏散文中的形象 ?
  5. Elastic-Job任务类
  6. spring boot整合redis实现统计访问量
  7. 分布式认证-技术方案
  8. 分布式架构的负载均衡算法
  9. 复制多级文件夹【应用】
  10. 函数的返回值-改造求和函数