要训练网络并对新数据进行预测,图像必须与网络的输入大小相匹配。如果您需要调整图像的大小以匹配网络,那么您可以重新调整或裁剪您的数据到所需的大小。
您可以通过应用随机有效地提高训练数据的量增强您的数据。增强您还可以训练网络是不变的图像数据失真。例如,您可以添加随机旋转输入图像,这样的网络是不变的旋转的输入图像的存在。一个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,RECT);
|
|
imcrop3 |
IM = imcrop3(I,长方体);
|
|
|
augmentedImageDatastore |
auimds = augmentedImageDatastore(outputSize,I,'OutputSizeMode',M);
指定 指定 |
对于图像分类的问题,您可以使用augmentedImageDatastore
与调整大小,旋转,反射,剪切和平移变换的随机组合扩充图像。
该图显示了如何trainNetwork
使用的增强图像数据存储到变换的训练数据用于每个历元。对于工作流程的例子,请参见列车网络与增强图像。
指定训练图像。
配置图像变换选项,如旋转角的范围以及是否在随机申请反射,通过创建一个imageDataAugmenter
。
要预览施加到采样图像的转换,使用增加
功能。
创建augmentedImageDatastore
。指定训练图像,输出图像的大小,和imageDataAugmenter
。输出图像的大小必须与的大小兼容imageInputLayer
网络的。
训练网络,指定增强图像数据存储,作为数据源trainNetwork
。对于训练每次迭代,增强图像数据存储适用变换到在小批量的训练数据的图像的随机组合。
当您使用的增强图像数据存储作为训练图像的一个源,所述数据存储区中随机扰动对于每个历元训练数据,使得每个时代使用稍微不同的数据集。训练图像的每个时期的实际数量不会改变。经变换的图像没有存储在存储器中。
一些数据存储执行特定和有限的图像时,他们读批量数据的预处理操作。这些应用程序特定的数据存储都在表中列出。您可以使用这些数据存储作为培训,验证和使用深度学习工具箱™深学习应用测试数据集的来源。所有这些数据存储在所支持的格式返回数据金宝apptrainNetwork
。
数据存储 | 描述 |
---|---|
augmentedImageDatastore |
套用随机仿射几何变换,包括缩放,旋转,反射,剪切和翻译,训练深层神经网络。对于一个示例,请参见迁移学习使用AlexNet。 |
pixelLabelImageDatastore |
应用相同的仿射几何变换图像和相应的地面实况标签训练语义分割网络(需要计算机视觉工具箱™)。对于一个示例,请参见语义分割使用Deep学习。 |
randomPatchExtractionDatastore |
提取多个对从图像或像素标签图像随机补丁(需要图像处理工具箱™)。您可以选择性适用相同的随机仿射几何变换到对补丁。对于一个示例,请参见单幅图像的超分辨率使用Deep学习。 |
denoisingImageDatastore |
用于训练降噪网络应用随机生成的高斯噪声(需要图像处理工具箱)。 |
要执行比应用程序特定的数据存储提供了更广泛的和复杂的图像预处理操作,您可以使用转变
和结合
功能。欲了解更多信息,请参阅数据存储深学习。
该转变
函数创建一个数据存储的改变形式,被称为底层数据存储,通过将数据通过底层数据存储根据变换函数定义阅读。
自定义转换功能必须由返回的格式接受数据读
底层数据存储的功能。用于在图像数据ImageDatastore
,该格式取决于READSIZE
属性。
什么时候READSIZE
为1时,变换函数必须接受整数数组。阵列的大小是与图像中的类型相一致ImageDatastore
。例如,灰度级图像具有的尺寸米-通过-ñ,真彩色图像具有的尺寸米-通过-ñ-by-3,和一个多光谱图像与C信道具有的尺寸米-通过-ñ-通过-C。
什么时候READSIZE
大于1,则变换函数必须接受的图像数据的单元阵列。每个元素对应于在批处理的图像。
该转变
函数必须返回匹配网络的输入尺寸数据。该转变
功能不支持一个一对多观察映射。金宝app
该转变
功能支持预取当底层金宝appImageDatastore
读了一批JPG或PNG图像文件。对于这些图像类型,不要使用readFcn
的说法ImageDatastore
运用图像预处理,因为这个选项通常是显著慢。如果您使用自定义的读取功能,然后ImageDatastore
不预取。
该结合
函数连接将数据从多个数据存储读出并保持在数据存储之间的奇偶校验。
串联数据转换为两列的表或两列的单元阵列用于与单个输入训练网络,诸如图像到图像的回归网络。
连接的数据到一个(numInputs
1)列的单元阵列具有多个输入训练网络。
ImageDatastore
|结合
|imresize
|trainNetwork
|转变