主要内容

深度学习预处理卷

读取体积数据

金宝app支持的体积图像数据文件格式包括mat文件、医学数字成像和通信(DICOM)文件和神经成像信息学技术倡议(NIfTI)文件。

将容积图像数据读入ImageDatastore.将容积像素标号数据读入PixelLabelDatastore(计算机视觉工具箱).有关更多信息,请参见用于深度学习的数据存储

该表显示了典型的用法imageDatastorepixelLabelDatastore每个支持的文件格式。金宝app在创建数据存储时,指定“FileExtensions”参数作为数据的文件扩展。指定ReadFcn属性作为读取文件格式的数据的函数句柄。的filepath参数指定包含图像数据的文件或文件夹的路径。对于像素标签图像,附加Classnames.Pixellabelid.参数指定Voxel标签值的映射到类名。

图像文件格式

创建图像数据存储或像素标签数据存储

volds = imageDatastore (filepath,...“FileExtensions”“.mat”“ReadFcn”@ (x) fcn (x));pixelLabelID pxds = pixelLabelDatastore (filepath,一会,...“FileExtensions”“.mat”“ReadFcn”@ (x) fcn (x));
FCN.是从MAT文件中读取数据的自定义函数。例如,这段代码定义了一个调用的函数基质从遥控器的第一个变量加载卷数据。保存调用的文件中的函数基马

函数数据=矩阵(文件名)Inp = load(filename);f =字段(INP);数据= INP。(f {1});结尾

单个文件中的DICOM卷

volds = imageDatastore (filepath,...“FileExtensions”'.dcm'“ReadFcn”@ (x) dicomread (x));pixelLabelID pxds = pixelLabelDatastore (filepath,一会,...“FileExtensions”'.dcm'“ReadFcn”@ (x) dicomread (x));

有关读取DICOM文件的详细信息,请参见Dicomread.(图像处理工具箱)

DICOM卷在多个文件

遵循这些步骤。例如,请参见创建包含单个和多文件DICOM卷的图像数据存储(图像处理工具箱)

  • 属性将文件聚合为单个研究dicomCollection(图像处理工具箱)功能。

  • 阅读研究中的DICOM数据使用dicomreadvolume(图像处理工具箱)功能。

  • 将每个卷写入MAT文件。

  • 创造ImageDatastorePixelLabelDatastore通过按照MAT文件的过程来源的来自MAT文件。

NIfTI

volds = imageDatastore (filepath,...“FileExtensions”“.nii”“ReadFcn”@ (x) niftiread (x));pixelLabelID pxds = pixelLabelDatastore (filepath,一会,...“FileExtensions”“.nii”“ReadFcn”@ (x) niftiread (x));

有关读取NIFI文件的更多信息,请参阅nifread.(图像处理工具箱)

对图像和标签数据

要关联体积图像和标记数据进行语义分段,或者两个复发图像数据存储,用于回归,使用aRandompatchExtractionDataStore.(图像处理工具箱).随机补丁提取数据存储区从两个数据存储中提取相应的随机定位的补丁。修补程序是一种常用的技术,以防止在具有任意大卷的训练时耗尽内存。指定与网络的输入大小匹配的补丁大小,并且对于内存效率,小于卷的全尺寸,例如64×64×64个体素。

你也可以用the结合函数关联两个数据存储。但是,使用RandompatchExtractionDataStore.有一些好处结合

  • RandompatchExtractionDataStore.金宝app支持并行培训,多GPU培训和预取阅读。使用该方法指定并行或多GPU培训ExecutionEnvironment名称 - 价值论证trainingOptions.属性指定预取读取DisparctinBackground.名称 - 价值论证trainingOptions.预取读取需要并行计算工具箱™。

  • RandompatchExtractionDataStore.固有地支持补丁提取。金宝app相反,从a中提取斑块CombinedDatastore,您必须定义自己的函数来将图像裁剪成补丁,然后使用变换应用裁剪操作的功能。

  • RandompatchExtractionDataStore.可以从一幅测试图像生成多个图像补丁。一对多的patch提取有效地增加了可用的训练数据量。

预处理体积数据

深度学习通常需要对数据进行预处理和增强。例如,您可能希望对图像强度进行归一化、增强图像对比度或添加随机仿射变换以防止过拟合。

要对容量数据进行预处理,请使用变换功能。变换创建一个更改的数据存储形式,称为底层数据存储,通过根据自定义函数中定义的操作集转换底层数据存储读取的数据。图像处理工具箱™提供了几个接受体积输入的函数。有关函数的完整列表,请参见三维立体图像处理(图像处理工具箱).您也可以使用MATLAB中的函数对体积图像进行预处理®用于多维数组。

属性返回的格式中,自定义转换函数必须接受底层数据存储的功能。

底层数据存储

自定义转换函数的输入格式

ImageDatastore

自定义转换函数的输入依赖于阅读财产。

  • 阅读是1,转换函数必须接受整数阵列。阵列的大小与中的图像类型一致ImageDatastore.例如,灰度图像有大小——- - - - - -n,一个真彩色图像有尺寸——- - - - - -n-by-3的多光谱图像c频道有尺寸——- - - - - -n——- - - - - -c

  • 阅读大于1时,转换函数必须接受与批处理中每个图像相对应的图像数据单元数组。

有关更多信息,请参见功能ImageDatastore

PixelLabelDatastore

自定义转换函数的输入依赖于阅读财产。

  • 阅读为1时,变换函数必须接受一个范畴矩阵。

  • 阅读大于1时,转换函数必须接受类别矩阵的单元格数组。

