主要内容

imageDataAugmenter

配置映像数据增强

描述

图像数据增强器为图像增强配置一组预处理选项,例如调整大小、旋转和反射。

imageDataAugmenter是由augmentedImageDatastore生成批量增强图像。有关更多信息,请参见随机几何变换增强图像训练

创建

描述

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

例子

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

属性

全部展开

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

  • 如果增强图像是单通道的,那么FillValue必须是一个标量。

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

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

例子:128

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

自上而下方向的随机反射,指定为逻辑标量。当RandYReflection真正的1),每个图像以50%的概率垂直反射。当RandYReflection0),没有图像被反射。

应用于输入图像的旋转范围(以度为单位),指定为下列之一。

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

  • 函数处理。函数必须不接受任何输入参数,并将旋转角度作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选择旋转角度。有关函数句柄的更多信息,请参见创建函数处理

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

例子:45 [-45]

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

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

  • 函数处理。函数必须不接受任何输入参数,并将比例因子作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布中选取比例因子。有关函数句柄的更多信息,请参见创建函数处理

默认情况下,增强图像是不缩放的。

例子:(0.5 - 4)

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

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

  • 函数处理。函数必须不接受任何输入参数,并将水平比例因子作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布中选取水平比例因子。有关函数句柄的更多信息,请参见创建函数处理

默认情况下,增强图像不按水平方向缩放。

请注意

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

例子:(0.5 - 4)

应用于输入图像的垂直缩放范围,指定为以下之一。

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

  • 函数处理。函数必须不接受任何输入参数,并将垂直比例因子作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布中选取垂直比例因子。有关函数句柄的更多信息,请参见创建函数处理

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

请注意

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

例子:(0.5 - 4)

应用于输入图像的水平剪切范围,指定为以下之一。剪切是用角度来测量的,范围是(- 90,90)。

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

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

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

例子:45 [0]

应用于输入图像的垂直剪切范围,指定为以下之一。剪切是用角度来测量的,范围是(- 90,90)。

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

  • 函数处理。函数必须不接受任何输入参数,并将垂直剪切角作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取垂直剪切角。有关函数句柄的更多信息,请参见创建函数处理

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

例子:45 [0]

应用于输入图像的水平平移范围,指定为以下之一。翻译距离是以像素为单位的。

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

  • 函数处理。函数必须不接受任何输入参数,并将水平平移距离作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取水平平移距离。有关函数句柄的更多信息,请参见创建函数处理

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

例子:5 [5]

应用于输入图像的垂直平移范围,指定为以下之一。翻译距离是以像素为单位的。

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

  • 函数处理。函数必须不接受任何输入参数,并将垂直平移距离作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取垂直平移距离。有关函数句柄的更多信息,请参见创建函数处理

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

例子:5 [5]

对象的功能

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

例子

全部折叠

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

增量= imageDataAugmenter (...“RandRotation”360年[0],...“RandScale”(0.5 - 1))
augmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 0 RandRotation: [0 360] RandScale: [0.5000 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandYTranslation: [0 0] RandYTranslation: [0 0]

使用图像数据增强器创建增强图像数据存储。增强图像数据存储还需要示例数据、标签和输出图像大小。

[XTrain, YTrain] = digitTrain4DArrayData;imageSize = [56 56 1];auimds = augmentedImageDatastore(图象尺寸、XTrain YTrain,“DataAugmentation”增量)
auimds = augmentedImageDatastore with properties: NumObservations: 5000 MiniBatchSize: 128 DataAugmentation: [1x1 imageDataAugmenter] ColorPreprocessing: 'none' OutputSize: [56 56] OutputSizeMode: 'resize' DispatchInBackground: 0

预览应用于图像数据存储中的前8个图像的随机转换。

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

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

预览应用于同一组图像的不同随机变换。

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

图中包含一个axes对象。坐标轴对象包含一个image类型的对象。

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

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

[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 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);

指定卷积神经网络结构。

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

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

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

培训网络。由于验证图像未进行增广,因此验证精度高于训练精度。

网= trainNetwork (augimds层,选择);

提示

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

  • 若要在训练期间执行图像增强,请创建augmentedImageDatastore方法指定预处理选项“DataAugmentation”类的名称-值对imageDataAugmenter.增强图像数据存储自动对训练数据应用随机转换。

版本历史

介绍了R2017b

Baidu
map