Keras中 ImageDataGenerator函数的参数用法


Posted in Python onJuly 03, 2020

一、Keras ImageDataGenerator参数

from keras.preprocessing.image import ImageDataGenerator
keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
  samplewise_center=False,
  featurewise_std_normalization = False,
  samplewise_std_normalization = False,
  zca_whitening = False,
  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.0,
  horizontal_flip = False,
  vertical_flip = False,
  rescale = None,
  preprocessing_function = None,
  data_format = K.image_data_format(),
)

featurewise_center:布尔值,使输入数据集去中心化(均值为0), 按feature执行。

samplewise_center:布尔值,使输入数据的每个样本均值为0。

featurewise_std_normalization:布尔值,将输入除以数据集的标准差以完成标准化, 按feature执行。

samplewise_std_normalization:布尔值,将输入的每个样本除以其自身的标准差。

zca_whitening:布尔值,对输入数据施加ZCA白化。

rotation_range:整数,数据提升时图片随机转动的角度。随机选择图片的角度,是一个0~180的度数,取值为0~180。 在 [0, 指定角度] 范围内进行随机角度旋转。

width_shift_range:浮点数,图片宽度的某个比例,数据提升时图片随机水平偏移的幅度。

height_shift_range:浮点数,图片高度的某个比例,数据提升时图片随机竖直偏移的幅度。 height_shift_range和width_shift_range是用来指定水平和竖直方向随机移动的程度,这是两个0~1之间的比例。

shear_range:浮点数,剪切强度(逆时针方向的剪切变换角度)。是用来进行剪切变换的程度。

zoom_range:浮点数或形如[lower,upper]的列表,随机缩放的幅度,若为浮点数,则相当于[lower,upper] = [1 - zoom_range, 1+zoom_range]。用来进行随机的放大。(后面的例子与此处说法有矛盾,感觉后边是对的?)

channel_shift_range:浮点数,随机通道偏移的幅度。

fill_mode:‘constant',‘nearest',‘reflect'或‘wrap'之一,当进行变换时超出边界的点将根据本参数给定的方法进行处理

cval:浮点数或整数,当fill_mode=constant时,指定要向超出边界的点填充的值。

horizontal_flip:布尔值,进行随机水平翻转。随机的对图片进行水平翻转,这个参数适用于水平翻转不影响图片语义的时候。

vertical_flip:布尔值,进行随机竖直翻转。

rescale: 值将在执行其他处理前乘到整个图像上,我们的图像在RGB通道都是0~255的整数,这样的操作可能使图像的值过高或过低,所以我们将这个值定为0~1之间的数。

preprocessing_function: 将被应用于每个输入的函数。该函数将在任何其他修改之前运行。该函数接受一个参数,为一张图片(秩为3的numpy array),并且输出一个具有相同shape的numpy array

data_format:字符串,“channel_first”或“channel_last”之一,代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channel_last”对应原本的“tf”,“channel_first”对应原本的“th”。以128x128的RGB图像为例,“channel_first”应将数据组织为(3,128,128),而“channel_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channel_last”。

二、Data Aumentation(数据扩充)说明

Data Aumentation(数据扩充)指的是在使用以下或者其他方法增加数据输入量。这里,我们特指图像数据。

旋转 | 反射变换(Rotation/reflection): 随机旋转图像一定角度; 改变图像内容的朝向;

翻转变换(flip): 沿着水平或者垂直方向翻转图像;

缩放变换(zoom): 按照一定的比例放大或者缩小图像;

平移变换(shift): 在图像平面上对图像以一定方式进行平移;可以采用随机或人为定义的方式指定平移范围和平移步长, 沿水平或竖直方向进行平移. 改变图像内容的位置;

尺度变换(scale): 对图像按照指定的尺度因子, 进行放大或缩小; 或者参照SIFT特征提取思想, 利用指定的尺度因子对图像滤波构造尺度空间. 改变图像内容的大小或模糊程度;

对比度变换(contrast): 在图像的HSV颜色空间,改变饱和度S和V亮度分量,保持色调H不变. 对每个像素的S和V分量进行指数运算(指数因子在0.25到4之间), 增加光照变化;

噪声扰动(noise): 对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声;

三、某些属性测试

3.1 shear_range

datagen = image.ImageDataGenerator(shear_range=0.5)

shear_range就是错切变换,效果就是让所有点的x坐标(或者y坐标)保持不变,而对应的y坐标(或者x坐标)则按比例发生平移,且平移的大小和该点到x轴(或y轴)的垂直距离成正比。

如图8所示,一个黑色矩形图案变换为蓝色平行四边形图案。狗狗图片变换效果如图9所示。

Keras中 ImageDataGenerator函数的参数用法

Keras中 ImageDataGenerator函数的参数用法

3.2 zoom_range

datagen = image.ImageDataGenerator(zoom_range=0.5)

zoom_range参数可以让图片在长或宽的方向进行放大,可以理解为某方向的resize,因此这个参数可以是一个数或者是一个list。当给出一个数时,图片同时在长宽两个方向进行同等程度的放缩操作;当给出一个list时,则代表[width_zoom_range, height_zoom_range],即分别对长宽进行不同程度的放缩。而参数大于0小于1时,执行的是放大操作,当参数大于1时,执行的是缩小操作。

参数大于0小于1时,效果如图10:

Keras中 ImageDataGenerator函数的参数用法

参数等于4时,效果如图11:

Keras中 ImageDataGenerator函数的参数用法

3.3 . fill_mode

datagen = image.ImageDataGenerator(fill_mode='wrap', zoom_range=[4, 4])

fill_mode为填充模式,如前面提到,当对图片进行平移、放缩、错切等操作时,图片中会出现一些缺失的地方,那这些缺失的地方该用什么方式补全呢?就由fill_mode中的参数确定,包括:“constant”、“nearest”(默认)、“reflect”和“wrap”。这四种填充方式的效果对比如图18所示,从左到右,从上到下分别为:“reflect”、“wrap”、“nearest”、“constant”。

Keras中 ImageDataGenerator函数的参数用法

以上这篇Keras中 ImageDataGenerator函数的参数用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
基于python历史天气采集的分析
Feb 14 Python
Python3爬楼梯算法示例
Mar 04 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
Django之全局使用request.user.username的实例详解
May 14 Python
pytorch SENet实现案例
Jun 24 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
使用Pytorch训练two-head网络的操作
May 28 Python
pandas提升计算效率的一些方法汇总
May 30 Python
python程序如何进行保存
Jul 03 #Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 #Python
python如何安装下载后的模块
Jul 03 #Python
python中id函数运行方式
Jul 03 #Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 #Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 #Python
基于Python+QT的gui程序开发实现
Jul 03 #Python
You might like
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
AngularJS操作键值对象类似java的hashmap(填坑小结)
2016/11/12 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
从零学python系列之数据处理编程实例(一)
2014/05/22 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
python2 与python3的print区别小结
2018/01/16 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python组合无重复三位数的实例
2018/11/13 Python
python实现简易数码时钟
2021/02/19 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
Python如何在bool函数中取值
2020/09/21 Python
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
小学生班会演讲稿
2014/01/09 职场文书
师德建设实施方案
2014/03/21 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
社区护士演讲稿
2014/08/27 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
员工家属慰问信
2015/03/24 职场文书
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技