randomPatchExtractionDatastore

用于从图像或像素标签图像中提取随机2-D或3-D随机补丁的数据存储

描述

一个randomPatchExtractionDatastore从两个基于图像的数据存储中提取相应的随机定位补丁。例如,输入数据存储可以是两个图像数据存储,它们包含用于训练图像到图像回归网络的网络输入和所需的网络响应,或者是用于训练语义分割网络的地面真实图像和像素标签数据。

此对象要求您拥有Deep Learning Toolbox™。

请注意

当你使用randomPatchExtractionDatastore作为训练数据的来源,数据存储为每个epoch从每个图像中提取多个随机补丁,因此每个epoch使用略有不同的数据集。每个epoch的实际训练斑块数等于训练图像数乘以PatchesPerImage.图像补丁不存储在内存中。

创建

描述

例子

patchds = randomPatchExtractionDatastore (ds1的ds2PatchSize创建一个数据存储,提取大小随机定位的补丁PatchSize从数据存储中的输入数据ds1的以及数据存储中的响应数据ds2

patchds = randomPatchExtractionDatastore (ds1的ds2PatchSize名称,值使用名称-值对设置PatchesPerImageDataAugmentation,DispatchInBackground属性。可以指定多个名称-值对。将每个属性名称用引号括起来。

例如,randomPatchExtractionDatastore (imds1 imds2 50 PatchesPerImage, 40)创建一个数据存储,该数据存储从图像数据存储中的每个图像随机生成40个50 × 50像素大小的补丁imds1imds2

输入参数

全部展开

输入数据包含训练输入到网络,指定为ImageDatastorePixelLabelDatastore(计算机视觉工具箱),或TransformedDatastore

指定一个PixelLabelDatastore需要计算机视觉工具箱™。

请注意

ImageDatastore允许使用预取批量读取JPG或PNG图像文件。如果使用自定义函数读取图像,则不会进行预取。

响应数据表示所需的网络响应,指定为ImageDatastorePixelLabelDatastore(计算机视觉工具箱),或TransformedDatastore.如果你指定TransformedDatastore,则底层数据存储必须是ImageDatastore或者一个PixelLabelDatastore

指定一个PixelLabelDatastore需要计算机视觉工具箱。

请注意

ImageDatastore允许使用预取批量读取JPG或PNG图像文件。如果使用自定义函数读取图像,则不会进行预取。

属性

全部展开

此属性是只读的。

补丁大小,指定为以下之一。

  • 一个2-D块的正整数的2元向量。PatchSize形式为[rc),r指定行数和c指定补丁中的列数。

  • 3-D补丁的正整数的3元向量。PatchSize形式为[rcp),r指定行数,c指定列的数量,和p补丁中的平面数。

每幅图像的随机补丁数,指定为一个正整数。

对输入图像进行预处理,指定为imageDataAugmenter(深度学习工具箱)对象或“没有”.当DataAugmentation“没有”,对输入图像不进行预处理。

通过随机变换增加数据,如调整大小、旋转和反射,以帮助防止网络过拟合和记忆训练数据的确切细节。的randomPatchExtractionDatastore对每对中的两个补丁应用相同的随机变换。该数据存储在训练过程中实时增强数据。

DataAugmentation属性不支持3d数据。万博1manbetx要对三维数据进行预处理,请使用变换函数。

在训练、预测或分类时在后台调度观测结果,指定为真正的.要使用后台调度,您必须拥有Parallel Computing Toolbox™。

每批返回的观察数据的数量。你可以改变值MiniBatchSize只有在创建数据存储后才能使用。为了训练、预测和分类,使用MiniBatchSize属性设置为中定义的小批量大小trainingOptions(深度学习工具箱)

此属性是只读的。

观测的总次数randomPatchExtractionDatastore.观察的次数就是一个训练时期的长度。

对象的功能

结合 组合来自多个数据存储的数据
hasdata 确定数据是否可用来读取
numpartitions 数据存储分区数
分区 分区数据存储
partitionByIndex 分区randomPatchExtractionDatastore根据指数
预览 预览数据存储中的数据子集
读取的数据randomPatchExtractionDatastore
readall 读取数据存储中的所有数据
readByIndex 读取索引指定的数据randomPatchExtractionDatastore
重置 将数据存储重置为初始状态
洗牌 洗牌数据存储中的数据
变换 变换数据存储
isPartitionable 确定数据存储是否可分区
isShuffleable 确定数据存储是否可打乱

例子

全部折叠

创建一个包含训练映像的映像数据存储。本例中的数据存储包含JPEG彩色图像。

imageDir = fullfile (toolboxdir (“图片”),“imdata”);imds1 = imageDatastore (imageDir,“FileExtensions”“jpg”);

创建第二个转换映像的数据存储imds1通过应用高斯模糊。

imds2 =变换(imds1 @ (x) imgaussfilt (x, 2));

创建一个imageDataAugmenter它以[0,90]度范围内的随机角度旋转图像,并随机水平反映图像数据。

增量= imageDataAugmenter (“RandRotation”90年[0],“RandXReflection”,真正的)
augmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 1 randreflection: 0 RandRotation: [0 90] RandScale: [1 1] RandXScale: [1 1] RandXShear: [0 0] RandXShear: [0 0] RandXTranslation: [0 0] RandXTranslation: [0 0]

创建一个randomPatchExtractionDatastore对象,从未处理的训练图像和相应的平滑响应图像中提取大小为100 × 100的随机斑块。属性指定增强选项DataAugmentation财产。

patchds = randomPatchExtractionDatastore(imds1,imds2,[100 100]),...“DataAugmentation”增量)
patchds = randomPatchExtractionDatastore with properties: patchperimage: 128 PatchSize: [100 100] DataAugmentation: [1×1 imageDataAugmenter] MiniBatchSize: 128 NumObservations: [] DispatchInBackground: 0

预览一组增强图像补丁和相应的平滑图像补丁。

minibatch =预览(patchds);输入= minibatch.InputImage;反应= minibatch.ResponseImage;测试=猫(2输入反应);蒙太奇(测试”,“大小”, 2[8])标题(“输入(左)和响应(右)”

创建一个包含训练映像的映像数据存储。

dataDir = fullfile (toolboxdir (“愿景”),“visiondata”“triangleImages”);imageDir = fullfile (dataDir,“trainingImages”);imd = imageDatastore (imageDir);

定义类名及其关联的标签id。然后,为训练图像创建包含地面真实像素标签的像素标签数据存储。

一会= [“三角形”“背景”];labelid = [255 0];labelDir = fullfile (dataDir,“trainingLabels”);一会,pxds = pixelLabelDatastore (labelDir labelIDs);

创建一个随机的补丁提取数据存储,从图像和相应的像素标签中提取大小为32 × 32像素的随机补丁。设置可选PatchesPerImage属性提取512个随机补丁从每个图像和像素标签对。

pxds patchds = randomPatchExtractionDatastore (imd, 32岁...“PatchesPerImage”, 512);

创建一个语义分割网络。

层= [imageInputLayer([32 32 1])卷积2dlayer (3,64,“填充”(1) reluLayer) maxPooling2dLayer (2,“步”, 2) convolution2dLayer (64,“填充”, 1) reluLayer () transposedConv2dLayer (64,“步”2,“种植”,1)卷积2dlayer (1,2) softmaxLayer() pixelClassificationLayer()]
图层= 10x1图层数组:1”的形象输入32 x32x1图像zerocenter正常化2”64 3 x3的卷积,卷积步伐[1]和填充[1 1 1 1]3”ReLU ReLU 4”马克斯池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]5“卷积64 3 x3的隆起与步幅[1]和填充1 1 1 1 6”ReLU ReLU 7”转置卷积64 4x4转置卷积与stride[2 2]和输出剪切[1 1]8 " Convolution 2 1x1卷积与stride[1 1]和padding [0 0 0 0] 9 " Softmax Softmax 10 "像素分类层交叉熵损失

设置培训选项。为了减少训练时间,设置MaxEpochs5。

选择= trainingOptions (“个”...“InitialLearnRate”1 e - 3,...“MaxEpochs”5,...“详细”、假);

培训网络。

网= trainNetwork (patchds层,选项);

提示

  • randomPatchExtractionDatastore的输出对输入数据存储的操作返回相同大小的数组。

  • 如果输入的数据存储是ImageDatastore,然后它的值标签属性忽略randomPatchExtractionDatastore

  • 将二维数据可视化randomPatchExtractionDatastore,你可以使用预览函数,它返回表中数据的子集。在相同的图形中使用蒙太奇函数。例如,此代码显示来自randomPatchExtractionDatastore被称为patchds

    minibatch =预览(patchds);蒙太奇(minibatch.InputImage)

介绍了R2018b