主要内容

ImagedataAugmenter.

配置图像数据增强

描述

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

ImagedataAugmenter.被一个人使用augmentedImageDatastore生成批量增强图像。有关更多信息,请参见增强图像训练与随机几何变换

创建

描述

aug=图像数据增强器创造一个ImagedataAugmenter.对象的默认属性值与标识转换一致。

例子

八月= ImagedataAugmenter(名称,值使用要设置的名称-值对配置一组图像增强选项性质。您可以指定多个名称值对。将每个属性名称括在引号中。

属性

全部展开

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

  • 如果增强图像是单通道,那么填充值必须是标量。

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

对于灰度和彩色图像,默认填充值为0.。对于分类图像,默认填充值是一个标签和trainNetwork培训时忽略填充的像素。

例子:128.

左右方向的随机反射,指定为逻辑标量。当randxreflection.符合事实的1),每个图像以50%的概率水平反射。什么时候randxreflection.0.),则不反射图像。

顶部底部方向的随机反射,指定为逻辑标量。什么时候randyreflection.符合事实的1),每个图像以50%的概率垂直反射。什么时候randyreflection.0.),则不反射图像。

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

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

  • 函数处理。该函数必须接受否输入参数并将旋转角作为数字标量返回。使用函数手柄从不相交的间隔或使用不均匀的概率分布挑选旋转角度。有关功能句柄的更多信息,请参阅创建函数处理

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

例子:45 [-45]

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

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

  • 函数处理。函数必须不接受输入参数,并以数字标量的形式返回比例因子。使用函数句柄从不相交的区间或非均匀的概率分布中选择比例因子。有关功能句柄的更多信息,请参阅创建函数处理

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

例子:[0.5 4]

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

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

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

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

笔记

如果您指定randscale., 然后ImagedataAugmenter.忽略兰德斯卡尔在缩放图像时。

例子:[0.5 4]

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

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

  • 函数处理。该函数必须不接受输入参数,并以数字标量的形式返回垂直比例因子。使用函数句柄从不相交的区间或非均匀概率分布中选择垂直比例因子。有关功能句柄的更多信息,请参阅创建函数处理

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

笔记

如果您指定randscale., 然后ImagedataAugmenter.忽略randyscale.在缩放图像时。

例子:[0.5 4]

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

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

  • 函数处理。该函数必须接受否输入参数并将水平剪切角返回为数字标量。使用函数手柄从不相交的间隔或使用不均匀的概率分布挑选水平剪切角。有关功能句柄的更多信息,请参阅创建函数处理

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

例子:[0 45]

应用于输入图像的垂直剪切范围,指定为以下值之一。剪切以度为单位测量,并且在范围内(–90,90)。

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

  • 函数处理。该函数必须接受无输入参数,并将垂直剪切角返回为数字标量。使用功能手柄从不相交的间隔或使用不均匀的概率分布挑选垂直剪切角。有关功能句柄的更多信息,请参阅创建函数处理

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

例子:[0 45]

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

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

  • 函数处理。该函数必须不接受输入参数,并以数字标量的形式返回水平平移距离。使用函数句柄从不相交的区间或使用非均匀概率分布选取水平平移距离。有关功能句柄的更多信息,请参阅创建函数处理

默认情况下,增强图像不会在水平方向上进行翻译。

例子:5 [5]

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

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

  • 函数处理。该函数必须接受无输入参数并将垂直转换距离返回为数字标量。使用功能手柄从不相交的间隔或使用不均匀的概率分布挑选垂直翻译距离。有关功能句柄的更多信息,请参阅创建函数处理

默认情况下,增强图像未在垂直方向上翻译。

例子:5 [5]

对象的功能

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

例子

全部折叠

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

upmmenter = imagedataAugmenter(......“随机轮换”,[0 360],......'randscale',[0.5 1])
RandXReflection: 0 RandYReflection: 0 RandRotation: [0 360] RandXScale: [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 = augmentedimageageataStore(图像化,Xtrain,Ytrain,'dataaugmentation',增强者)
auimds=augmentedImageDatastore,属性为:NumObservations:5000 MiniBatchSize:128 DataAugmentation:[1x1 imageDataAugmenter]颜色预处理:“无”OutputSize:[56]OutputSizeMode:“调整大小”DispatchInBackground:0

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

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

图包含轴对象。轴对象包含类型图像的对象。

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

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

图包含轴对象。轴对象包含类型图像的对象。

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

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

[xtrain,ytrain] = Digittrain4darraydata;

Digittrain4daraydata将数字训练集作为4-D阵列数据加载。XTrain.是28×28-by-1-5000阵列,其中:

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

  • 1是通道的数量。

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

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

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

idx = randperm(大小(xtrain,4),1000);xvalidation = XTrain(::::,IDX);XTrain(::::,idx)= [];YValidation = Ytrain(IDX);Ytrain(IDX)= [];

创建一个ImagedataAugmenter.对象,该对象指定图像增强的预处理选项,例如调整大小、旋转、平移和反射。在水平和垂直方向上随机平移最多三个像素的图像,并以最大20度的角度旋转图像。

imageaugmenter = imagedataAugmenter(......“随机轮换”,[ -  20,20],......“RandXTranslation”,[-3 3],......“RandYTranslation”,[-3 3])
imageAugmenter=imageDataAugmenter,其属性为:FillValue:0 RandExlection:0 RandYReflection:0 RandRotation:[-20]RandScale:[1]RandYScale:[1]RandySchear:[0]RandySchear:[0]RandExTranslation:[-3]RandyStralation:[-3]

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

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

指定卷积神经网络结构。

层=[imageInputLayer(imageSize)卷积2层(3,8,“填充”“一样”)batchNormalizationLayer reluLayer MaxPoolig2dLayer(2,'走吧',2)卷积2层(3,16,“填充”“一样”)batchNormalizationLayer reluLayer MaxPoolig2dLayer(2,'走吧'32岁的,2)convolution2dLayer (3“填充”“一样”)batchNormalizationLayer reluLayer fullyConnectedLayer(10)softmaxLayer classificationLayer];

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

选择=培训选项(“个”......'maxepochs'15岁的......“洗牌”“每个时代”......'plots''培训 - 进步'......“详细”错误的......“验证数据”,{xvalidation,yvalidation});

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

net = trainnetwork(augimds,图层,选择);

Figure Training Progress(2021年9月1日08:35:08)包含两个轴对象和另一个uigridlayout类型的对象。轴对象1包含8个类型为面片、文本、线的对象。轴对象2包含8个类型为面片、文本、线的对象。

提示

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

  • 要在训练期间执行图像增强,创建一个augmentedImageDatastore并指定预处理选项'dataaugmentation'带有ImagedataAugmenter.。增强图像数据存储自动将随机转换应用于培训数据。

在R2017B中介绍