主要内容

augmentedImageDatastore

转换批处理以增强图像数据

描述

增强图像数据存储通过可选的预处理(如调整大小、旋转和反射)对训练、验证、测试和预测数据进行批量转换。调整图像的大小,使其与深度学习网络的输入大小兼容。使用随机预处理操作增加训练图像数据,以帮助防止网络过度拟合和记忆训练图像的确切细节。

要使用增强图像训练网络,请提供augmentedImageDatastoretrainNetwork.有关更多信息,请参见深度学习的图像预处理

  • 当您使用扩充图像数据存储作为训练图像的来源时,该数据存储将随机扰动每个epoch的训练数据,因此每个epoch使用略有不同的数据集。每个纪元的实际训练图像数量没有变化。转换后的图像不存储在内存中。

  • 一个imageInputLayer使用增广图像的均值而不是原始数据集的均值对图像进行归一化。这个平均数对于第一个增广期计算一次。所有其他纪元使用相同的平均值,这样平均图像不会在训练过程中发生变化。

默认情况下,一个augmentedImageDatastore仅调整图像大小以适应输出大小。控件可以配置其他图像转换选项imageDataAugmenter

创建

描述

auimds = augmentedImageDatastore (outputSize,洛桑国际管理发展学院使用图像数据存储中的图像创建一个扩充的图像数据存储,用于分类问题洛桑国际管理发展学院,并设置OutputSize财产。

auimds = augmentedImageDatastore (outputSize,XY为分类和回归问题创建一个扩充的图像数据存储。数组X包含预测变量和数组Y包含分类标签或数字响应。

auimds = augmentedImageDatastore (outputSize,X创建一个扩充的图像数据存储,用于预测数组中的图像数据的响应X

auimds = augmentedImageDatastore (outputSize,资源描述为分类和回归问题创建一个扩充的图像数据存储。桌上,资源描述,包含预测因素和反应。

auimds = augmentedImageDatastore (outputSize,资源描述responseNames为分类和回归问题创建一个扩充的图像数据存储。桌上,资源描述,包含预测因素和反应。的responseNames参数指定的响应变量资源描述

例子

auimds = augmentedImageDatastore (___、名称、值)创建扩展的图像数据存储,使用名称-值对设置ColorPreprocessingDataAugmentationOutputSizeMode,DispatchInBackground属性。可以指定多个名称-值对。将每个属性名用引号括起来。

例如,myTable augmentedImageDatastore([28日28],“OutputSizeMode”,“centercrop”)创建一个增强图像数据存储,从中心裁剪图像。

输入参数

全部展开

图像数据存储,指定为ImageDatastore对象。

ImageDatastore允许批量读取JPG或PNG图像文件使用预取。如果您使用自定义函数来读取图像,那么ImageDatastore不预取。

提示

使用augmentedImageDatastore用于深度学习的图像预处理,包括图像大小调整。

请勿使用readFcn选择imageDatastore对于预处理或调整大小,这个选项通常非常慢。

图像,指定为4-D数字数组。前三个维度是高度、宽度和通道,最后一个维度索引各个图像。

如果数组包含,然后通过培训进行传播。然而,在大多数情况下,训练不能收敛。

数据类型:||uint8|int8|uint16|int16|uint32|int32

分类或回归反应,指定为下列之一:

  • 对于分类问题,Y是包含图像标签的分类向量。

  • 对于回归问题,Y可以是:

    • n——- - - - - -r数字矩阵。n观察的次数是多少r为响应的数量。

    • h——- - - - - -w——- - - - - -c——- - - - - -n数字数组。h——- - - - - -w——- - - - - -c是单一反应的大小和n为观察次数。

响应必须不包含年代。

数据类型:分类|

输入数据,指定为表。资源描述必须在第一列中以绝对或相对图像路径或图像的形式包含预测器。响应的类型和位置取决于问题:

  • 对于分类问题,响应必须是包含图像标签的分类变量。如果在调用中没有指定响应变量的名称augmentedImageDatastore,回应必须在第二列。如果响应在不同的列资源描述,则必须使用responseNames论点。

  • 对于回归问题,响应必须是第一个列或第一个列之后的数值。响应可以在多个列中作为标量,也可以在单个列中作为数字向量或包含数字3-D数组的单元格数组。当您没有指定响应变量或多个变量的名称时,augmentedImageDatastore的其余列资源描述作为响应变量。属性指定响应变量名responseNames论点。

响应必须不包含如果有的话S,它们通过训练传播,但大多数情况下训练不能收敛。

数据类型:表格

输入表中响应变量的名称,指定为:

  • 对于具有单一响应的分类或回归任务,responseNames必须是输入表中包含响应变量的字符向量或字符串标量。

    对于有多个响应的回归任务,responseNames必须是包含输入表中响应变量的字符向量的字符串数组或单元格数组。

数据类型:字符|细胞|字符串

属性

全部展开

对输入灰度或RGB图像进行的颜色预处理操作,指定为“没有”“gray2rgb”,或“rgb2gray”.当图像数据存储包含混合灰度和RGB图像时,使用ColorPreprocessing以确保所有输出图像都有所需的通道数量imageInputLayer

当输入图像已经有所需数量的颜色通道时,不进行颜色预处理操作。例如,如果您指定了值“gray2rgb”一个输入图像已经有三个通道,那么就没有颜色预处理发生。

请注意

augmentedImageDatastore对象将RGB图像转换为灰度rgb2gray函数。如果一个图像有三个不对应红、绿、蓝通道的通道(例如L*a*b*颜色空间中的图像),那么使用ColorPreprocessing结果会很差。

当输入图像没有1或3通道时,如多光谱或高光谱图像,不进行颜色预处理操作。在这种情况下,所有输入图像必须有相同数量的通道。

数据类型:字符|字符串

用于输入图像的预处理,指定为imageDataAugmenter对象或“没有”.当DataAugmentation“没有”,对输入图像不进行预处理。

在训练、预测或分类期间在背景中分派观测数据,指定为真正的.要使用后台调度,您必须拥有并行计算工具箱™。

增强图像数据存储仅在使用时执行后台调度trainNetwork和推理函数预测分类.调用时不会发生后台调度直接调用数据存储的函数。

在每批中返回的观察数。的值可以更改MiniBatchSize只有在创建数据存储后才可以。用于训练、预测和分类MiniBatchSize属性设置为中定义的迷你批处理大小trainingOptions

此属性是只读的。

扩增图像数据存储中的观测总数。观察的次数等于一个训练时期的长度。

输出图像的大小,指定为两个正整数的向量。第一个元素指定输出图像中的行数,第二个元素指定列数。

请注意

如果你创建一个augmentedImageDatastore通过将图像输出大小指定为包含三个元素的向量,数据存储将忽略第三个元素。相反,数据存储使用的值为ColorPreprocessing来确定输出图像的维数。例如,如果指定OutputSize作为[28 28 1]但设置ColorPreprocessing作为“gray2rgb”,则输出图像尺寸为28 × 28 × 3。

方法,用于调整输出图像的大小,指定为下列方法之一。

  • “调整”-使用双线性插值缩放图像,以适应输出大小。

    请注意

    augmentedImageDatastore的双线性插值方法imresize抗锯齿。双线性插值可以快速处理图像,同时避免由最近邻插值引起的失真。相反,默认情况下imresize使用带反锯齿的双三次插值来产生高质量的调整大小的图像,但代价是较长的处理时间。

  • “centercrop”-从训练图像的中心进行裁剪。作物大小与产量大小相同。

  • “randcrop”-从训练图像中随机裁剪。随机作物的大小与输出的大小相同。

数据类型:字符|字符串

对象的功能

结合 合并来自多个数据存储的数据
hasdata 确定是否可以读取数据
numpartitions 数据存储分区数
分区 分区数据存储
partitionByIndex 分区augmentedImageDatastore根据指数
预览 预览数据存储中的数据子集
读取的数据augmentedImageDatastore
readall 读取数据存储中的所有数据
readByIndex 读取由index指定的数据augmentedImageDatastore
重置 将数据存储重置为初始状态
洗牌 混乱的数据augmentedImageDatastore
子集 创建数据存储或文件集的子集
变换 变换数据存储
isPartitionable 确定数据存储是否可分区
isShuffleable 确定数据存储是否可洗牌

例子

全部折叠

利用增强图像数据训练卷积神经网络。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。

加载样本数据,它由手写数字的合成图像组成。

[XTrain, YTrain] = digitTrain4DArrayData;

digitTrain4DArrayData将数字训练集加载为4-D阵列数据。XTrain是一个28 × 28 × 1 × 5000的数组,其中:

  • 28是图像的高度和宽度。

  • 1是通道的数量。

  • 5000是手写数字合成图像的数量。

YTrain是包含每个观察的标签的分类向量。

预留1000个图像用于网络验证。

idx = randperm(大小(XTrain, 4), 1000);XValidation = XTrain (:,:,:, idx);XTrain (::,:, idx) = [];YValidation = YTrain (idx);YTrain (idx) = [];

创建一个imageDataAugmenter对象,该对象指定用于图像增强的预处理选项,如调整大小、旋转、平移和反射。随机将图像水平和垂直平移到三个像素,并旋转图像的角度高达20度。

imageAugmenter = imageDataAugmenter (...“RandRotation”(-20年,20),...“RandXTranslation”3 [3],...“RandYTranslation”3 [3])
imageAugmenter = imageDataAugmenter with properties: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [-20 20] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [-3 3] RandYTranslation: [-3 3]

创建一个augmentedImageDatastore对象用于网络训练并指定图像输出大小。在训练期间,数据存储执行图像增强和调整图像的大小。数据存储增加图像而不保存任何图像到内存。trainNetwork更新网络参数,然后丢弃增强后的图像。

imageSize = [28 28 1];augimds = augmentedImageDatastore(图象尺寸、XTrain YTrain,“DataAugmentation”, imageAugmenter);

指定卷积神经网络结构。

[imageInputLayer(imageSize)] = [imageInputLayer(imageSize)]“填充”“相同”maxPooling2dLayer(2,“步”2) convolution2dLayer(16日“填充”“相同”maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”“相同”) batchNormalizationLayer relullayer fulllyconnectedlayer (10) softmaxLayer classificationLayer];

为带动量的随机梯度下降指定训练选项。

选择= trainingOptions (“个”...“MaxEpochs”15岁的...“洗牌”“every-epoch”...“阴谋”“训练进步”...“详细”假的,...“ValidationData”, {XValidation, YValidation});

培训网络。由于没有对验证图像进行增强,验证精度高于训练精度。

网= trainNetwork (augimds层,选择);

提示

  • 控件可以在同一个图形中可视化多个变换后的图像imtile函数。例如,这段代码显示了来自称为auimds

    minibatch =阅读(auimds);imshow (imtile (minibatch.input))
  • 默认情况下,调整大小是对图像执行的唯一图像预处理操作。属性启用其他预处理操作DataAugmentation名称-值对参数imageDataAugmenter对象。每次从增强图像数据存储中读取图像时,将对每个图像应用不同的随机预处理操作组合。

介绍了R2018a