写在前面的话

  1. 受教于学长,Keras的探究还需进行
  2. 要把Keras用得熟练并非那么容易

1.ImageDataGenerator 类

参考文献:https://keras.io/zh/preprocessing/image/

1.1使用datagen.flow()

import keras.datasets.cifar10 as cifar10 # 这里源码中没有写,我自己加上了
(x_train, y_train), (x_test, y_test) = cifar10.load_data() # 加载cifar10数
# 将标签全部转换为one—hot类型的
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
# ImageDataGenerator中的输入参数是dict类型的
datagen = ImageDataGenerator(featurewise_center=True,featurewise_std_normalization=True,rotation_range=20,width_shift_range=0.2,height_shift_range=0.2,horizontal_flip=True)# 计算特征归一化所需的数量
# (如果应用 ZCA 白化,将计算标准差,均值,主成分)
datagen.fit(x_train) # x_train为4维张量# 使用实时数据增强的批数据对模型进行拟合:
model.fit_generator(datagen.flow(x_train, y_train, batch_size=32),steps_per_epoch=len(x_train) / 32, epochs=epochs)# 这里有一个更 「手动」的例子
for e in range(epochs):print('Epoch', e)batches = 0# 一次读了32个训练数据进来for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):model.fit(x_batch, y_batch)  # 训练batches += 1if batches >= len(x_train) / 32:# 我们需要手动打破循环,# 因为生成器会无限循环break

1.2使用train_datagen.flow_from_directory()

train_datagen = ImageDataGenerator(rescale=1./255,shear_range=0.2,zoom_range=0.2,horizontal_flip=True)test_datagen = ImageDataGenerator(rescale=1./255)
# flow_from_directory()第一个参数是数据所在目录,且在这个目录下包含多个独立的子文件夹,每个文件夹下面放着同种类别的数据,这些独立的子文件夹将自动视为不同的类别,也就省去了做标签的过程了
# 其中的binary指的是二分类问题,categorical指one-hot多分类,sparse指整数多分类,input用于自编码
train_generator = train_datagen.flow_from_directory('data/train',target_size=(150, 150),batch_size=32,class_mode='binary')validation_generator = test_datagen.flow_from_directory('data/validation',target_size=(150, 150),batch_size=32,class_mode='binary')model.fit_generator(train_generator,steps_per_epoch=2000,epochs=50,validation_data=validation_generator,validation_steps=800)

1.3同时对image和mask做数据增强

