imageDataAugmenter
配置镜像数据增强
描述
图像数据增强器配置一组用于图像增强的预处理选项,例如调整大小、旋转和反射。
的imageDataAugmenter
由augmentedImageDatastore
生成批量增强图像。有关更多信息,请参见用随机几何变换增强训练图像.
创建
属性
FillValue
- - - - - -填值
数字标量|数值向量
填充值,用于重新采样时定义出界点,指定为数值标量或数值向量。
如果增强图像是单通道的,那么
FillValue
必须是标量。如果增强图像是多通道的,那么
FillValue
可以是长度等于输入图像的通道数的标量或向量。例如,如果输入图像是RGB图像,FillValue
可以是长度为3的向量。
对于灰度和彩色图像,默认填充值为0
.对于分类图像,默认填充值为' <定义> '
标签和trainNetwork
训练时忽略已填充的像素。
例子:128
RandXReflection
- - - - - -随机反射
假
(默认)|真正的
左右方向的随机反射,指定为逻辑标量。当RandXReflection
是真正的
(1
),每幅图像水平反射概率为50%。当RandXReflection
是假
(0
),没有图像被反射。
RandYReflection
- - - - - -随机反射
假
(默认)|真正的
自上而下方向上的随机反射,指定为逻辑标量。当RandYReflection
是真正的
(1
),每幅图像以50%的概率垂直反射。当RandYReflection
是假
(0
),没有图像被反射。
RandRotation
- - - - - -旋转范围
[0 0]
(默认)|二元数值向量|函数处理
应用于输入图像的旋转范围(以度为单位),指定为下列之一。
2元数字向量。第二个元素必须大于或等于第一个元素。旋转角度是从指定区间内连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将旋转角度作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取旋转角度。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不旋转。
例子:45 [-45]
RandScale
- - - - - -均匀结垢范围
[1]
(默认)|二元数值向量|函数处理
应用于输入图像的均匀(各向同性)缩放范围,指定为下列之一。
2元数字向量。第二个元素必须大于或等于第一个元素。比例因子是从指定区间内的连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将比例因子作为数字标量返回。使用函数句柄从不相交区间或使用非均匀概率分布中选取比例因子。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像是不缩放的。
例子:(0.5 - 4)
RandXScale
- - - - - -水平缩放范围
[1]
(默认)|2元正数向量|函数处理
应用于输入图像的水平缩放范围,指定为下列之一。
2元数字向量。第二个元素必须大于或等于第一个元素。水平比例因子是从指定区间内连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将水平比例因子作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布中选取水平比例因子。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不会在水平方向上缩放。
请注意
如果你指定RandScale
,然后imageDataAugmenter
忽略的值。RandXScale
缩放图像时。
例子:(0.5 - 4)
RandYScale
- - - - - -垂直缩放范围
[1]
(默认)|2元正数向量|函数处理
应用于输入图像的垂直缩放范围,指定为下列之一。
2元数字向量。第二个元素必须大于或等于第一个元素。垂直尺度因子是从指定区间内连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将垂直比例因子作为数字标量返回。使用函数句柄从不相交区间或使用非均匀概率分布中选取垂直比例因子。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不会在垂直方向上缩放。
请注意
如果你指定RandScale
,然后imageDataAugmenter
忽略的值。RandYScale
缩放图像时。
例子:(0.5 - 4)
RandXShear
- - - - - -水平剪切范围
[0 0]
(默认)|二元数值向量|函数处理
应用于输入图像的水平剪切范围,指定为下列之一。剪切是用角度测量的,范围是(- 90,90)。
2元数字向量。第二个元素必须大于或等于第一个元素。水平剪切角是从指定区间内连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将水平剪切角作为数值标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取水平剪切角。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不会在水平方向上剪切。
例子:45 [0]
RandYShear
- - - - - -垂直剪切范围
[0 0]
(默认)|二元数值向量|函数处理
应用于输入图像的垂直剪切范围,指定为下列之一。剪切是用角度测量的,范围是(- 90,90)。
2元数字向量。第二个元素必须大于或等于第一个元素。垂直剪切角是从指定区间内连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并返回垂直剪切角作为数值标量。使用函数句柄从不相交区间或使用非均匀概率分布选取垂直剪切角。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不会在垂直方向上剪切。
例子:45 [0]
RandXTranslation
- - - - - -水平平移范围
[0 0]
(默认)|二元数值向量|函数处理
应用于输入图像的水平平移范围,指定为下列之一。翻译距离以像素为单位。
2元数字向量。第二个元素必须大于或等于第一个元素。水平平移距离是从指定区间内的连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将水平转换距离作为数字标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取水平平移距离。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不会在水平方向上转换。
例子:5 [5]
RandYTranslation
- - - - - -垂直平移范围
[0 0]
(默认)|二元数值向量|函数处理
应用于输入图像的垂直平移范围,指定为下列之一。翻译距离以像素为单位。
2元数字向量。第二个元素必须大于或等于第一个元素。垂直平移距离是从指定区间内的连续均匀分布中随机选取的。
函数处理。该函数必须不接受输入参数,并将垂直转换距离作为数字标量返回。使用函数句柄从不相交区间或使用非均匀概率分布选取垂直平移距离。有关函数句柄的详细信息,请参见创建函数句柄.
默认情况下,增强图像不会在垂直方向上转换。
例子:5 [5]
对象的功能
增加 |
对多个图像应用相同的随机变换 |
例子
创建图像数据增强器来调整大小和旋转图像
创建一个图像数据增强器,在训练前对图像进行预处理。此增广器在[0,360]度范围内按随机角度旋转图像,并在[0.5,1]范围内按随机缩放因子调整图像大小。
augmenter = imageDataAugmenter(...“RandRotation”360年[0],...“RandScale”(0.5 - 1))
augmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [0 360] RandScale: [0.5000 1] RandXScale: [1 1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [0 0] RandYTranslation: [0 0]
使用映像数据增强器创建一个增强的映像数据存储。增强图像数据存储还需要示例数据、标签和输出图像大小。
[XTrain,YTrain] = digitTrain4DArrayData;imageSize = [56 56 1];auimds = augmentedimagedastore (imageSize,XTrain,YTrain,“DataAugmentation”增量)
auimds = augmentedImageDatastore with properties: NumObservations: 5000 MiniBatchSize: 128 DataAugmentation: [1x1 imageDataAugmenter] color预处理:'none' OutputSize: [56 56] OutputSizeMode: 'resize' DispatchInBackground: 0
预览应用于图像数据存储中的前8个图像的随机转换。
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(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);
提示
若要预览应用于示例图像的转换,请使用
增加
函数。要在训练期间执行图像增强,请创建
augmentedImageDatastore
属性指定预处理选项“DataAugmentation”
参数的名称-值对imageDataAugmenter
.增强图像数据存储自动对训练数据应用随机转换。
版本历史
在R2017b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。