ImageDataGenerator生成器的flow,flow_from_directory用法

2023-11-16

flow:

flow(self, X, y, batch_size=32, shuffle=True, seed=None, save_to_dir=None, save_prefix='', save_format='png'):接收numpy数组和标签为参数,生成经过数据提升或标准化后的batch数据,并在一个无限循环中不断的返回batch数据

  • x:样本数据,秩应为4.在黑白图像的情况下channel轴的值为1,在彩色图像情况下值为3

  • y:标签

  • batch_size:整数,默认32

  • shuffle:布尔值,是否随机打乱数据,默认为True

  • save_to_dir:None或字符串,该参数能让你将提升后的图片保存起来,用以可视化

  • save_prefix:字符串,保存提升后图片时使用的前缀, 仅当设置了save_to_dir时生效

  • save_format:"png"或"jpeg"之一,指定保存图片的数据格式,默认"jpeg"

  • yields:形如(x,y)的tuple,x是代表图像数据的numpy数组.y是代表标签的numpy数组.该迭代器无限循环.

  • seed: 整数,随机数种子

 

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import numpy as np
datagen = 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')
l=[]
img = load_img(r"C:\Users\Fsl\Desktop\000015.jpg")  # this is a PIL image
img1 = load_img(r"C:\Users\Fsl\Desktop\000014.jpg")  # this is a PIL image
y=img_to_array(img1)
x = img_to_array(img) # this is a Numpy array with shape (3, 150, 150)
l.append(x)
l.append(y)
l=np.array(l)
#l = l.reshape((1,) + l.shape)  # this is a Numpy array with shape (1, 3, 150, 150)

# the .flow() command below generates batches of randomly transformed images
# and saves the results to the `preview/` directory
i = 0
for batch in datagen.flow(l, batch_size=2,
                          save_to_dir=r'C:\Users\Fsl\Desktop\pic', save_format='jpg'):
    i += 1
    if i > 2:
        break  # otherwise the generator would loop indefinitely

输出:

 

flow_from_directory :

flow_from_directory(directory): 以文件夹路径为参数,生成经过数据提升/归一化后的数据,在一个无限循环中无限产生batch数据

  • directory: 目标文件夹路径,对于每一个类,该文件夹都要包含一个子文件夹.子文件夹中任何JPG、PNG、BNP、PPM的图片都会被生成器使用.详情请查看此脚本
  • target_size: 整数tuple,默认为(256, 256). 图像将被resize成该尺寸
  • color_mode: 颜色模式,为"grayscale","rgb"之一,默认为"rgb".代表这些图片是否会被转换为单通道或三通道的图片.
  • classes: 可选参数,为子文件夹的列表,如['dogs','cats']默认为None. 若未提供,则该类别列表将从directory下的子文件夹名称/结构自动推断。每一个子文件夹都会被认为是一个新的类。(类别的顺序将按照字母表顺序映射到标签值)。通过属性class_indices可获得文件夹名与类的序号的对应字典。
  • class_mode: "categorical", "binary", "sparse"或None之一. 默认为"categorical. 该参数决定了返回的标签数组的形式, "categorical"会返回2D的one-hot编码标签,"binary"返回1D的二值标签."sparse"返回1D的整数标签,如果为None则不返回任何标签, 生成器将仅仅生成batch数据, 这种情况在使用model.predict_generator()model.evaluate_generator()等函数时会用到.
  • batch_size: batch数据的大小,默认32
  • shuffle: 是否打乱数据,默认为True
  • seed: 可选参数,打乱数据和进行变换时的随机数种子
  • save_to_dir: None或字符串,该参数能让你将提升后的图片保存起来,用以可视化
  • save_prefix:字符串,保存提升后图片时使用的前缀, 仅当设置了save_to_dir时生效
  • save_format:"png"或"jpeg"之一,指定保存图片的数据格式,默认"jpeg"
  • flollow_links: 是否访问子文件夹中的软链接
from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
import numpy as np
datagen = 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')

