用于深度学习的图像预处理
为了训练网络并对新数据进行预测,您的图像必须匹配网络的输入大小。如果您需要调整图像的大小以匹配网络,那么您可以将数据重新缩放或裁剪到所需的大小。
通过应用随机化,可以有效地增加训练数据量增加根据你的数据。增强还使您能够训练网络,使其不受图像数据扭曲的影响。例如,您可以向输入图像添加随机旋转,以便网络对输入图像中旋转的存在是不变的。一个augmentedImageDatastore
提供了一种方便的方法,将有限的增强集应用于2-D图像分类问题。
对于更高级的预处理操作,对回归问题的图像进行预处理,或对3-D体积图像进行预处理,可以从内置数据存储开始。方法还可以根据自己的管道对图像进行预处理变换
而且结合
功能。
使用缩放和裁剪调整图像大小
可以将图像数据存储为数字数组或ImageDatastore
对象或表。一个ImageDatastore
使您能够从过大而无法装入内存的图像集合批量导入数据。您可以使用增强图像数据存储或调整大小的4-D数组进行训练、预测和分类。您只能使用调整大小的3-D数组进行预测和分类。
有两种方法来调整图像数据的大小以匹配网络的输入大小。
缩放将图像的高度和宽度乘以一个缩放因子。如果缩放因子在垂直和水平方向上不相同,则重新缩放将更改像素的空间范围和纵横比。
裁剪提取图像的一个子区域,并保留每个像素的空间范围。您可以从图像的中心或随机位置裁剪图像。
调整选项 | 数据格式 | 调整功能 | 示例代码 |
---|---|---|---|
重新调节 |
|
imresize |
im = imresize(I,outputSize);
|
|
augmentedImageDatastore |
auimds = augmentedImageDatastore(outputSize,I);
|
|
裁剪 |
|
imcrop (图像处理工具箱) |
im = imcrop(I,矩形);
|
|
imcrop3 (图像处理工具箱) |
im = imcrop3(I,长方体);
|
|
|
augmentedImageDatastore |
auimds = augmentedImageDatastore(输出大小,I,“OutputSizeMode”, m);
指定 指定 |
用随机几何变换增强训练图像
对于图像分类问题,可以使用augmentedImageDatastore
用调整大小、旋转、反射、剪切和平移变换的随机组合来增强图像。
该图表显示了如何trainNetwork
使用增强图像数据存储来转换每个纪元的训练数据。当您使用数据增强时,每个训练阶段都会使用每个图像的一个随机增强版本。有关工作流的示例,请参见列车网络与增强图像.
指定训练图像。
配置图像转换选项,例如旋转角度的范围和是否随机应用反射
imageDataAugmenter
.提示
若要预览应用于示例图像的转换,请使用
增加
函数。创建一个
augmentedImageDatastore
.指定训练图像、输出图像的大小和imageDataAugmenter
.的大小必须与输出图像的大小相兼容imageInputLayer
网络的。训练网络,指定增强图像数据存储作为数据源
trainNetwork
.对于训练的每次迭代,增强图像数据存储对小批训练数据中的图像应用随机组合的转换。当您使用增强图像数据存储作为训练图像的来源时,该数据存储随机扰动每个历元的训练数据,因此每个历元使用略微不同的数据集。每个epoch的训练图像的实际数量是不变的。转换后的图像不存储在内存中。
使用内置数据存储执行其他图像处理操作
一些数据存储在读取一批数据时执行特定的和有限的图像预处理操作。表中列出了这些特定于应用程序的数据存储。您可以将这些数据存储用作使用deep learning Toolbox™的深度学习应用程序的训练、验证和测试数据集的来源。所有这些数据存储以支持的格式返回数据金宝apptrainNetwork
.
数据存储 | 描述 |
---|---|
augmentedImageDatastore |
应用随机仿射几何变换,包括调整大小、旋转、反射、剪切和平移,用于训练深度神经网络。有关示例,请参见使用预训练网络的迁移学习. |
pixelLabelImageDatastore (计算机视觉工具箱) |
将相同的仿射几何变换应用于图像和相应的地面真理标签,用于训练语义分割网络(需要计算机视觉工具箱™)。有关示例,请参见基于深度学习的语义分割. |
randomPatchExtractionDatastore (图像处理工具箱) |
从图像或像素标签图像中提取多对随机补丁(需要图像处理工具箱™)。您还可以选择对补丁对应用相同的随机仿射几何变换。有关示例,请参见使用深度学习提高图像分辨率. |
denoisingImageDatastore (图像处理工具箱) |
应用随机生成的高斯噪声训练去噪网络(需要图像处理工具箱)。 |
使用组合和转换应用自定义图像处理管道
要执行比特定于应用程序的数据存储提供的更通用和更复杂的图像预处理操作,可以使用变换
而且结合
功能。有关更多信息,请参见用于深度学习的数据存储.
用图像数据转换数据存储
的变换
函数创建数据存储的更改形式,称为底层数据存储,通过根据您定义的转换函数转换底层数据存储所读取的数据。
类返回的格式的数据读
底层数据存储的函数。类中的图像数据ImageDatastore
,格式取决于ReadSize
财产。
当
ReadSize
为1时,变换函数必须接受整数数组。控件中的图像类型与数组的大小一致ImageDatastore
.例如,灰度图像有维度米——- - - - - -n,真彩色图像有尺寸米——- - - - - -n-by-3,多光谱图像与c通道有维度米——- - - - - -n——- - - - - -c.当
ReadSize
大于1时,变换函数必须接受一个单元格数组的图像数据。每个元素对应于批处理中的一个图像。
的变换
函数必须返回与网络输入大小匹配的数据。的变换
函数不支持一对多观测映射。金宝app
提示
的变换
函数支持预取金宝appImageDatastore
读取一批JPG或PNG图像文件。对于这些映像类型,不要使用readFcn
的观点ImageDatastore
应用图像预处理,因为此选项通常显着较慢。如果使用自定义读取函数,则ImageDatastore
不预取。
将数据存储与映像数据结合起来
的结合
函数连接从多个数据存储读取的数据,并在数据存储之间保持奇偶校验。
将数据连接到两列表或两列单元格数组中,用于训练具有单一输入的网络,例如图像到图像回归网络。
将数据连接到(
numInputs
+1)多输入训练网络的列单元阵列。
另请参阅
trainNetwork
|imresize
|变换
|结合
|ImageDatastore