主要内容

augmentedImageDatastore

转换批次增加图像数据

描述

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

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

  • 当您使用一个增强图像数据存储的训练图像数据存储训练数据随机扰乱对于每一个时代,这样每个时代使用稍微不同的数据集。训练图像的实际数量在每个时代不会改变。转换后的图像不存储在内存中。

  • 一个imageInputLayer规范化使用的均值图像增强图像,而不是指原始数据集。这意味着第一增强时代计算一次。所有其他时代使用相同的意思,所以平均图像训练期间不会改变。

默认情况下,一个augmentedImageDatastore只有调整图像,适合大小的输出。你可以使用一个额外的图像转换的配置选项imageDataAugmenter

创建

描述

auimds = augmentedImageDatastore (outputSize,洛桑国际管理发展学院)创建一个增强图像数据存储从图像数据存储使用图像分类问题洛桑国际管理发展学院,并设置OutputSize财产。

auimds = augmentedImageDatastore (outputSize,X,Y)创建一个增强图像数据存储分类和回归问题。数组X包含预测变量和数组Y包含分类标签或数字的反应。

auimds = augmentedImageDatastore (outputSize,X)创建一个增强图像数据存储图像数据预测反应的数组X

auimds = augmentedImageDatastore (outputSize,资源描述)创建一个增强图像数据存储分类和回归问题。桌上,资源描述,包含预测和响应。

auimds = augmentedImageDatastore (outputSize,资源描述,responseNames)创建一个增强图像数据存储分类和回归问题。桌上,资源描述,包含预测和响应。的responseNames参数指定变量的响应资源描述

例子

auimds = augmentedImageDatastore (___、名称、值)创建一个增强图像数据存储,使用名称-值对集合ColorPreprocessing,DataAugmentation,OutputSizeMode,DispatchInBackground属性。您可以指定多个名称-值对。在报价附上每个属性的名字。

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

输入参数

全部展开

图像数据存储,指定为一个ImageDatastore对象。

ImageDatastore允许分批阅读使用预取JPG和PNG图像文件。如果你使用一个自定义函数读取图像,然后ImageDatastore不预取。

提示

使用augmentedImageDatastore为深度学习有效的图像预处理,包括图像缩放。

不使用readFcn选择的imageDatastore函数预处理或调整,这个选项通常是明显慢。

图片,指定为一个四维数值数组。前三个维度的高度、宽度、和渠道,最后维度指标单独的图像。

如果数组包含年代,然后他们通过培训传播。然而,在大多数情况下,培训无法收敛。

数据类型:||uint8|int8|uint16|int16|uint32|int32

反应分类或回归,指定为以下之一:

  • 对于一个分类问题,Y是一个分类向量包含图像标签。

  • 回归问题,Y可以是:

    • n——- - - - - -r数字矩阵。n是观察和的数量吗r是反应的数量。

    • h——- - - - - -w——- - - - - -c——- - - - - -n数字数组。h——- - - - - -w——- - - - - -c是一个响应的大小和n是观测的数量。

反应必须不包含年代。

数据类型:分类|

输入数据,指定为一个表。资源描述在第一列必须包含预测绝对或相对路径图像或图像。反应的类型和位置依赖存在的问题:

  • 对于一个分类问题,响应必须包含标签的图像类别变量。如果没有指定响应变量的名称调用augmentedImageDatastore,反应必须在第二列。如果反应在不同的列资源描述,那么你必须指定响应变量名称使用responseNames论点。

  • 回归问题,反应必须在列或列数值后第一个。反应可以在多个列作为标量或单个列的数值向量或单元数组包含数字三维数组。当你不指定响应变量或变量的名称,augmentedImageDatastore接受其余的列资源描述作为响应变量。您可以指定响应变量名称使用responseNames论点。

反应必须不包含如果有。年代的预测数据,通过培训来传播,然而,在大多数情况下,培训无法收敛。

数据类型:

响应变量的名字输入表,指定为以下之一:

  • 与单个响应分类或回归任务,responseNames必须包含响应的特征向量或字符串标量变量的输入表。

    为回归任务与多个响应,responseNames必须是字符串数组或单元阵列特征向量的输入表中包含响应变量。

数据类型:字符|细胞|字符串

属性

全部展开

预处理操作上执行输入灰度或RGB图像颜色,指定为“没有”,“gray2rgb”,或“rgb2gray”。当图像数据存储包含灰度和RGB图像,使用ColorPreprocessing确保所有的输出图像所需的通道数量imageInputLayer

