图像增强_Keras 常用的图像增强方式

906c7bfc1a01debff76f7f956d3f61cb.png

欢迎关注 “小白玩转Python”,发现更多 “有趣”

在使用神经网络和深度学习模型时,需要进行数据准备。对于更复杂的物体识别任务,也越来越需要增加数据量。

数据增加意味着增加数据量。换句话说,拥有更大的数据集意味着更健壮的模型。但是获取更多的数据并不总是那么容易,而且可能存在存储数据并将其提供给模型的问题。

为了缓解这个问题,我们可以通过做一些修改手动增加数据,或者我们可以使用一个 Keras 图像预处理类,只需几行代码就可以做到这一点。

在这篇文章中,我们将看到在使用 Keras 开发和评估 Python 中的深度学习模型时,如何使用图像数据集进行数据准备和数据增强。

读完这篇文章,你就会知道:

1. 关于Keras提供的图像增强API以及如何在模型中使用它。如何执行特征标准化;

2. 如何对图像执行 ZCA 白化;

3. 如何对图像数据随机旋转,移位和翻转增强;

4. 如何将增强图像数据保存到磁盘。

图像增强 API:ImageDataGenerator

它从原始批处理中生成批处理的增强数据。该算法首先对图像进行随机变换,然后生成一批新的图像进行训练。

注意: 这里需要注意的一点是 ImageDataGenerator 不返回原始图像,而只返回一批增强数据,这是对原始数据进行某些转换的结果。

加载数据集

我们将使用 MNIST 手写数字识别进行数据增强。执行下面的代码将从 keras.datasets 加载 MNIST 数据集:

9d09a459fade66b3b4f86db76d4a02e8.png

将数据分解成训练街和测试集

像素标准化

像素标准化在两个级别上得到支持:每个图像(称为样本级)或每个数据集(称为特征级)。具体来说,标准化像素值所需的平均值和/或平均值和标准差统计量可以仅从每张图像中的像素值计算(按样本计算) ,也可以从整个训练数据集中计算(按特征计算)。

您可以通过在 ImageDataGenerator 类上设置 featurewise_center 和 featurewise_std_normalization 参数来执行标准化过程。

a67918953909d3bea592447f309af08e.png

5b439ff59cf2eb7ee3158176a4f4e744.png

运行这个例子,您可以看到效果是不同的,似乎暗淡和亮化不同的数字。

ZCA 白化

图像的白化变换是一个线性代数运算,它减少了像素图像矩阵中的冗余。通常,图像增白是使用主成分分析分析技术进行的。最近,一种叫做 ZCA 的方法显示了更好的结果,在变换后的图像中保留了所有的原始维度,不像 PCA,结果变换后的图像仍然看起来像原始图像。

466067e301514128ed858e577c669844.png

8b2ad154c3b7e98093c1f589546d8192.png

随机旋转

您可以训练您的模型,以更好地在训练期间人为处理数据集中图像旋转和随机旋转。下面的示例通过设置 rotation _ range 参数创建 MNIST 数字最高90度的随机旋转。

493a7781dc1fed22e96d2b89ffd6940d.png

eeef2392f293c67e642215034e632b55.png

你可以看到图像被左右旋转到90度的极限。这对这个问题没有帮助,因为 MNIST 的数字有一个规范化的方向,但是这种转换可能有助于从物体可能有不同方向的照片中学习。

随机平移

图像中的对象可能不在框架中心。它们可能在各种不同的方面偏离中心。您可以通过人工创建训练数据的平移版本来训练深度学习网络。Keras 支持通过 width_shift_range 和 height_shift_range 参数对训练数据进行水平和垂直随机平移。

同样,由于手写数字已经居中,这对于 MNIST 来说是不必要的,但是您可以看到这在更复杂的问题域中是多么有用。

8ea2a572590c77dba58d36ce602ada5e.png

df85f45a8dc7cd1d1ef7d962f3be2d9f.png

随机翻转

另一个增强图像数据的方法是在训练数据中创建随机的图像翻转,这样可以提高处理大型复杂问题的性能。Keras 支持使用 vertical_flip 和 horizontal_flip 参数沿垂直轴和水平轴进行随机翻转。

3792f4988f4b4ee783f86968cd559e8c.png

fd7412927807eb5d753d4630d7f23907.png

翻转数字不是很有用,因为它们总是有正确的左右方向,但是对于场景中可能有不同方向的物体的照片来说,这可能是有用的。

·  END  ·

HAPPY LIFE

7672632f8ab110d213e25e83e19b5ee6.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Facebook产品经理的三年叙事与协作思考

产品经理和研发工程师的关系经常被大家调侃,可偏偏就有同时受到研发和设计都喜欢的“别人家的产品经理”,沟通协调、对接需求、项目把控面面俱到还有好人缘。有没有人天生就是产品经理?产品经理的工作就是写需求写需求和写需求么?…

sis新地址_坚若磐石不掉速,老平台升级新选择,入手昱联Asint 500G SSD

我是文章的原作者,文章首发于:什么值得买爱折腾的老狐狸​zhiyou.smzdm.com首发文章链接:坚若磐石不掉速,老平台升级新选择,入手昱联Asint 500G SSD _值客原创_什么值得买​post.smzdm.com虽然说,现在越来越…

进度条设置_为你的练习设置进度条

