主要内容

深度学习的图像预处理

要训练网络并对新数据进行预测,您的图像必须与网络的输入大小匹配。如果您需要调整图像的大小以匹配网络,那么您可以将数据缩放或裁剪到所需的大小。

您可以通过应用随机化方法有效地增加训练数据量增加你的数据。增强还使您能够训练网络以对图像数据的畸变保持不变。例如,可以向输入图像添加随机旋转,这样网络就不会因输入图像的旋转而改变。一个augmentedImageDatastore提供了一种方便的方法,将有限的增强集应用于二维图像的分类问题。

对于更高级的预处理操作,如为回归问题预处理图像,或预处理3-D体积图像,可以从内置数据存储开始。您还可以根据您自己的管道使用变换结合功能。

使用缩放和裁剪调整图像大小

您可以将图像数据存储为数字数组ImageDatastore对象或表。一个ImageDatastore使您能够从太大而无法放入内存的图像集合批量导入数据。您可以使用增强的图像数据存储或调整大小的4-D数组进行训练、预测和分类。您可以使用调整大小的3-D数组仅用于预测和分类。

有两种方法可以调整图像数据的大小以匹配网络的输入大小。

  • 缩放是将图像的高度和宽度乘以一个缩放因子。如果缩放因子在垂直和水平方向上不相同,那么缩放会改变像素的空间范围和宽高比。

  • 裁剪提取图像的一个子区域,并保留每个像素的空间范围。你可以从图像的中心或随机位置裁剪图像。

调整选项 数据格式 调整功能 示例代码
重新调节
  • 表示单色或多光谱图像的三维阵列

  • 表示一堆灰度图像的三维阵列

  • 4-D阵列表示一堆图像

imresize

我= imresize(我outputSize);

outputSize指定缩放后的图像的尺寸。

  • 4-D阵列表示一堆图像

  • ImageDatastore

  • 表格

augmentedImageDatastore

auimds = augmentedImageDatastore (outputSize,我);

outputSize指定缩放后的图像的尺寸。

裁剪
  • 表示单色或多光谱图像的三维阵列

imcrop(图像处理工具箱)

我= imcrop(我、矩形);

矩形指定2d裁剪窗口的大小和位置。

  • 表示一堆灰度图像的三维阵列

  • 4-D阵列代表一堆彩色或多光谱图像

imcrop3(图像处理工具箱)

我= imcrop3(我、长方体);

长方体指定3d裁剪窗口的大小和位置。

  • 4-D阵列表示一堆图像

  • ImageDatastore

  • 表格

augmentedImageDatastore

auimds = augmentedImageDatastore (outputSize,我,“OutputSizeMode”, m);

指定作为“centercrop”从输入图像的中心裁剪。

指定作为“randcrop”从输入图像中的随机位置进行裁剪。

增强图像训练与随机几何变换

对于图像分类问题,可以使用augmentedImageDatastore使用调整大小、旋转、反射、剪切和平移转换的随机组合来增强图像。

这个图表展示了trainNetwork使用扩充的图像数据存储来转换每个纪元的训练数据。当您使用数据增强时,每个图像的随机增强版本将在训练的每个阶段使用。有关工作流的示例,请参见带有增强图像的列车网络

  1. 指定训练图像。

  2. 配置图像变换选项,如旋转角度的范围和是否随机应用反射,通过创建imageDataAugmenter

    提示

    要预览应用于示例图像的转换,请使用增加函数。

  3. 创建一个augmentedImageDatastore.指定训练图像、输出图像的大小和imageDataAugmenter.输出图像的大小必须与图像的大小兼容imageInputLayer的网络。

  4. 训练网络,指定扩充的图像数据存储作为数据源trainNetwork.对于训练的每次迭代,增强图像数据存储对小批训练数据中的图像应用随机的变换组合。

    当您使用扩充图像数据存储作为训练图像的来源时,该数据存储将随机扰动每个epoch的训练数据,因此每个epoch使用略有不同的数据集。每个纪元的实际训练图像数量没有变化。转换后的图像不存储在内存中。

使用内置数据存储执行额外的图像处理操作

一些数据存储在读取一批数据时执行特定的和有限的图像预处理操作。表中列出了这些特定于应用程序的数据存储。您可以使用这些数据存储作为使用深度学习工具箱™的深度学习应用程序的培训、验证和测试数据集的来源。所有这些数据存储都以支持的格式返回数据万博1manbetxtrainNetwork

数据存储 描述
augmentedImageDatastore 应用随机仿射几何变换,包括调整大小、旋转、反射、剪切和平移,用于训练深度神经网络。例如,请参见使用预训练网络进行迁移学习
pixelLabelImageDatastore(计算机视觉工具箱) 对图像应用相同的仿射几何变换和相应的地面真值标签来训练语义分割网络(需要Computer Vision Toolbox™)。例如,请参见基于深度学习的语义分割
randomPatchExtractionDatastore(图像处理工具箱) 从图像或像素标签图像中提取多对随机patch(需要图像处理工具箱™)。你也可以选择对这对补丁应用相同的随机仿射几何变换。例如,请参见基于深度学习的单图像超分辨率
denoisingImageDatastore(图像处理工具箱) 应用随机生成的高斯噪声来训练去噪网络(需要图像处理工具箱)。

使用组合和变换应用自定义图像处理管道

要执行比特定于应用程序的数据存储提供的更通用和更复杂的图像预处理操作,可以使用变换结合功能。有关更多信息,请参见用于深度学习的数据存储

用图像数据转换数据存储

变换函数创建数据存储的改变形式,称为底层数据存储,通过根据您定义的转换函数转换底层数据存储读取的数据。

属性返回的格式中,自定义转换函数必须接受底层数据存储的功能。的图像数据ImageDatastore,格式取决于ReadSize财产。

  • ReadSize为1时,转换函数必须接受整数数组。控件中的图像类型与数组的大小一致ImageDatastore.例如,灰度图像有维度——- - - - - -n,一个真彩色图像有尺寸——- - - - - -n-by-3的多光谱图像c渠道有尺寸——- - - - - -n——- - - - - -c

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

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

提示

变换函数在底层时支持预万博1manbetx取ImageDatastore读取一批JPG或PNG图像文件。对于这些图像类型,不要使用readFcn的观点ImageDatastore应用图像预处理,因为这个选项通常非常慢。如果您使用自定义读函数,那么ImageDatastore不预取。

将数据存储与图像数据相结合

结合函数连接从多个数据存储读取的数据,并维护数据存储之间的奇偶校验。

  • 将数据连接到一个两列表或两列单元阵列中,以使用单个输入训练网络,例如图像到图像的回归网络。

  • 将数据连接到numInputs+1)列单元阵列用于训练具有多个输入的网络。

另请参阅

||||

相关的例子

更多关于