imageDataAugmenter

配置的图像数据的增强

描述

一种图像数据增强因子构成了一组用于图像增强预处理选项,如调整大小,旋转,和反射。

imageDataAugmenter是由augmentedImageDatastore以产生增强图像的批次。欲了解更多信息,请参阅增强图像的培训与随机几何变换

创建

描述

8月= imageDataAugmenter创建一个imageDataAugmenter对象,其默认属性值与标识转换一致。

例子

8月= imageDataAugmenter (名称,值)使用名称-值对配置一组图像增强选项性能。您可以指定多个名称-值对。将每个属性名称用引号括起来。

属性

展开全部

用于在重新采样时定义边界点的填充值,指定为数值标量或数值向量。

  • 如果增强图像为单通道,则FillValue必须是标量。

  • 如果增强图像多通道,那么FillValue可以是标量或长度的矢量等于输入图像的信道数。例如,如果输入图像是RGB图像,FillValue可以是长度为3的向量。

对于灰度和彩色图像,默认填充值为0。对于分类图像,默认填充值为an' <定义> '标签和trainNetwork在训练时忽略填充的像素。

例子:128

左右方向的随机反射,指定为逻辑标量。当RandXReflection真正的(1),每个图像在水平方向以50%的概率反射。当RandXReflection(0),没有图像被反射。

从上到下方向的随机反射,指定为逻辑标量。当RandYReflection真正的(1),每个图像被垂直地用50%的概率反射。当RandYReflection(0),没有图像被反射。

的旋转,度,应用于输入图像,指定为以下之一。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。旋转角度从指定的区间内的连续均匀分布随机挑选的。

  • 函数处理。该函数必须不接受任何输入参数,并以数值标量的形式返回旋转角度。使用函数句柄从一个不相交的间隔或使用一个非均匀概率分布选择旋转角度。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强图像不旋转。

例子:[-45 45]

均匀的(各向同性)缩放范围应用到输入图像,指定为下列之一。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。尺度因子是在指定的区间内从连续均匀分布中随机抽取的。

  • 函数处理。此函数必须接受任何输入参数和返回比例因子的数值标量。使用的功能句柄来接比例因子从一个不相交间隔或使用非均匀概率分布。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强图像不进行缩放。

例子:(0.5 - 4)

应用于输入图像的水平缩放范围,指定为以下选项之一。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。水平比例因子从指定的时间间隔内的连续均匀分布随机挑选的。

  • 函数处理。此函数必须接受任何输入参数和返回水平比例因子作为数字标。使用的功能句柄来接水平刻度因子从一个不相交间隔或使用非均匀概率分布。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强的图像没有在水平方向上缩放。

请注意

如果您指定RandScale,然后imageDataAugmenter忽略的价值RandXScale当缩放图片。

例子:(0.5 - 4)

垂直比例的范围应用到输入图像,指定为下列之一。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。垂直尺度因子是从指定区间内的连续均匀分布中随机抽取的。

  • 函数处理。此函数必须接受任何输入参数和返回垂直缩放系数作为数字标。使用的功能句柄来接垂直比例因子从一个不相交间隔或使用非均匀概率分布。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强后的图像不会在垂直方向缩放。

请注意

如果您指定RandScale,然后imageDataAugmenter忽略的价值RandYScale当缩放图片。

例子:(0.5 - 4)

水平剪切的范围应用到输入图像,指定为下列之一。剪切被测量为以度的角度,并且在该范围内(-90,90)。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。水平剪切角是在给定区间内从连续均匀分布中随机选取的。

  • 函数处理。该函数必须不接受任何输入参数,并以数值标量的形式返回水平剪切角。使用函数手柄从不相交区间或使用非均匀概率分布选取水平剪切角。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强后的图像不会在水平方向上剪切。

例子:45 [0]

应用于输入图像的垂直剪切范围,指定为下列之一。剪切被测量为以度的角度,并且在该范围内(-90,90)。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。垂直切变角从连续均匀分布的指定区间内随机选取。

  • 函数处理。该函数必须不接受任何输入参数,并以数值标量的形式返回垂直剪切角。使用函数手柄从一个不相交的区间或使用一个非均匀概率分布选择垂直剪切角。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强后的图像不会在垂直方向上剪切。

例子:45 [0]