在我们的日常练习中,遇到最多的一个问题就是不知道自己练得怎么样了?还需不需要继续,或者调整练习方法。这种问题大多出现在自学吉他的学生当中,因为得不到老师的反馈,自己练得对不对,够不够,都…

Python之路(第二篇):Python基本数据类型字符串(一)

一、基础1、编码 UTF-8:中文占3个字节 GBK:中文占2个字节 Unicode、UTF-8、GBK三者关系 ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用码,规定采用2个字节对世界各地不同文字进行编码&#x…

python ftp下载文件_文件上传下载Python

点击上方蓝字关注我!图片来源 pexels.com简单实现文件上传、下载1 Server端 # -*- coding: utf-8 -*-import jsonimport os__author__ sange# Time : 2020/8/17 下午5:26# Author : sange# File : tcpserver_socket.py# Software: PyCharmimport socketserv…

react json转换_Typescript + React 新手篇

极链科技前端工程师茅丹丹前言 TS是什么Type Type (标准JS)。TS的官方网站:Type is a typed superset of Java that compiles to plain Java。Type是一个编译到纯JS的有类型定义的JS超集。 TS优点 TS 最大的优势是它提供了强大的静态分析能力,结合 TSL…

android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础

各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView。闲话休提,言归正转。让我们一起Talk Android吧!看官们,我们在前面章回中介绍了Lis…

Hive的数据模型-外部表

概述 包含External 的表叫外部表 删除外部表只删除metastore的元数据,不删除hdfs中的表数据 外部表 只有一个过程,加载数据和创建表同时完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接。当删除一个 外部表 时&…

centos默认安装mysql_centos6.x默认安装mysql5.7

1. yum 安装 mysql5.7 yum 源yum localinstall mysql57-community-release-el6-8.noarch.rpm2. 查看是否成功安装MySQL Yum Repositoryyum repolist enabled|grep ""mysql.*-community.*3. 安装mysqlyum install mysql-community-server4.开启数据库服务service mys…

Hive的数据模型-分区表

需求 select * from t1 where xxxx; 这是全表扫描的。实际应用中,有时候不一定需要全表扫描。 比如电信的日志文件,一个表里存了从去年到现在的日志文件,那是很多很大的,实际需求要查今天的,如果用上面的sql&#xf…

arduino 停止程序_建立Arduino机器人,第五部分:障碍规避

欢迎阅读教程系列的第五篇文章,其中我正在构建一个基于遥控Arduino的车辆机器人。这是我到目前为止发表的文章列表:第一部分:硬件组件第二部分:Arduino编程第三部分:组装机器人第四部分:A(不是那样)基本机器…

Yarn简单介绍及内存配置

在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Yarn的资源抽象container。我么知道MRv1存在的主要问题是:在运行时,JobTracker既负责资源管理又负责任务调度,这导致了它的扩展性、资源利用率低等问…

mysql计算时间函数_mysql时间计算函数

当前一个业务需求,需要查找创建在三天以前的数据,表中是存了一个创建时间的;这个需求看起来很简单,直接全部查找出来然后用代码根据时间筛选一下就可以了。但这只是适用于数据量不大的情况下,如果数据量大,…

html上传文件_.NET基于WebUploader大文件分片上传、断网续传、秒传

(给DotNet加星标,提升.Net技能)转自:学习中的苦与乐cnblogs.com/xiongze520/p/10412693.html现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频。我们常用的常规上传已经能够满足当前要求了,…

Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job

原文链接:http://blog.csdn.net/dai451954706/article/details/50464036 ----------------------------------------------------------------------------------------------------- 今天,一大清早同事就让我帮他解决Hive的问题:他在Hive中…

git切换用户密码_Git 最基本的命令

本人比较懒,不是很爱学习新东西,之前用Git一直在用GUI SourceTree,今天因为用到Cloud IDEGitHub才迫不得已用一下Git的命令行,如果你是Git的新手,也分享给你最基本的命令。新建一个Git版本库把一个本地文件夹变成一个G…

动态分区装载数据

不开启 一个个分区导入,分区需要做到一对一。 hive (zmgdb)> insert overwrite table p_t3 partition (cityningbo) > select name,post,address from p_t1 where cityningbo; 会启动mapreduce进行导入,mr卡在kill job_xxxx&#…

AI造福设计师:搭配色板这种苦差事交给GAN就好啦(教程)

本文来自AI新媒体量子位(QbitAI)设计师要开工,总是离不开配色方案,也就是色板。 不过,做色板可不是个简单的活,色板生成器Colormind的作者Jack Qiao(名字来自Product Hunt,我们下面叫…

mapreduce yarn内存参数

1、yarn-site.xml 设置 1.1 RM设置 RM的内存资源配置,主要是通过下面的两个参数进行的(这两个值是Yarn平台特性,应在yarn-sit.xml中配置好): yarn.scheduler.minimum-allocation-mb yarn.scheduler.maximum-allocati…

html网页设计大赛_HTML5网页设计大赛 || 决赛名单公布

历经数日的HTML5网页设计大赛初赛已经落下的帷幕激动人心的决赛即将开始你们准备好了吗?①决赛名单在经过评委老师多轮评选后,有以下队伍/(个人)脱颖而出进入决赛:1.施佳镛_故宫旅游网2.王永校_神秘莫测的宇宙3.黄炜岳_广州旅游网站4.吴贵滨_NameLess5.陈…