没有颜色当一个输入图像进行预处理操作已经所需数量的颜色通道。例如,如果您指定的值“gray2rgb”和一个输入图像已经有三个通道,然后没有颜色预处理发生。

请注意

augmentedImageDatastore使用的对象将RGB图像转换为灰度rgb2gray函数。如果图像有三个渠道,不对应于红、绿、蓝通道(如一个图像在L * a * b *颜色空间),然后使用ColorPreprocessing可以给贫穷的结果。

没有颜色的预处理操作时执行输入图片没有1或3频道,比如多光谱和高光谱图像。在这种情况下,所有输入图像必须有相同数量的渠道。

数据类型:字符|字符串

预处理应用到输入图像,作为指定imageDataAugmenter对象或“没有”。当DataAugmentation“没有”,不应用于输入图像预处理。

派遣观察期间在后台培训、预测或分类,指定为真正的。使用背景调度,必须并行计算工具箱™。

增强图像数据存储时才执行后台调度使用trainNetwork和推理等功能预测分类。背景调度不发生当你调用直接数据存储的功能。

在每一批数量的观察返回。你可以改变的价值MiniBatchSize只有在您创建数据存储。培训、预测、分类、MiniBatchSize中定义的属性设置为mini-batch大小trainingOptions

这个属性是只读的。

增强图像的观测数据存储总数。观察的数量的长度是一个培训的时代。

大小的输出图像,指定为一个向量的两个正整数。第一个元素指定了输出图像的行数,第二个元素指定列的数量。

请注意

如果你创建一个augmentedImageDatastore通过指定图像输出大小三元素向量,那么数据存储忽略了第三个元素。相反,数据存储使用的价值ColorPreprocessing确定输出图像的维数。例如,如果您指定OutputSize作为[28 28 1]但设置ColorPreprocessing作为“gray2rgb”,然后输出图像大小28-by-28-by-3。

方法用于调整输出图像,指定为以下之一。

  • “调整”——规模使用双线性插值的图像以适应输出尺寸。

    请注意

    augmentedImageDatastore使用双线性插值的方法imresize抗锯齿。双线性插值可以快速图像处理,同时避免扭曲等由加权插值引起的。相比之下,默认情况下imresize与反锯齿使用双立方插值生成高质量缩放图像较长的处理时间的成本。

  • “centercrop”——把农作物从训练中心的形象。作物具有相同的大小作为输出大小。

  • “randcrop”——从训练图像随机作物。随机作物具有相同的大小作为输出大小。

数据类型:字符|字符串

对象的功能

结合 合并来自多个数据存储的数据
hasdata 确定数据可用来读
numpartitions 数量的数据存储分区
分区 分区数据存储
partitionByIndex 分区augmentedImageDatastore根据指数
预览 预览数据存储中数据的子集
读取的数据augmentedImageDatastore
readall 读取所有数据存储中的数据
readByIndex 指定的索引读取数据augmentedImageDatastore
重置 数据存储重置为初始状态
洗牌 混乱的数据augmentedImageDatastore
子集 创建数据存储或文件集的子集
变换 变换数据存储
isPartitionable 确定是否可分区的数据存储
isShuffleable 确定是否shuffleable数据存储

例子

全部折叠

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

加载示例数据,包括手写的数字合成图像。

[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对象指定预处理图像增强的选项,如缩放、旋转、翻译、和反思。随机翻译三水平和垂直像素图像,和旋转图像角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更新网络参数,然后丢弃的增强图像。

图象尺寸= [28 28 1];augimds = augmentedImageDatastore(图象尺寸、XTrain YTrain,“DataAugmentation”,imageAugmenter);

指定卷积神经网络架构。

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

指定培训选项随机梯度下降的势头。

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

培训网络。因为验证图像不增强,验证精度高于训练精度。

网= trainNetwork (augimds层,选择);

提示

  • 你可以想象许多转换图像在同一图使用imtile函数。例如,这个代码显示一个mini-batch将图像从一个增广的图像数据存储auimds

    minibatch =阅读(auimds);imshow (imtile (minibatch.input))
  • 默认情况下,调整是唯一的图像进行图像预处理操作。通过使用启用额外的预处理操作DataAugmentation与一个名称-值对争论imageDataAugmenter对象。每次读取图像的增强图像数据存储,不同的随机组合应用于每个图像的预处理操作。

版本历史

介绍了R2018a