主要内容

预处理卷深度学习

读取体积数据

万博1manbetx支持文件格式容积图像数据包括mat文件、医学数字成像和通信(DICOM)文件,和神经影像信息学技术倡议(NIfTI)文件。

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

表显示的典型用法imageDatastorepixelLabelDatastore为每个支持的文件格式。万博1manbetx当您创建数据存储时,指定的FileExtensions名称-值参数数据的文件扩展名。指定ReadFcn房地产作为处理函数读取数据文件的格式。的filepath参数指定的路径包含图像数据文件或文件夹。像素标签图片,附加一会pixelLabelID参数指定类名体元标签值的映射。

图像文件格式

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

volds = imageDatastore (filepath,“FileExtensions”,“.mat”,“ReadFcn”@ (x) fcn (x));pixelLabelID pxds = pixelLabelDatastore (filepath,一会,“FileExtensions”,“.mat”,“ReadFcn”@ (x) fcn (x));
fcn从垫是一个自定义函数,读取数据文件。例如,这段代码定义了一个函数调用matRead负载体积数据从文件的第一个变量垫。保存一个文件中的函数调用matRead.m

函数data = matRead(文件名)输入=负载(文件名);f =字段(输入);=输入的数据。(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(图像处理工具箱)函数。

  • 写每个卷作为垫文件。

  • 创建ImageDatastorePixelLabelDatastore从垫的集合文件遵循垫的过程文件。

NIfTI

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

读取NIfTI文件的更多信息,请参阅niftiread(图像处理工具箱)

对图像和标签数据

把体积图像语义分类和标签数据,或者两个容积图像数据存储回归,使用randomPatchExtractionDatastore(图像处理工具箱)。一块随机抽取数据存储从两个数据存储提取相应的随机补丁。修补是一种常见的技术来防止内存耗尽时训练和任意大卷。指定一个补丁大小相匹配的输入网络和规模,记忆效率,比全尺寸的小体积,如64 - - 64 - 64像素点。

您还可以使用结合函数将两个数据存储。然而,将两个数据存储使用randomPatchExtractionDatastore一些好处了结合

  • randomPatchExtractionDatastore万博1manbetx支持并行训练,阅读multi-GPU培训和预取。指定平行或multi-GPU训练使用ExecutionEnvironment名称-值参数trainingOptions。指定阅读使用预取DispatchInBackground名称-值参数trainingOptions。预取阅读需要并行计算工具箱™。

  • randomPatchExtractionDatastore本身支持补丁提取。万博1manbetx相比之下,提取从一个补丁CombinedDatastore,你必须定义自己的函数,作物图像补丁,然后使用变换功能应用裁剪操作。

  • randomPatchExtractionDatastore可以生成几个图像补丁从一个测试图像。一对多块提取有效增加可用的训练数据量。

预处理体积数据

深度学习经常需要数据预处理和增强。例如,您可能想要标准化图像强度,提高图像对比度,或添加随机仿射变换以防止过度拟合。

容积数据进行预处理,使用变换函数。变换创建一个数据存储形式改变,称为一个底层数据存储底层数据存储,将读取的数据根据你定义的组操作自定义函数。图像处理工具箱™提供了几个函数,接受容量输入。函数的完整列表,请参阅三维容积图像处理(图像处理工具箱)。你也可以进行预处理容积图像在MATLAB中使用函数®工作在多维数组。

自定义转换函数必须接受返回的数据的格式底层数据存储的函数。

底层数据存储

输入自定义的格式转换功能

ImageDatastore

输入自定义转换函数依赖ReadSize财产。

  • ReadSize是1,转换函数必须接受一个整数数组中。数组的大小与图像的类型是一致的ImageDatastore。例如,一个灰度图像的大小——- - - - - -n,真彩图像的大小——- - - - - -n3、多光谱图像c渠道有大小——- - - - - -n——- - - - - -c

  • ReadSize大于1,转换函数必须接受一个单元阵列的图像数据对应于每个图像的批处理。

有关更多信息,请参见的函数ImageDatastore

PixelLabelDatastore

输入自定义转换函数依赖ReadSize财产。

  • ReadSize是1,转换函数必须接受一个分类矩阵。

  • ReadSize大于1,转换函数必须接受一系列细胞的分类矩阵。

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

RandomPatchExtractionDatastore

输入自定义转换函数必须与两列一个表。

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

变换函数必须返回数据相匹配的输入网络的大小。的变换功能不支持一对多观察映射。万博1manbetx

应用随机仿射变换容积数据RandomPatchExtractionDatastore,你必须使用变换函数。的DataAugmentation这个数据存储不支持体积数据的属性。万博1manbetx

例子

变换批容积图像数据存储中的数据

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

指定一组垫的容积图像保存文件。

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

创建一个图像数据存储中存储多个体积图像。指定该ReadSize数据存储是大于1。指定一个自定义的阅读功能,matRead。这个函数是定义在这个例子的支持功能部分。万博1manbetx

volDS = imageDatastore(文件、FileExtensions =“.mat”,ReadSize = 3, ReadFcn = @ (x) matRead (x));

指定输入网络的大小。

inputSize = (128 - 128);

容积图像的预处理volDS使用定制的预处理中定义的管道preprocessVolumetricIMDS万博1manbetx支持功能。

dsTrain =变换(volDS @ (x) preprocessVolumetricIMDS (x, inputSize));

读取一批数据。

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

万博1manbetx支持功能

matRead体积负荷函数数据从文件的第一个变量垫。

函数data = matRead(文件名)输入=负载(文件名);f =字段(输入);=输入的数据。(f {1});结束

preprocessVolumetricIMDS函数执行所需的转换从一个潜在的图像数据存储读取的数据。因为读取图像数据存储的大小大于1,函数必须接受一系列细胞的图像数据。函数遍历每个读取图像并转换数据根据这个预处理管道:

  • 随机旋转的图像z设在。

  • 调整音量大小所期望的网络。

  • 创建一个嘈杂的版本的图像与高斯噪声。

  • 返回图像单元阵列。

函数batchOut = preprocessVolumetricIMDS (batchIn inputSize) numRows =大小(batchIn, 1);batchOut =细胞(numRows, 1);idx = 1: numRows%执行随机对z轴旋转90度imRotated = imrotate3 (batchIn {idx 1}, 90 *(兰迪(4)1),[0 0 1);%调整音量大小所期望的网络imResized = imresize (imRotated inputSize);%添加零均值高斯噪声归一化方差为0.01imNoisy = imnoise (imResized,“高斯”,0.01);%返回数据预处理batchOut (idx) = {imNoisy};结束结束

改变容积数据随机提取数据存储

这个例子展示了如何在一个随机变换对体积数据块提取数据存储使用示例图像预处理管道。

指定两套垫的容积图像保存文件。每组包含五个容积图像。

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

每组体积图像存储在一个图像数据存储。指定一个自定义的阅读功能,matRead。这个函数是定义在这个例子的支持功能部分。万博1manbetx使用默认的ReadSize为1。

vol1DS = imageDatastore (filesVol1 FileExtensions =“.mat”ReadFcn = @ (x) matRead (x));vol2DS = imageDatastore (filesVol2 FileExtensions =“.mat”ReadFcn = @ (x) matRead (x));

指定输入网络的大小。

inputSize = (128 - 128);

创建一个随机提取相应的补丁的补丁提取数据存储两个数据存储。选择三个补丁/形象。

patchVolDS = randomPatchExtractionDatastore (vol1DS vol2DS、inputSize PatchesPerImage = 3);

容积图像的预处理patchVolDS使用定制的预处理中定义的管道preprocessVolumetricPatchDS万博1manbetx支持功能。

dsTrain =变换(patchVolDS @ (x) preprocessVolumetricPatchDS (x));

读取一批数据。

minibatch =阅读(dsTrain)
minibatch =15×2表InputImage ResponseImage ____________________ ___________________ {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8} {128 x128x155 uint16} {128 x128x155 uint8}

万博1manbetx支持功能

matRead体积负荷函数数据从文件的第一个变量垫。

函数data = matRead(文件名)输入=负载(文件名);f =字段(输入);=输入的数据。(f {1});结束

preprocessVolumetricPatchDS函数执行所需的转换从潜在的随机读取的数据块提取数据存储。函数必须接受一个表。函数变换的数据根据这个预处理管道:

  • 随机选择5个扩增。

  • 应用相同的增加到数据表的两列。

  • 返回图像增强对表中。

函数batchOut = preprocessVolumetricPatchDS (batchIn) numRows =大小(batchIn, 1);batchOut = batchIn;% 5对应:nil, rot90、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};结束结束

另请参阅

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

相关的例子

更多关于