主要内容

randomPatchExtractionDatastore

用于从图像或像素标签图像中提取随机二维或三维随机补丁的数据存储

描述

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

此对象要求您拥有深度学习工具箱™。

请注意

当你使用randomPatchExtractionDatastore作为训练数据的来源,数据存储从每个纪元的每张图像中提取多个随机补丁,以便每个纪元使用略微不同的数据集。每个纪元的实际训练补丁数量是训练图像的数量乘以PatchesPerImage.映像补丁不存储在内存中。

创建

描述

例子

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

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

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

输入参数

全部展开

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

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

请注意

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

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

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

请注意

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

属性

全部展开

此属性是只读的。

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

  • 二维补丁的2元正整数向量。PatchSize有[rc),r指定行数和c指定补丁中的列数。

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

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

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

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

DataAugmentation属性不支持3d数据。金宝app要预处理3-D数据,请使用变换函数。

在训练、预测或分类期间,在后台发送观察结果,具体为真正的.要使用后台调度,必须拥有并行计算工具箱™。

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

此属性是只读的。

的观测总数randomPatchExtractionDatastore.观察的数量是一个训练周期的长度。

对象的功能

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

例子

全部折叠

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

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

创建第二个数据存储,将图像转换到其中imds1应用高斯模糊。

Imds2 = transform(imds1,@(x)imgaussfilt(x,2));

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

augmenter = imageDataAugmenter(“RandRotation”90年[0],“RandXReflection”,真正的)
augmenter = imageDataAugmenter with properties: FillValue: 0 RandXReflection: 1 RandYReflection: 0 RandRotation: [0 90] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [0 0] RandYTranslation: [0 0]

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

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

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

Minibatch =预览(patchds);input = minibatch.InputImage;responses = minibatch.ResponseImage;Test = cat(2,输入,响应);蒙太奇(测试”,“大小”,[8 2])输入(左)和响应(右)

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

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

定义类名及其关联的标签id。然后,创建一个像素标签数据存储,其中包含训练图像的ground truth像素标签。

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

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

patchds = randompatchextracactiondatastore (imds,pxds,32,...“PatchesPerImage”, 512);

创建用于语义分割的网络。

图层= [imageInputLayer([32 32 1]) convolution2dLayer(3,64,“填充”,1) reluLayer() maxPooling2dLayer(2,“步”, 2) convolution2dLayer (64,“填充”,1) reluLayer() transposedConv2dLayer(4,64,“步”2,“种植”,1) convolution2dLayer(1,2) softmaxLayer() pixelClassificationLayer()]
图层数组= 10x11”的形象输入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 4 x4转置运算与步幅[2 2]和输出裁剪[1]8”卷积2 1 x1旋转步[1]和填充[0 0 0 0]10”像素分类层交叉熵损失

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

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

培训网络。

net = trainNetwork(补丁,图层,选项);

提示

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

  • 如果输入数据存储为ImageDatastore,则its中的值标签属性将忽略randomPatchExtractionDatastore

  • 将二维数据可视化randomPatchExtractionDatastore,你可以使用预览函数,该函数返回表中数据的子集。控件在同一图中显示所有补丁蒙太奇函数。实例中的图像补丁预览randomPatchExtractionDatastore被称为patchds

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

在R2018b中引入