主要内容

augmentedImageDatastore

转换批以增强图像数据

描述

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

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

  • 当您使用增强图像数据存储作为训练图像的来源时,该数据存储随机扰动每个历元的训练数据,因此每个历元使用略微不同的数据集。每个epoch的训练图像的实际数量是不变的。转换后的图像不存储在内存中。

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

缺省情况下,augmentedImageDatastore只调整图像大小以适应输出大小。控件可以配置用于其他映像转换的选项imageDataAugmenter

创建

描述

auimds = augmentedImageDatastore(输出大小,洛桑国际管理发展学院为使用来自图像数据存储的图像的分类问题创建一个增强图像数据存储洛桑国际管理发展学院,并设置OutputSize财产。

auimds = augmentedImageDatastore(输出大小,XY为分类和回归问题创建增强图像数据存储。数组X包含预测变量和数组Y包含分类标签或数字响应。

auimds = augmentedImageDatastore(输出大小,X创建一个增强图像数据存储,用于预测数组中图像数据的响应X

auimds = augmentedImageDatastore(输出大小,资源描述为分类和回归问题创建增强图像数据存储。桌上,资源描述,包含预测器和响应。

auimds = augmentedImageDatastore(输出大小,资源描述responseNames为分类和回归问题创建增强图像数据存储。桌上,资源描述,包含预测器和响应。的responseNames参数中指定响应变量资源描述

例子

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

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

输入参数

全部展开

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

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

提示

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

请勿使用readFcn选项imageDatastore函数用于预处理或调整大小,因为此选项通常显着较慢。

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

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

数据类型:||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.如果有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 读取索引中指定的数据augmentedImageDatastore
重置 将数据存储重置为初始状态
洗牌 随机输入数据augmentedImageDatastore
子集 创建数据存储或文件集的子集
变换 变换数据存储
isPartitionable 确定数据存储是否可分区
isShuffleable 确定数据存储是否可洗牌

例子

全部折叠

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

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

[XTrain,YTrain] = digitTrain4DArrayData;

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

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

  • 1是通道数。

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

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

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

idx = randperm(size(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: FillValue: 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 = augmentedimagedastore (imageSize,XTrain,YTrain,“DataAugmentation”, imageAugmenter);

指定卷积神经网络架构。

图层= [imageInputLayer(imageSize)卷积2dlayer (3,8,“填充”“相同”maxPooling2dLayer(2,“步”2) convolution2dLayer(16日“填充”“相同”maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”“相同”batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];

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

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

培训网络。由于验证图像未被增强,验证精度高于训练精度。

net = trainNetwork(augimds,layers,opts);

提示

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

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

版本历史

在R2018a中引入