Python|数据增强
数据增强是增加数据的数量和多样性的过程。我们不收集新数据,而是转换已经存在的数据。我将在本文中专门讨论图像数据增强。
因此,我们将研究转换和增强图像数据的各种方法。
本文涵盖以下文章 -
- 需要数据增强
- 数据增强中的操作
- Keras 中的数据增强
- 使用 Augmentor 进行数据增强
1. 需要数据增强
数据增强是深度学习中不可或缺的过程,因为在深度学习中我们需要大量数据,并且在某些情况下收集数千或数百万张图像是不可行的,因此数据增强可以派上用场。
它帮助我们增加数据集的大小并在数据集中引入可变性。
2. 数据增强中的操作
最常用的操作是-
- 回转
- 剪切
- 缩放
- 裁剪
- 翻转
- 更改亮度级别
现在我们将详细了解所有这些操作。我还将在本文后面提供数据增强的代码。
我将用于说明的原始图像
回转
旋转操作,顾名思义,就是将图像旋转一定的度数。
在下面的示例中,我将旋转度数指定为 40。
剪切
剪切也用于变换图像的方向。
剪切操作的结果是这样的——
缩放
缩放操作允许我们放大或缩小。
结果看起来像这样——
裁剪
裁剪允许我们裁剪图像或从图像中选择特定区域。
翻转
翻转允许我们翻转图像的方向。我们可以使用水平或垂直翻转。
您应该谨慎使用此功能,因为在某些情况下此操作可能没有多大意义,例如假设您正在设计一个面部识别系统,那么一个人在摄像机前倒立的可能性很小,因此您可以避免使用垂直翻转操作。
更改亮度级别
此功能可帮助我们应对光照变化。您可能会遇到这样一种情况,即您的大部分数据集包含具有相似亮度级别的图像,例如收集进入办公室的员工的图像,通过增强图像,我们确保我们的模型稳健且即使在不同的环境中也能够检测到人。
3. Keras 中的数据增强
Keras 是建立在 TensorFlow 之上的高级机器学习框架。我不会详细介绍 Keras 的工作原理,我只是想介绍一下 Keras 中数据增强的概念。
我们可以使用 ImageDataGenerator 类来执行数据增强。
它接受各种参数,如 - rotation_range、brightness_range、shear_range、zoom_range 等。
代码:实现数据增强的Python代码
# Importing necessary functions
from keras.preprocessing.image import ImageDataGenerator,
array_to_img, img_to_array, load_img
# Initialising the ImageDataGenerator class.
# We will pass in the augmentation parameters in the constructor.
datagen = ImageDataGenerator(
rotation_range = 40,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
brightness_range = (0.5, 1.5))
# Loading a sample image
img = load_img('image.jpg')
# Converting the input sample image to an array
x = img_to_array(img)
# Reshaping the input image
x = x.reshape((1, ) + x.shape)
# Generating and saving 5 augmented samples
# using the above defined parameters.
i = 0
for batch in datagen.flow(x, batch_size = 1,
save_to_dir ='preview',
save_prefix ='image', save_format ='jpeg'):
i += 1
if i > 5:
break
上面的代码片段允许您生成 5 个具有不同缩放、旋转、亮度等的增强图像。
增强图像
4. 使用 Augmentor 进行数据增强
# Importing necessary library
import Augmentor
# Passing the path of the image directory
p = Augmentor.Pipeline("image_folder")
# Defining augmentation parameters and generating 5 samples
p.flip_left_right(0.5)
p.black_and_white(0.1)
p.rotate(0.3, 10, 10)
p.skew(0.4, 0.5)
p.zoom(probability = 0.2, min_factor = 1.1, max_factor = 1.5)
p.sample(5)
上面的代码片段允许您根据上面定义的功能生成 5 个增强图像。
增强图像
您可以查看 Augmentor github 存储库以获取更多信息。
参考 -
https://keras.io/preprocessing/image/
https://github.com/mdbloice/Augmentor