主要内容

augmentedImageDatastore

转换批处理以增强图像数据

描述

增强图像数据存储在可选的预处理中转换批次培训,验证,测试和预测数据,例如调整大小,旋转和反射。调整图像大小以使其与深度学习网络的输入大小兼容。使用随机预处理操作进行培训训练图像数据,以帮助阻止网络过度装备和记忆培训图像的确切细节。

要使用增强图像训练网络,请提供augmentedImageDatastoreTrainnetwork..有关更多信息,请参阅深度学习的预处理图像

  • 当您使用增强图像数据存储作为训练图像的来源时,数据存储随机仔细使用每个时代的训练数据,以便每个时代使用略微不同的数据集。每个时期的训练图像的实际数量不会改变。变换的图像未存储在内存中。

  • 一个imageInputlayer.使用增广图像的均值而不是原始数据集的均值对图像进行归一化。这个平均数对于第一个增广期计算一次。所有其他纪元使用相同的平均值,这样平均图像不会在训练过程中发生变化。

默认情况下,一个augmentedImageDatastore只调整图像次要拟合输出大小。您可以使用一个配置其他图像变换的选项ImagedataAugmenter.

创建

描述

auimds = augmentedimagedataStore(输出,IMDS.使用图像数据存储中的图像创建一个扩充的图像数据存储,用于分类问题IMDS.,并设置输出财产。

auimds = augmentedimagedataStore(输出,Xy为分类和回归问题创建一个扩充的图像数据存储。数组X包含预测变量和数组y包含分类标签或数字响应。

auimds = augmentedimagedataStore(输出,X创建一个扩充的图像数据存储,用于预测数组中的图像数据的响应X

auimds = augmentedimagedataStore(输出,资源描述为分类和回归问题创建一个扩充的图像数据存储。桌子,资源描述,包含预测和响应。

auimds = augmentedimagedataStore(输出,资源描述响应为分类和回归问题创建一个扩充的图像数据存储。桌子,资源描述,包含预测和响应。这响应参数指定的响应变量资源描述

例子

auimds = augmentedimagedataStore(___、名称、值)使用名称值对创建增强图像数据存储来设置ColorPreprocessingDataAugmentationoutputsizeMode., 和DispatchInBackground特性。您可以指定多个名称值对。将每个属性名称括在引号中。

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

输入参数

全部展开

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

imageageAtastore.允许批量读取JPG或PNG图像文件使用预取。如果您使用自定义函数来读取图像,那么imageageAtastore.不预取。

提示

augmentedImageDatastore用于深度学习的图像预处理,包括图像大小调整。

不要使用readfcn.选择imageDatastore对于预处理或调整大小,因为此选项通常显着较慢。

图像,指定为4-D数字数组。前三个维度是高度,宽度和通道,最后一个维度索引各个图像。

如果阵列包含S,然后他们通过训练传播。但是,在大多数情况下,培训未能收敛。

数据类型:单身的||uint8|INT8.|uint16|int16|uint32|int32

对分类或回归的响应,指定为以下之一:

  • 对于分类问题,y是包含图像标签的分类矢量。

  • 对于回归问题,y可以是:

    • N——- - - - - -R.数字矩阵。N是观察人数和R.是响应的数量。

    • H——- - - - - -W.——- - - - - -C——- - - - - -N数字数组。H——- - - - - -W.——- - - - - -C是单一响应的大小和N为观察次数。

答复不得包含s。

数据类型:分类|

输入数据,指定为表。资源描述必须包含第一列中的预测器,作为绝对或相对图像路径或图像。响应的类型和位置取决于问题:

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

  • 对于回归问题,响应必须是第一个之后列或列中的数值。响应可以在多列中作为标量或在单个列中作为包含数字3-D阵列的数字向量或单元阵列。当您没有指定响应变量或变量的名称时,augmentedImageDatastore接受剩下的列资源描述作为响应变量。属性指定响应变量名响应论点。

答复不得包含s。如果有在预测的数据中,它们通过培训传播,但是,在大多数情况下,培训未能收敛。

数据类型:桌子

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

  • 对于具有单一响应的分类或回归任务,响应必须是包含输入表中的响应变量的字符向量或字符串标量。

    对于具有多个响应的回归任务,响应必须是包含输入表中响应变量的字符向量的字符串数组或单元格数组。

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

属性

全部展开

对输入灰度或RGB图像进行的颜色预处理操作,指定为'没有任何'“gray2rgb”, 或者“rgb2gray”.当图像数据存储包含灰度和RGB图像的混合时,使用ColorPreprocessing确保所有输出图像都有所需的频道数imageInputlayer.

当输入图像已经具有所需数量的颜色通道时,不执行颜色预处理操作。例如,如果您指定值“gray2rgb”并且输入图像已有三个通道,则不会发生任何颜色预处理。

笔记

augmentedImageDatastore对象将RGB图像转换为灰度尺寸RGB2GRAY.功能。如果图像有三个不对应于红色,绿色和蓝色通道的通道(例如L * A * B *颜色空间中的图像),则使用ColorPreprocessing可以给出差的结果。

当输入图像没有1或3个通道时,不执行颜色预处理操作,例如用于多光谱或高光谱图像。在这种情况下,所有输入图像必须具有相同数量的通道。

数据类型:字符|字符串

用于输入图像的预处理,指定为ImagedataAugmenter.对象或者'没有任何'.什么时候DataAugmentation'没有任何',没有预处理应用于输入图像。

在培训,预测或分类期间,在背景中调度观测,指定为错误的或者真的.要使用后台调度,必须具有并行计算工具箱™。

增强图像数据存储仅在使用时执行背景调度Trainnetwork.和推理功能如预测分类.调用时不会发生后台调度直接函数数据存储。

每批返回的观察数。您可以更改值小匹匹匹匹配只有创建数据存储后。用于培训,预测和分类,小匹匹匹匹配属性设置为中定义的迷你批处理大小培训选项

此属性是只读的。

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

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

笔记

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

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

  • “调整”-使用双线性插值缩放图像,以适应输出大小。

    笔记

    augmentedImageDatastore的双线性插值方法imresize抗锯齿。双线性插值可以快速处理图像,同时避免由最近邻插值引起的失真。相反,默认情况下imresize使用带反锯齿的双三次插值来产生高质量的调整大小的图像,但代价是较长的处理时间。

  • 'CenterCrop'- 从训练形象的中心拍摄作物。该裁剪与输出大小相同。

  • “randcrop”- 从训练图像中随机作物。随机裁剪的大小与输出大小相同。

数据类型:字符|字符串

对象功能

结合 将数据与多个数据存储组合
哈迪塔 确定数据是否可用读取
numpartitions 数据存储分区数
划分 分区数据存储
PartitionByIndex. 分区augmentedImageDatastore根据索引
预览 在数据存储区中预览数据子集
读取数据augmentedImageDatastore
读物 读取数据存储中的所有数据
readbyex. 读取由索引指定的数据augmentedImageDatastore
重置 将数据存储重置为初始状态
洗牌 随机数据库数据augmentedImageDatastore
子集 创建数据存储或文件集的子集
转变 转换数据存储
是可分派的 确定数据存储是否可分区
isShufflable. 确定数据存储是否会破坏

例子

全部收缩

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

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

[xtrain,ytrain] = DigitTrain4darraydata;

digittrain4darraydata.将设置为4-D阵列数据的数字训练加载。XTrain.是28×28-by-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(......'randroatation',[ -  20,20],......“RandXTranslation”,[ -  3 3],......'randytranslation',[ -  3 3])
Imageaugmenter = ImagedataAugmenter具有属性:FileValue:0 RandXreflection:0 Randyreflection:0 RandRotation:[-20 20] RANDSCALE:[1] RANDXSCALE:[1] RANDYSCALE:[1] RANDXSHEAR:[0] RANDYSHEAR:[00] RandXTranslation:[-3 3] RandyTranslation:[-3 3]

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

图像= [28 28 1];Augimds = AugmentedimageDataStore(图像化,Xtrain,Ytrain,'dataaugmentation',imageaugmender);

指定卷积神经网络架构。

图层= [imageInputlayer(iconageize)卷积2dlayer(3,8,“填充”'相同的')BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'走吧',2)卷积2dlayer(3,16,“填充”'相同的')BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'走吧'32岁的,2)convolution2dLayer (3“填充”'相同的') batchNormalizationLayer relullayer fulllyconnectedlayer (10) softmaxLayer classificationLayer];

用动量指定随机梯度下降的培训选项。

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

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

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

提示

  • 您可以通过使用相同图中的许多转换图像可视化inmtile.功能。例如,此代码显示来自调用的增强图像数据存储的一个Mini-批次转换图像auimds

    minibatch =阅读(auimds);imshow (imtile (minibatch.input))
  • 默认情况下,调整大小是对图像执行的唯一图像预处理操作。属性启用其他预处理操作DataAugmentation名称-值对参数ImagedataAugmenter.对象。每次从增强图像数据存储中读取图像时,将对每个图像应用不同的随机预处理操作组合。

在R2018A介绍