基于深度学习的图像分类应用数据增强
数据增强的MATLAB实现
图像数据增强可以通过两种方式实现[5]:- 离线增大:它包括对图像执行转换(可能使用MATLAB的批处理图像处理功能[6]),并将结果保存在磁盘上,从而增加数据集的大小,其因素等于执行的转换的数量。对于较小的数据集,这是可以接受的。
- 在线增加或动态增强:它包括在训练期间对将馈送给模型的小批量执行转换。这种方法适用于较大的数据集,以避免存储需求的潜在爆炸性增长。
- augmentedImageDatastore:在对原始训练图像进行旋转、平移、剪切、调整大小或反射(翻转)等操作后,生成批量的新图像。
- imageDataAugmenter:用于配置图像数据增强所选择的预处理操作。
- 旋转
- 围绕X轴(左右翻转)或Y轴(上下翻转)的反射
- 水平和垂直缩放
- 水平和垂直剪切
- 水平和垂直平移
- 当你初始化imageDataAugmenter变量,您可以选择一个或多个选项,例如,只有X和Y反射和水平和垂直缩放,如下面的代码片段所示。
imageAugmenter = imageDataAugmenter(…'RandXReflection',真的,…“RandXScale”,[1,2],……'RandYReflection',真的,……“RandYScale”,[1,2]);
- 作为参数传递给某些选项的值(例如,对于上面的X和Y缩放,[1 2])意味着表示a取值范围从中随机如果该转换应用于图像,则将在预处理步骤中选取样本。
- 还有一个选项imageDataAugmenter提供确定特定参数值范围的函数,例如-5到5度之间的随机旋转(请参阅下面的代码片段)。
imageAugmenter = imageDataAugmenter('RandRotation',@() -5 + 10 * rand);
- 有两种方式访问实际预处理图像(例如用于检查和显示):
- 从R2018a开始,有读取/预览方法augmentedImageDatastore它允许您获得一批示例图像(参见下面的代码片段,它使用花分类示例:[8]生成如图1所示的平铺图像)
imageAugmenter = imageDataAugmenter('RandRotation',@() -20+40*rand);augImds =…augmentedImageDatastore(图象尺寸、imd DataAugmentation, imageAugmenter);预览增强结果batchedData =预览(augImds);imshow (imtile (batchedData.input))
- 从R2018b开始,一个新的方法(augment)被添加到imageDataAugmenter,它有两个目的:它作为一个独立的函数对象和配置对象augmentedImageDatastore(参见下面的代码片段,它可能会**产生如图2所示的左右翻转图像)。
In = imread('pepper .png'));Aug = imageDataAugmenter('RandXReflection',true);Out = augment(Aug,In);数字,蒙太奇({In, Out})
**由于翻转操作是随机应用于输入图像,您可能必须运行片段多次,直到实际翻转发生。
图1所示。预览增强图像处理与随机旋转-20和20度之间。
图2所示。围绕垂直轴的随机反射('RandXReflection')的例子。
的augmentedImageDatastore和imageDataAugmenter与神经网络训练工作流很好地结合,训练工作流由[7]组成:- 选择您的训练图像,您可以将其存储为ImageDatastore,一个用于管理图像文件集合的对象,其中每个单独的图像都适合内存,但整个图像集合不一定适合。该功能自R2015b起可用,旨在读取批量图像,以便在机器学习和计算机视觉应用程序中更快地处理。
- 选择并配置所需的图像预处理选项(例如,旋转角度范围(以度为单位)或水平平移距离范围(以像素为单位),将从中随机选取特定值)并创建一个imageDataAugmenter用正确的语法初始化的对象。
- 创建一个augmentedImageDatastore,指定训练图像,输出图像的大小,和imageDataAugmenter被使用。输出图像的大小必须与网络输入层期望的大小兼容。
- 训练网络,指定augmentedImageDatastore的数据源trainNetwork函数。对于训练的每次迭代,增强图像数据存储通过对底层数据中的原始图像应用随机转换来生成一个小批量的训练数据augmentedImageDatastore(见图3)。
参考文献
- [1] P. Y. Simard, D. Steinkraus和J. C. Platt,“卷积神经网络应用于可视化文档分析的最佳实践”,2013年第12届文档分析与识别国际会议,第2卷。IEEE计算机学会,2003,pp. 958-958。
- [2] D. C. Ciresan, U. Meier, L. M. Gambardella和J. Schmidhuber,“用于手写数字识别的深度、大、简单神经网络”,《神经计算》,第22卷,no. 2。12, pp. 3207-3220, 2010。
- [3] N. V. Chawla, K. W. Bowyer, L. O. Hall,和W. P. Kegelmeyer,“smte:合成少数群体过采样技术”,人工智能研究,第16卷,no. 1。1,页321-357,2002。
- J. Wang和L. Perez,“使用深度学习在图像分类中数据增强的有效性”,2017。https://arxiv.org/pdf/1712.04621.pdf
- B. Raj,数据增强|如何在数据有限的情况下使用深度学习-第二部分https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced
- [6] Mathworks。“使用图像批处理程序进行批处理”。//www.tatmou.com/help/images/batch-processing-using-the-image-batch-processor-app.html
- [7] Mathworks。“深度学习的预处理图像”。//www.tatmou.com/help/nnet/ug/preprocess-images-for-deep-learning.html
- [8] O. Marques,“使用数据增强版本1.1.0的图像分类”,MATLAB中央文件交换,2019年。//www.tatmou.com/matlabcentral/fileexchange/68728-image-classification-using-data-augmentation
- 类别:
- 深度学习
评论
要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。