这篇博客是关于图像增强的2集博客系列中的A部分。它分为以下几个部分:-
A部分:介绍图像增强、各种增强技术及其通过可用的库实现。
B部分:建立并训练PyTorch模型,分析图像增强的使用对性能的影响。
如果您是深度学习领域的新手,那么在某个时间点上,您可能听说过图像增强这个话题。本文将讨论什么是图像增强,并在三个不同的Python库中实现它,即Kera、PyTorch和增强(特别是图像增强)。因此,第一个问题出现了,什么是图像增强或一般的数据增强。
什么是图像增强?
在深度学习中,深度网络需要大量的训练数据才能很好地进行泛化并达到较好的精度。但在某些情况下,图像数据不够大。在这种情况下,我们使用一些技术来增加我们的训练数据。它人工创建训练数据,使用随机旋转、平移、剪切和翻转等技术处理给定的数据(我们稍后将讨论其中的一些技术)。
不同的图像增强技术
可以使用各种技术进行图像增强以馈送模型输入,例如:
空间增强
- 缩放
- 修剪
- 翻转
- 旋转
- 翻译
- 亮度
- 对比度
- 饱和度
- 色调
深度学习中的数据增强
在深度学习中,数据增强是一种常见的做法。因此,每个深度学习框架都有自己的增强方法,甚至是整个库。例如,让我们看看如何使用Kera、PyTorch和Alumentations中的内置方法应用图像增强。
1.凯拉斯。
Kera ImageDataGenerator类提供了一种快速而简单的方式来增强图像。它提供了许多不同的增强技术,如标准化、旋转、平移、翻转、亮度改变等等。您可以在它的官方文档页面上找到更多信息。但是,使用Kera ImageDataGenerator类的主要好处是它旨在提供实时数据增强。这意味着当您的模型处于训练阶段时,它会生成增强的图像。
使用ImageDataGeneratorImageDataGenerator类进行图像放大可确保模型在每个时期接收图像的新变体。但它只返回转换后的图像,而不会将它们添加到原始图像语料库。如果确实如此,那么模型将多次查看原始图像,这肯定会超出我们的模型。ImageDataGenerator的另一个优点是它需要较低的内存使用量。这是因为在不使用这个类的情况下,我们一次加载所有图像。但是在使用它时,我们是成批加载图像,这节省了大量内存。
支持一系列技术以及像素缩放方法。我们将重点介绍用于图像数据的五种主要类型的数据增强技术;具体地说:
- 图像通过WIDTH_SHIFT_RANGE和HEIGHT_SHIFT_RANGE参数进行移位。
- 图像通过Horizative_Flip和VERIAL_FLIP参数进行翻转。
- 通过ROTATION_RANGE参数进行图像旋转
- 通过BIGHTENCY_RANGE参数实现图像亮度。
- 通过zoom_range参数缩放图像。
例如,可以构造ImageDataGenerator类的实例。
将生成如下所示的随机增强图像,然后将其提供给模型。
2.Pytorch
PyTorch是一个基于Python的库,有助于构建深度学习模型并将其用于各种应用程序。但这不仅仅是另一个深度学习图书馆。这是一个科学计算软件包。
使用PyTorch的主要优点是我们可以对选定的图像单独应用图像增强技术。
从导入图像开始,我们将定义和imshow()函数来可视化实际的和转换后的图像
缩放:在缩放或调整大小时,图像会调整到给定的大小(例如,图像的宽度可以加倍)。
裁剪:在裁剪中,选择图像的一部分,例如在给定示例中,返回中心裁剪的图像。
翻转:在翻转时,图像水平或垂直翻转。
像素增强
像素增强或颜色抖动处理通过更改图像的像素值来更改图像的颜色属性。
变换的组成
将几个变换组合在一起。此转换不支持TouchScript。它只是将提供给它的所有变换组合在一起。因此,转换.Compose中的所有转换都将逐个应用于输入。
3.Albumentation
Alumentations是一种计算机视觉工具,可以提高深度卷积神经网络的性能。Alumentations是一个Python库,用于快速、灵活地进行图像增强。它有效地实现了丰富多样的图像转换操作,这些操作针对性能进行了优化,同时为不同的计算机视觉任务(包括对象分类、分割和检测)提供了简洁而强大的图像增强界面。
翻转:在翻转时,图像可以水平或垂直翻转。
ShiftScaleRotate:在翻转时,可以在给定范围内随机调整和旋转图像。
白板中的构图增强
Compose接收一个列表,该列表包含A.RandomCrop、A.HorizontalFlip、A.RandomBrightnessContrast等几个扩展,借助这些列表,我们可以在一次运行中执行各种扩展技术,例如:A.RandomCrop、A.HorizontalFlip、A.RandomBrightnessContrast等。让我们看一个使用alumentations库进行合成增强的示例。
在上面的代码中,我们使用了使用随机裁剪和随机颜色抖动的合成增强。
摘要
在本教程中,您了解了如何在训练深度学习神经网络时使用图像数据增强。
具体地说,我们了解到:
- 图像数据增强用于扩展训练数据集,以提高模型的性能和泛化能力。
- KERAS、PyTorch、Alumentation深度学习库支持图像数据增强。
感谢Himanshu Wagh的贡献。Himanshu Wagh
参考文献
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/08/05/%e5%9b%be%e5%83%8f%e5%a2%9e%e5%bc%ba/