📜  Python|数据增强

📅  最后修改于: 2022-05-13 01:54:48.045000             🧑  作者: Mango

Python|数据增强

数据增强是增加数据的数量和多样性的过程。我们不收集新数据,而是转换已经存在的数据。我将在本文中专门讨论图像数据增强。
因此,我们将研究转换和增强图像数据的各种方法。
本文涵盖以下文章 -

  1. 需要数据增强
  2. 数据增强中的操作
  3. Keras 中的数据增强
  4. 使用 Augmentor 进行数据增强

1. 需要数据增强
数据增强是深度学习中不可或缺的过程,因为在深度学习中我们需要大量数据,并且在某些情况下收集数千或数百万张图像是不可行的,因此数据增强可以派上用场。

它帮助我们增加数据集的大小并在数据集中引入可变性。

2. 数据增强中的操作
最常用的操作是-

  1. 回转
  2. 剪切
  3. 缩放
  4. 裁剪
  5. 翻转
  6. 更改亮度级别

现在我们将详细了解所有这些操作。我还将在本文后面提供数据增强的代码。

我将用于说明的原始图像

原始图像

回转
旋转操作,顾名思义,就是将图像旋转一定的度数。
在下面的示例中,我将旋转度数指定为 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 个具有不同缩放、旋转、亮度等的增强图像。

增强图像

图片1

图片2

图3

图4

图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 个增强图像。

增强图像

图片1

图片2

图3

图4

图5

您可以查看 Augmentor github 存储库以获取更多信息。

参考 -

https://keras.io/preprocessing/image/

https://github.com/mdbloice/Augmentor