有关更多信息,请参见(计算机视觉工具箱)功能PixelLabelDatastore

RandomPatchExtractionDatastore

自定义转换函数的输入必须是一个包含两列的表。

有关更多信息,请参见(图像处理工具箱)功能RandomPatchExtractionDatastore

变换函数必须返回与网络输入大小匹配的数据。的变换函数不支持一对多的观测映射。金宝app

中对体积数据应用随机仿射变换RandomPatchExtractionDatastore,你必须使用变换功能。的DataAugmentation此数据存储的属性不支持卷数据。金宝app

例子

在图像数据存储中转换批量容量数据

这个示例展示了如何使用示例图像预处理管道转换图像数据存储中的容量数据。

指定一组保存在MAT文件中的体积图像。

filepath = fullfile(matlabroot,“工具箱”“图片”“imdata”“mristack.mat”);文件= [filepath;filepath;filepath];

创建一个存储多个映像的映像数据存储。指定该阅读数据存储大于1.指定自定义读取功能,基质.此函数在此示例的支持功能部分中定义。金宝app

volDS = imageDatastore(文件,“文件扩展”“.mat”...“ReadSize”,3,“readfcn”@ (x) matRead (x));

指定网络的输入大小。

InputSize = [128 128];

预处理体积图像volDS中定义的自定义预处理管道preprocessVolumetricIMDS金宝app支持功能。

dstrain =变换(volds,@(x)预处理volumeTricimds(x,输入));

阅读一批数据。

minibatch =阅读(dsTrain)
minibatch =3×1单元阵列{128x128x21 uint8} {128x128x21 uint8}

金宝app支持功能

基质函数从MAT文件的第一个变量加载卷数据。

函数数据=矩阵(文件名)Inp = load(filename);f =字段(INP);数据= INP。(f {1});结尾

preprocessVolumetricIMDS函数执行从底层图像数据存储读取的数据的所需变换。由于图像数据存储的读取大小大于1,所以该函数必须接受图像数据的单元格阵列。函数循环通过每个读取图像循环,并根据本预处理管道转换数据:

  • 随机旋转图像z-轴。

  • 将卷的大小调整为网络所期望的大小。

  • 使用高斯噪声创建图像的嘈杂版本。

  • 返回单元格数组中的图像。

函数Batchout =预处理volumeTricimds(Batchin,InputSize)NumRows =尺寸(Batchin,1);batchout = cell(numrows,1);为了idx = 1:numrows%沿z轴随机旋转90度imrotate = imrotate3(batchIn{idx,1},90*(randi(4)-1),[0 0 1]);将卷大小调整为网络所期望的大小IMRESIZED = IMRESIZE(IMROTATED,INPUTSIZE);加入零均值高斯噪声,归一化方差为0.01imNoisy = imnoise (imResized,“高斯”,0.01);%返回预处理数据batchout(idx)= {imnoisy};结尾结尾

在随机补丁提取数据存储中转换容量数据

这个示例展示了如何使用一个样本图像预处理管道来转换随机补丁提取数据存储中的一对容量数据。

指定两组保存在MAT文件中的体积图像。每一组包含5张立体图像。

dir = fullfile (matlabroot,“工具箱”“图片”“imdata”“Brainmrilabeled”);filesvol1 = fullfile(dir,“图片”);filesVol2 = fullfile (dir,“标签”);

将每组体积图像存储在图像数据存储中。指定自定义读取功能,基质.此函数在此示例的支持功能部分中定义。金宝app使用默认值阅读1。

vol1ds = imagedataStore(filesvol1,“文件扩展”“.mat”“readfcn”@ (x) matRead (x));vol2DS = imageDatastore (filesVol2,“文件扩展”“.mat”“readfcn”@ (x) matRead (x));

指定网络的输入大小。

InputSize = [128 128];

创建一个随机修补程序提取数据存储,该数据存储区从两个数据存储中提取相应的补丁。每张图像选择三个补丁。

patchVolDS = randomPatchExtractionDatastore (vol1DS vol2DS inputSize,“patchesperimage”,3);

预处理体积图像patchvolds.中定义的自定义预处理管道preprocessVolumetricPatchDS金宝app支持功能。

dsTrain = transform(patchVolDS,@(x) preprocessVolumetricPatchDS(x));

阅读一批数据。

minibatch =阅读(dsTrain)
minibatch =15×2表InputImage ResponseImage ____________________ ___________________ {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8} {128x128x155 uint8{8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8} {8 - x8 - x155 Uint8}

金宝app支持功能

基质函数从MAT文件的第一个变量加载卷数据。

函数数据=矩阵(文件名)Inp = load(filename);f =字段(INP);数据= INP。(f {1});结尾

preprocessVolumetricPatchDS函数执行从底层随机补丁提取数据存储读取的数据的所需变换。该函数必须接受表格。该函数根据本预处理管道转换数据:

  • 随机选择五个增强中的一个。

  • 对表的两列中的数据应用相同的扩展。

  • 返回表中增强的图像对。

函数numRows = size(batchIn,1);batchOut = batchIn;% 5扩增:nil, fliplr,flipud,rot90(fliplr)augtype = {@(x)x,@ rot90,@ fliplr,@ flipud,@(x)rot90(fliplr(x))};为了idx = 1:numRows img = batchIn{idx,1}{1};resp = batchIn {idx 2} {1};rndIdx =兰迪(5、1);imgAug = augType {rndIdx} (img);respAug = augType {rndIdx}(职责);batchOut (idx:) = {imgAug, respAug};结尾结尾

另请参阅

||(计算机视觉工具箱)|(图像处理工具箱)|

相关的例子

更多关于