深度学习的预处理卷
读取容量数据
万博1manbetx体积图像数据支持的文件格式包括mat文件、医学数字成像和通信(DICOM)文件和神经成像信息技术计划(NIfTI)文件。
读取体积图像数据到ImageDatastore
.读取容量像素标签数据到PixelLabelDatastore
(计算机视觉工具箱).有关更多信息,请参见用于深度学习的数据存储.
的典型用法imageDatastore
而且pixelLabelDatastore
对于每种支持的文件格式。万博1manbetx创建数据存储时,指定“FileExtensions”
参数作为数据的文件扩展名。指定ReadFcn
属性作为读取文件格式数据的函数句柄。的filepath
参数指定包含图像数据的文件或文件夹的路径。对于像素标签图像,附加一会
而且pixelLabelID
参数指定体素标签值到类名的映射。
图像文件格式 |
创建图像数据存储或像素标签数据存储 |
---|---|
垫 |
volds = imageDatastore(filepath,...“FileExtensions”,“.mat”,“ReadFcn”@ (x) fcn (x));pxds = pixelLabelDatastore(filepath,classNames,pixelLabelID,...“FileExtensions”,“.mat”,“ReadFcn”@ (x) fcn (x)); fcn 是一个从MAT文件读取数据的自定义函数。例如,这段代码定义了一个名为matRead 它从MAT文件的第一个变量加载卷数据。将函数保存在一个名为matRead.m .
函数data = matRead(文件名)inp = load(文件名);F = fields(inp);数据= inp.(f{1});结束 |
单个文件中的DICOM卷 |
volds = imageDatastore(filepath,...“FileExtensions”,“.dcm”,“ReadFcn”@ (x) dicomread (x));pxds = pixelLabelDatastore(filepath,classNames,pixelLabelID,...“FileExtensions”,“.dcm”,“ReadFcn”@ (x) dicomread (x)); 有关读取DICOM文件的更多信息,请参见 |
多个文件中的DICOM卷 |
遵循以下步骤。示例请参见创建包含单文件和多文件DICOM卷的映像数据存储(图像处理工具箱).
|
NIfTI |
volds = imageDatastore(filepath,...“FileExtensions”,“.nii”,“ReadFcn”@ (x) niftiread (x));pxds = pixelLabelDatastore(filepath,classNames,pixelLabelID,...“FileExtensions”,“.nii”,“ReadFcn”@ (x) niftiread (x)); 有关读取NIfTI文件的更多信息,请参见 |
对图像和标签数据
要关联体积图像和标签数据进行语义分割,或关联两个体积图像数据存储进行回归,可以使用randomPatchExtractionDatastore
(图像处理工具箱).随机补丁提取数据存储从两个数据存储中提取相应的随机位置的补丁。在使用任意大容量的训练时,补丁是防止内存耗尽的常用技术。指定与网络的输入大小相匹配的补丁大小,并且为了内存效率,要小于卷的完整大小,例如64 × 64 × 64体素。
你也可以使用结合
函数关联两个数据存储。但是,使用对象关联两个数据存储randomPatchExtractionDatastore
有一些好处结合
.
randomPatchExtractionDatastore
万博1manbetx支持并行训练、多gpu训练、预取读取。方法指定并行或多gpu训练'
的名值参数ExecutionEnvironment
'trainingOptions
.参数指定预取读取'
的名值参数DispatchInBackground
'trainingOptions
.预读需要并行计算工具箱™。randomPatchExtractionDatastore
固有地支持补丁提取。万博1manbetx相比之下,从一个CombinedDatastore
,您必须定义自己的函数将图像裁剪到补丁中,然后使用变换
函数应用裁剪操作。randomPatchExtractionDatastore
可以从一个测试图像生成多个图像补丁。一对多的补丁提取有效地增加了可用的训练数据量。
预处理体积数据
深度学习经常需要对数据进行预处理和扩充。例如,您可能希望规范化图像强度,增强图像对比度,或添加随机仿射变换以防止过拟合。
若要预处理容量数据,请使用变换
函数。变换
创建数据存储的更改形式底层数据存储,通过根据在自定义函数中定义的操作集转换底层数据存储所读取的数据。图像处理工具箱™提供了几个接受体积输入的功能。有关函数的完整列表,请参见三维体积图像处理(图像处理工具箱).您还可以使用MATLAB中的函数对体积图像进行预处理®这在多维数组上是有效的。
类返回的格式的数据必须接受自定义转换函数读
底层数据存储的函数。
底层数据存储 |
输入到自定义转换函数的格式 |
---|---|
ImageDatastore |
自定义转换函数的输入取决于
有关更多信息,请参见 |
PixelLabelDatastore |
自定义转换函数的输入取决于
有关更多信息,请参见 |
RandomPatchExtractionDatastore |
自定义转换函数的输入必须是一个有两列的表。 有关更多信息,请参见 |
的变换
函数必须返回与网络输入大小匹配的数据。的变换
函数不支持一对多的观察映射。万博1manbetx
将随机仿射变换应用于体积数据RandomPatchExtractionDatastore
,你必须使用变换
函数。的DataAugmentation
属性不支持容量数据。万博1manbetx
例子
转换映像数据存储中的批量容量数据
此示例演示如何使用示例图像预处理管道转换图像数据存储中的容量数据。
指定一组保存在MAT文件中的体积图像。
Filepath = fullfile(matlabroot,“工具箱”,“图片”,“imdata”,“mristack.mat”);Files = [filepath;]filepath;filepath];
创建存储多个容量映像的映像数据存储。指定ReadSize
的值大于1。指定一个自定义读函数,matRead
.此函数在本示例的支持函数一节中定义。万博1manbetx
volDS = imageDatastore(files,FileExtensions=“.mat”,...ReadSize = 3, ReadFcn = @ (x) matRead (x));
指定网络的输入大小。
inputSize = [128 128];
中的体积图像预处理volDS
中定义的自定义预处理管道preprocessVolumetricIMDS
万博1manbetx支持功能。
dsTrain = transform(volDS,@(x) preprocessVolumetricIMDS(x,inputSize));
读取一批数据。
minibatch = read(dsTrain)
minibatch =3×1单元格数组{128x128x21 uint8} {128x128x21 uint8} {128x128x21 uint8}
万博1manbetx支持功能
的matRead
函数从MAT文件的第一个变量加载卷数据。
函数data = matRead(文件名)inp = load(文件名);F = fields(inp);数据= inp.(f{1});结束
的preprocessVolumetricIMDS
函数对从底层图像数据存储读取的数据执行所需的转换。因为图像数据存储的读取大小大于1,所以函数必须接受图像数据的单元数组。该函数循环遍历每个读取的图像,并根据这个预处理管道转换数据:
随机旋转图像z设在。
将卷的大小调整为网络期望的大小。
创建一个带有高斯噪声的图像的噪声版本。
返回单元格数组中的图像。
函数batchOut = preprocessVolumetricIMDS(batchIn,inputSize) numRows = size(batchIn,1);batchOut = cell(numRows,1);为idx = 1:numRows%执行随机的90度旋转z轴imrotate = imrotate3(batchIn{idx,1},90*(randi(4)-1),[0 0 1]);将卷的大小调整到网络期望的大小imresize = imresize(imrotate,inputSize);添加归一化方差为0.01的零平均高斯噪声imnoise = imnoise(imResized,“高斯”, 0.01);返回预处理数据batchOut(idx) = {imnoise};结束结束
在随机补丁提取数据存储中转换容量数据
这个例子展示了如何使用示例图像预处理管道转换随机补丁提取数据存储中的容量数据对。
指定两组保存在MAT文件中的体积图像。每组包含5个体积图像。
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 = transform(patchVolDS,@(x) preprocessVolumetricPatchDS(x));
读取一批数据。
minibatch = read(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
函数从MAT文件的第一个变量加载卷数据。
函数data = matRead(文件名)inp = load(文件名);F = fields(inp);数据= inp.(f{1});结束
的preprocessVolumetricPatchDS
函数对从底层随机补丁提取数据存储读取的数据执行所需的转换。函数必须接受一个表。函数根据这个预处理管道转换数据:
随机选择五个增强中的一个。
对表的两列中的数据应用相同的增广。
返回表中的增强图像对。
函数batchOut = preprocessVolumetricPatchDS(batchIn) numRows = size(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 = randi(5,1);imgag = augType{rndIdx}(img);respAug = augType{rndIdx}(resp);batchOut(idx,:) = {imgAug,respAug};结束结束
另请参阅
trainNetwork
|imageDatastore
|pixelLabelDatastore
(计算机视觉工具箱)|randomPatchExtractionDatastore
(图像处理工具箱)|变换
相关的例子
- 创建包含单文件和多文件DICOM卷的映像数据存储(图像处理工具箱)
- 基于深度学习的三维脑肿瘤分割