主要内容

randomPatchExtractionDatastore

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

描述

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

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

请注意

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

创建

描述

例子

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

patchds = randomPatchExtractionDatastore (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数据不支持。要预处理3-D数据,请使用变换函数。

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

每个批处理中返回的观察结果的数量。的值可以更改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 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 = randomPatchExtractionDatastore(imds1,imds2,[100 100],...“DataAugmentation”增量)
patchds = randomPatchExtractionDatastore with properties: PatchesPerImage: 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。然后,创建一个包含训练图像的ground truth像素标签的像素标签数据存储。

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

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

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

为语义分割创建一个网络。

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

设置培训选项。若要减少训练时间,请设置MaxEpochs5。

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

培训网络。

网= trainNetwork (patchds层,选项);

提示

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

  • 如果输入数据存储是ImageDatastore,则其中的值标签属性会被忽略randomPatchExtractionDatastore

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

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

版本历史

介绍了R2018b

Baidu
map