gener=datagen.flow_from_directory(r'E:\C3D_Data\trian',#类别子文件夹的上一级文件夹
                                         batch_size=2,
                                         shuffle=False,
                                         save_to_dir=r'E:\C3D_Data\train_result',
                                         save_prefix='trans_',
                                         save_format='jpg')
for i in range(3):
    gener.next()

输入:trian文件夹下只有一个people文件夹:

 

 输出:(注意个数和顺序)

 flow_from_directory伪代码:(或许这样你更好理解)

xm,y=getDataIndex()#获取所有文件夹中所有图片索引,以及文件夹名也即标签
if shuffle==True:
    shuffle(xm,y)#打乱图片索引及其标签
while(True):
    for i in range(0,len(x),batch_size):
        xm_batch=xm[i:i+batch_size]#文件索引
        y_batch=y[i:i+batch_size]
        x_batch=getImg(xm_batch)#根据文件索引,获取图像数据
        ImagePro(x_batch)#数据增强
        #保存提升后的图片
        #saveToFile()
        yield (x_batch,y_batch)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ImageDataGenerator生成器的flow,flow_from_directory用法 的相关文章

  • 合肥工业大学 软件学院 软件质量保证与测试 第九章 软件测试

    文章目录 第九章 软件测试 1 软件测试概述 1 1 软件测试的定义 1 2 软件测试的目的 2 软件测试过程 3 软件测试类型 3 1 单元测试 3 2 集成测试 测试方法 3 3 系统测试 3 4 验收测试 3 5 回归测试 3 6 补
  • 高通功耗调试16之连接BT待机功耗大问题分析(Android P)

    问题背景 Android P上Google修改了BT的代码 在待机时允许modem上报网络信号强度给AP 因此连接BT待 机时AP会被频繁唤醒 导致待机功耗增加 问题解决 问题分析请参考KBA 190212004248 适用平台 ALL A
  • iOS安全攻防—目录

    The most difficult thing to do in a strange city is not to forget why you started the trip 在光怪陆离的城市拼尽全力 最难的是勿忘初心 一 工具篇 C
  • 响应式网页设计初探

    我首次接触响应式网页设计还要从应用bootstrap说起 我们运用bootstrap的网格类简单的将响应式设计带入我们的网页设计当中 当然bootstrap框架其实还做了其他事情以支持网页响应式设计 现在 就让我们一窥响应式网页设计背后的原