# 创建两个相同参数的实例
# data_gen_args 是一个字典变量
data_gen_args = dict(featurewise_center=True,featurewise_std_normalization=True,rotation_range=90,width_shift_range=0.1,height_shift_range=0.1,zoom_range=0.2)
# 这里用到的**data_gen_args其实就是定义了一种dict传入函数的方式
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)# 为 fit 和 flow 函数提供相同的种子和关键字参数
seed = 1
image_datagen.fit(images, augment=True, seed=seed)
mask_datagen.fit(masks, augment=True, seed=seed)image_generator = image_datagen.flow_from_directory('data/images',class_mode=None,  # None的作用是只返回数据增强后的数据,而不生成标签,这对model.predict_generator(), model.evaluate_generator()是很有用的seed=seed)mask_generator = mask_datagen.flow_from_directory('data/masks',class_mode=None,seed=seed)# 将生成器组合成一个产生图像和蒙版(mask)的生成器
train_generator = zip(image_generator, mask_generator)# fit_generator可以完成咋cpu上进行实时数据增强,然后同时使用GPU进行模型的训练
model.fit_generator(train_generator,steps_per_epoch=2000,epochs=50)

补:

2.用dict变量给keras中的ImageDataGenerator()赋值
from keras.preprocessing.image import ImageDataGenerator
data_gen_args = dict(rotation_range=90) #等效于以下的表达方式:{'rotation_range':90}
image_datagen = ImageDataGenerator(**data_gen_args) # 这里加不加**都可以

本人现在的研究方向是:
图像的语义分割,如果有志同道合的朋友,可以组队学习
haiyangpengai@gmail.com qq:1355365561

Keras中文文档:图像预处理ImageDataGenerator 类详细学习记录相关推荐

  1. keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)

    版权声明:小博主水平有限,希望大家多多指导. 目录: [使用传统DNN] BG大龍:[DL项目实战02]图像分类--Keras框架+使用传统神经网络DNN​zhuanlan.zhihu.com [使用 ...

  2. keras中文文档学习笔记—快速上手keras

    keras的核心数据结构是"model",其中最主要的是Sequential模型: Sequential模型调用 from keras.model import Sequentia ...

  3. keras中文文档_Keras分词器Tokenizer

    Tokenizer 是一个用于向量化文本,或将文本转换为序列的类.是用来文本预处理的第一步:分词. 简单来说,计算机在处理语言文字时,是无法理解文字的含义,通常会把一个词(中文单个字或者词组认为是一个 ...

  4. dropout层加在哪里_常用层 - Keras中文文档

    常用层 常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接.激活层等 Dense层 keras.layers.core.Dense(units, activation=None ...

  5. Keras 深度学习框架中文文档

    2019独角兽企业重金招聘Python工程师标准>>> Keras深度学习框架中文文档 Keras官网:http://keras.io/ Github项目:https://githu ...

  6. Keras官方中文文档:Keras安装和配置指南(Windows)

    这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...

  7. PyTorch中文文档阅读笔记-day1

    写在开头(重复的) 1.课程来源:torch中文教程1.7版. torch中文文档. 2.笔记目的:个人学习+增强记忆+方便回顾 3.时间:2021年4月29日 4.仅作为个人笔记,如有需要请务必按照 ...

  8. Python 深度学习库 Keras 发布官方中文文档,这里有你需要了解的一切

    今年1月,Keras作者.谷歌AI研究员François Chollet在推特上发出召唤:讲中文的Keras用户们,是否有人愿意帮忙一起搞个Keras文档的中文版? 一个多月后,官方中文文档来了. K ...

  9. 【Scikit-Learn 中文文档】34 预处理数据 - 数据集转换 - 用户指南 | ApacheCN

    中文文档: http://sklearn.apachecn.org/cn/stable/modules/preprocessing.html 英文文档: http://sklearn.apachecn ...

最新文章

  1. SSL与TLS的区别
  2. 您与此网站建立的连接不安全_PERT地暖管热熔连接到底安全不安全?
  3. codis配置_codis 源码理解
  4. centos配置单网卡双IP
  5. 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究
  6. C/C++线程与多线程工作笔记0006---VC++中_T()的作用
  7. [] __nw_connection
  8. asp.net连接access数据库两种方法
  9. android删除重复照片,android 删除重复文件
  10. Rust : codewars的Product of consecutive Fib numbers
  11. 运维--域服务器--搭建
  12. 消费者行为学的典型营销案例
  13. 猜数游戏,随机生成一个1~100的数进行猜测。
  14. 疾病负担研究(GBD)-如何绘制GBD相关性图
  15. 程序员因工资低拒绝offer,HR:估计你一辈子就是个程序员
  16. java后台生成echarts图表
  17. 路由器DNS被劫持 解决办法、网站被劫持怎么办怎么解决
  18. 将DAT格式视频文件转换成ASF和WMV格式视频文件
  19. 岁末年初,2013随笔
  20. sketch操作(一)

热门文章

  1. vs不想运行某个项目_Creo二次开发--项目搭建
  2. java希尔排序_java_java高级排序之希尔排序,希尔排序对于多达几千个数据 - phpStudy...
  3. Linux中的文件查找技巧
  4. N---Exponentiation
  5. 图像处理——PIL、OpenCV和numpy表示图像数据格式的相互转换
  6. Android测试——在Python中如何将Windows程序前台显示
  7. 如何在Linux中的virtualbox中安装Windows 10
  8. gpu版本的torch安装
  9. leetcode939.MinimumAreaRectangle
  10. asp.net免费网站三剑客:WebMatrix + MojoPortal + SQLCE