在训练计算机视觉模型时,往往需要先对图像进行处理,如对图像进行归一化、中心化和标准化处理,并将处理后的图像保存为新文件。
除了前面介绍的使用Pillow库来实现外,还可以使用Python机器学习库Keras进行操作,主要是利用Keras中的ImageDataGenerator类来操作。
本文将主要讲解使用Keras处理图像,包括图像归一化、中心化和标准化。
学完本文后,您将学会:
如何使用ImageDataGenerator类处理图像,并用处理后的图像进行模型训练。如何使用ImageDataGenerator类对图像进行归一化处理。如何使用ImageDataGenerator类对图像进行中心化处理。如何使用ImageDataGenerator类对图像进行标准化。
引言
本系列教程分为五个部分, 分别如下所示。本文将主要讲解第一、二部分,后面文章将会陆续讲解剩余部分。
MNIST手写图像数据集ImageDataGenerator类介绍使用ImageDataGenerator标准化图像使用ImageDataGenerator居中图像使用ImageDataGenerator标准化图像
MNIST手写图像数据集
在开始深入研究ImageDataGenerator类之前,我们要先选择合适的图像数据集。
MNIST手写图像数据集是由70000个手写数字的图像组成。其通常用于将手写数字图像分类为0到9的9个整数。因此,它是多分类问题。
此数据集是Keras的内置数据库,可以自动下载,并通过调用keras.datasets.mnist.load_data函数加载到内存中。该函数返回两个元组:一个用于训练输入和输出,另一个用于测试输入和输出。
下面是使用Keras加载该数据集的例子。
ImageDataGenerator类介绍
Keras中的ImageDataGenerator类提供很多函数接口,能够缩放图片像素。当训练神经网络模型时,这些方法往往会非常有效。ImageDataGenerator类支持许多像素缩放方法,另外,它也支持一系列图像增强技术。本文将专注于介绍像素缩放方法。
ImageDataGenerator类使用步骤如下:
1.加载数据集。2.构造ImageDataGenerator对象。3.对图像统计基本属性(例如调用fit函数)。4.拟合模型(例如,将实例传递给fit_generator函数)。5.评估模型(例如,将实例传递给evaluate_generator函数)。ImageDataGenerator类支持的三种主要类型的像素缩放技术如下:
图像归一化:将图像像素缩放到0-1范围。图像中心化:将图像像素缩放到以0为平均值。图像标准化:将像素值缩放为到以0为均值、1为方差。该接口还支持在每张图片上进行上述三种操作,也支持在整个图片数据集上进行上述三种操作。它还支持其他像素缩放方法,例如ZCA,增亮等,但是本文将只会介绍使用它来实现上述三种最常用的方法。
下面举例说明ImageDataGenerator的使用。
1、构造ImageDataGenerator对象
2、调用fit函数来计算和存储图像的基本统计数据。
3、调用flow函数来拟合神经网络模型,以返回批量样本并传递给fit_generator函数使用。
4、调用evaluate_generator函数来评估模型。
至此,我们将学会了如何使用ImageDataGenerator类来缩放图像像素,并用于模型训练和评估。
小结
通过阅读本文,你应该学会了:
了解了MNIST手写图像数据集熟悉ImageDataGenerator类的使用方法