随机推荐

  • 【工具使用】Spyder代码补全问题

    我的Spyder突然不能够进行自动补全了 试了以下几种方法 1 如下图操作 但是没有任何用 2 在anaconda控制台输入pip list 查看安装了哪些包 如果存在enum34 则删除 pip uninstall enum34 重启sp
  • 利用偏函数设计学习率下降方式

    Python partial 首先 我们需要简单了解下偏函数的作用 和装饰器一样 它可以扩展函数的功能 但又不完成等价于装饰器 通常应用的场景是当我们要频繁调用某个函数时 其中某些参数是已知的固定值 通常我们可以调用这个函数多次 但这样看上
  • IP代理

    IP作为互联网的重要的桥梁 是计算机网络相互连接进行通信而设计的协议 正是因为有了P协议 因特网才得以迅速发展成为庞大的 开放的计算机通信网络 IP代理中常常可以看到IPv4与IPv6 今天就给各位跨境老板详细解释 他们是什么 如何选择 一
  • 计算机大四找不到工作怎么办?应届生如何找到合适的工作?

    计算机大四找不到工作怎么办呢 金三银四的到来 很多大四计算机专业学生最近很是焦虑 自己在校成绩不够突出 技术实力也是平平 投递了很多企业迟迟得不到反馈 眼看着毕业季越来越靠近 身边同学都已获得大厂offer 而自己手上一个offer都没有
  • Mac电脑M1芯片Python环境搭建

    一 安装miniforge 1 从github中下载miniforge 也可以在我的阿里云盘中下载miniforge 提取密码为 R6pb 2 打开终端 找到下载的文件的位置 进行安装 进入下载位置 cd XXX Downloads lis
  • flutter 打包安装后闪退问题

    问题 升级flutter插件后 生成release版apk 安装到手机启动flutter代码时出现闪退问题 log日志回报一系列的so库错误 原因 具体原因我不知道到什么原理造成 个人理解的应该是flutter sdk 版本问题 解决 在a
  • Linux查看文件大小的命令du的简单介绍

    文章目录 官方介绍 简单介绍 常用选项 与单位相关的选项 apparent size B block size SIZE b bytes k m 与遍历深度相关的选项 s summarize d max depth N h human re
  • 时间序列突变点检测

    我对时间序列异常点算法小结 基于时间序列的异常检测算法小结 Jasminexjf的博客 CSDN博客 基于时间序列的异常检测算法 当前异常检测类型 最重要的异常类型 例如意外的峰值 下降 趋势变化和水平转移 我主要研究的是负荷预测的突变点
  • mysql8的卸载

    mysql8的卸载 卸载mysql8 卸载mysql8 先在Windows界面使用快捷键Windows R搜索services msc进入服务 找到mysql并停止它 然后进入C盘将隐藏文件显示出来 进入装有mysql文件夹的三个文件并删除
  • 软件测试基础与基于生命周期的软件测试

    软件测试基础 2 1软件测试 2 1 1定义 在规定的条件下对程序进行操作 以发现程序是否满足设计错误 衡量软件质量并对其是否满足设计要求进行评估的过程 2 1 2目的 发现缺陷 提高质量 验证是否满足需求 建立软件质量的信心 2 1 3原
  • centos安装、docker配置、容器运行

    Linux下安装docker的使用 一 课程目标 1 docker是什么 2 docker的架构 名词解析 3 都看恻然对测试人员的意义 4 docker安装 5 镜像命令 6 容器命令 7 DockerFile介绍 8 部署项目实战 To
  • 在A100上使用TensorFlow1.15,提供安装nvidia-tensorflow[horovod] 需要的nvidia包的whl

    安装nvidia pyindex 和nvidia tensorflow horovod 需要的nvidia包的whl 已经传到百度网盘 nvidia tensorflow 1 15 5 nv22 04 CUDA12 在A100的显卡上运行T
  • pandas的导入导出

    Pandas 导入导出 pandas可以读取与存取的资料格式有很多种 像csv excel json html与pickle等 http pandas pydata org pandas docs stable io html import
  • Android性能优化实践---我是如何把构建布局耗时缩短-20-倍的(上)

    ensureOpenLocked 打开 xml 布局文件 final long xmlBlock nativeOpenXmlAsset mObject cookie fileName Android学习笔记总结 最新移动架构视频 大厂安卓面
  • 程序员如何营销自己

    程序员不要只会埋头写代码 还要学会营销自己 否则职业生涯可能会越走月窄 个人总结了一下 可以用以下办法营销自己 1 加入 N 多 QQ 群 在群里发言 最好是发一些有用的信息 如果实在无话可说 也时不时的冒个泡 证明你的存在 时间久了 问候
  • 小程序 wx.showModal 点击确定刷新页面

    wx showModal 这个方法 内部想调用外部的方法 需要改变指向 也就是let that this 但是 不要把 let that this 放在里面 这样指向不到 所以 let that this wx showModal titl
  • 攻防世界-web新手区

    目录 view source get post backup cookie disabled button simple js xff referer weak auth webshell command execution simple
  • Python机器学习入门;推荐一本Python数据分析与机器学习入门书籍-唐宇迪《跟着迪哥学 Python数据分析与机器学习实战》PDF+源代码

    学习python 然后用于数据分析 同时能够进行机器学习实战 按照这个流程 对AI爱好者有很大帮助 推荐学习 跟着迪哥学 Python数据分析与机器学习实战 结合了机器学习 数据分析和Python语言 通过案例以通俗易懂的方式讲解了如何将算
  • 【问题1】用蓝图有办法读取贴图上某一个点的颜色值吗

    答 C 实现方法 https isaratech com ue4 reading the pixels from a utexture2d 答主说有一个商城蓝图插件可以实现 需要60刀 没说是哪个资源
  • ImageDataGenerator生成器的flow,flow_from_directory用法

    flow flow self X y batch size 32 shuffle True seed None save to dir None save prefix save format png 接收numpy数组和标签为参数 生成经