水平平移的范围应用到输入图像,指定为下列之一。平移距离以像素计量。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。水平平移距离是从指定的时间间隔内的连续均匀分布随机挑选的。

  • 函数处理。此函数必须接受任何输入参数和返回水平平移距离为数字标。使用功能手柄从一个不相交的时间间隔或使用不均匀的概率分布挑水平平移的距离。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强图像不会在水平方向上平移。

例子:[-5 5]

应用于输入图像的垂直平移范围,指定为以下选项之一。平移距离以像素计量。

  • 2-element数值向量。第二个元素必须大于或等于第一个元素。竖直平移距离是从指定的时间间隔内的连续均匀分布随机挑选的。

  • 函数处理。该函数必须不接受任何输入参数,并以数值标量的形式返回垂直转换距离。使用函数句柄从不相交的间隔选择垂直平移距离或使用非均匀概率分布。有关函数句柄的更多信息,请参见创建功能处理(MATLAB)。

默认情况下,增强后的图像不会在垂直方向上平移。

例子:[-5 5]

对象函数

增加 对多个图像应用相同的随机变换

例子

全部收缩

创建一个图像数据增强器,在训练前对图像进行预处理。该增强器以范围内[0,360]的随机角度旋转图像,并以范围内[0.5,1]的随机比例因子调整图像大小。

增量= imageDataAugmenter (“RandRotation”360年[0],“RandScale”(0.5 - 1))
增强因子= imageDataAugmenter与属性:FillValue:0 RandXReflection:0 RandYReflection:0 RandRotation:[0 360] RandScale:0.5000 1] RandXScale:[1 1] RandYScale:[1 1] RandXShear:[0 0] RandYShear:[0 0] RandXTranslation:[0 0] RandYTranslation:[0 0]

使用图像数据增强器创建增强图像数据存储。增强的图像数据存储也需要样本数据,标签,和一个输出图像的大小。

[XTrain, YTrain] = digitTrain4DArrayData;图像化= [56 56 1];auimds = augmentedImageDatastore(图象尺寸、XTrain YTrain,“DataAugmentation”增量)
auimds = augmentedImageDatastore属性:NumObservations: 5000 MiniBatchSize: 128 DataAugmentation: [1 x1 imageDataAugmenter] ColorPreprocessing:“没有一个”OutputSize: 56 [56] OutputSizeMode:“调整”DispatchInBackground: 0

预览随机变换施加到第一八个图像在图像数据存储区。

minibatch =预览(auimds);imshow (imtile (minibatch.input));

预览不同的随机转换应用到同一组图像。

minibatch =预览(auimds);imshow (imtile (minibatch.input));

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

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

[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对象,该对象为图像增强指定预处理选项,如调整大小、旋转、平移和反射。随机将图像水平和垂直转换为3个像素,并以20度的角度旋转图像。

imageAugmenter = imageDataAugmenter (“RandRotation”(-20年,20),'RandXTranslation'3 [3],'RandYTranslation'3 [3])
imageAugmenter = imageDataAugmenter属性:FillValue: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: 20 [-20] RandScale: [1] RandXScale: [1] RandYScale: [1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: 3 [3] RandYTranslation: [3 3]

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

IMAGESIZE = [28 28 1];augimds = augmentedImageDatastore(IMAGESIZE,XTrain,YTrain,“DataAugmentation”,imageAugmenter);

指定卷积神经网络架构。

layer = [imageInputLayer(imageSize)] convolution2dLayer(3,8,'填充',“相同”) batchNormalizationLayer reluLayer“步”2) convolution2dLayer(16日'填充',“相同”) batchNormalizationLayer reluLayer“步”,2)convolution2dLayer(3,32,'填充',“相同”) batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];

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

选择= trainingOptions ('SGDM',“MaxEpochs”15,“洗牌”,“every-epoch”,“阴谋”,“训练进步”,“放牧”假的,“ValidationData”, {XValidation, YValidation});

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

网= trainNetwork (augimds层,选择);

提示

  • 要预览应用于示例图像的转换,请使用增加功能。

  • 培训期间,执行图像增强,创建augmentedImageDatastore并指定使用预处理选项“DataAugmentation”名称-值对imageDataAugmenter。增强图像数据存储自动对训练数据应用随机变换。

介绍了R2017b