为深度学习预处理图像

为了训练网络,并就新的数据预测,您的图像必须与网络的输入大小相匹配。如果您需要调整您的图像的大小与网络相匹配,那么你可以重新调整或数据裁剪到所需的大小。

您可以通过应用随机有效地提高训练数据的量增加你的数据。增强还使您能够将网络训练成不受图像数据失真影响的。例如,可以向输入图像添加随机旋转,这样网络就不会因输入图像的旋转而改变。一个augmentedImageDatastore提供了有限的一组增扩的适用于2-d为图像分类问题的简便方法。

对于更高级的预处理操作,为回归问题预处理图像,或预处理3 d体积图像,你可以启动内置的数据存储。您也可以根据自己的管道预处理图像通过使用转变结合功能。

调整图像使用缩放和裁切

可以将图像数据存储为数字数组ImageDatastore对象或表。一个ImageDatastore使您能够分批从太大,以适应在内存中的图片集导入数据。可以使用的增强图像数据存储或训练,预测和分类的调整大小4- d阵列。可以使用仅用于预测和分类的调整3-d阵列。

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

  • 通过缩放因子重新缩放乘以图像的高度和宽度。如果缩放因子是在垂直方向和水平方向没有相同的,然后重新缩放变化的像素的空间范围和纵横比。

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

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

  • 表示一堆灰度图像的三维数组

  • 表示图像堆栈的4-D数组

imresize

我= imresize(我outputSize);

outputSize指定的经重新缩放图像的尺寸。

  • 表示图像堆栈的4-D数组

  • ImageDatastore

augmentedImageDatastore

auimds = augmentedImageDatastore(outputSize,I);

outputSize指定的经重新缩放图像的尺寸。

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

imcrop

我= imcrop(我、矩形);

矩形指定的尺寸和2-d裁剪窗口的位置。

  • 表示一堆灰度图像的三维数组

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

imcrop3

我= imcrop3(我、长方体);

长方体指定的尺寸和3-d裁剪窗口的位置。

  • 表示图像堆栈的4-D数组

  • ImageDatastore

augmentedImageDatastore

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

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

指定作为'randcrop'以从输入图像中的随机位置裁剪。

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

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

该图显示了如何trainNetwork使用增强图像数据存储转换每个epoch的训练数据。有关工作流的示例,请参见列车网络与增强图像

  1. 指定训练图像。

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

    提示

    要预览施加到采样图像的转换,使用增加函数。

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

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

    当您使用的增强图像数据存储作为训练图像的一个源,所述数据存储区中随机扰动对于每个历元训练数据,使得每个时代使用稍微不同的数据集。训练图像的每个时期的实际数量不会改变。经变换的图像没有存储在存储器中。

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

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

数据存储 描述
augmentedImageDatastore 套用随机仿射几何变换,包括缩放,旋转,反射,剪切和翻译,训练深层神经网络。例如,参见迁移学习使用AlexNet
pixelLabelImageDatastore 对图像应用相同的仿射几何变换和相应的地面真值标签来训练语义分割网络(需要Computer Vision Toolbox™)。例如,参见利用深度学习进行语义分割
randomPatchExtractionDatastore 提取多个对从图像或像素标签图像随机补丁(需要图像处理工具箱™)。您可以选择性适用相同的随机仿射几何变换到对补丁。例如,参见单图像超分辨率使用深度学习
denoisingImageDatastore 应用随机生成的高斯噪声训练去噪网络(需要图像处理工具箱)。

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

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

变换数据存储的图像数据

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

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

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

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

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

提示

转变功能支持预取当底层万博1manbetxImageDatastore读取一批JPG或PNG图像文件。对于这些图像类型,请不要使用readFcn的说法ImageDatastore应用图像预处理,因为这个选项通常要慢得多。如果使用自定义读取函数,则ImageDatastore不预取。

结合数据存储的图像数据

结合函数将从多个数据存储库读取的数据连接起来,并在数据存储库之间保持奇偶性。

  • 串联数据转换为两列的表或两列的单元阵列用于与单个输入训练网络,诸如图像到图像的回归网络。

  • 将数据连接到(numInputs+1)-用于多输入训练网络的列单元数组。

另请参阅

||||

相关的例子

更多关于