欢迎访问宙启技术站
智能推送

用Python的imgaug库实现数据增强,为机器学习模型提供更多样化的训练样本

发布时间:2024-01-02 18:42:28

imgaug是一个用于图像增强的Python库,可以通过对图像进行多种变换来提供更多样化的训练样本。它支持多种常用的图像增强操作,如旋转、缩放、翻转、裁剪、亮度和对比度调整等。

首先,我们需要安装imgaug库。可以使用以下命令在Python的虚拟环境中安装imgaug:

pip install imgaug

接下来,我们将演示如何使用imgaug库实现几个基本的图像增强操作。

首先,我们导入必要的库和模块:

import imgaug.augmenters as iaa
import cv2
import numpy as np
import os

然后,我们定义一个函数来加载图像,并将其转换为numpy数组:

def load_image(image_path):
    image = cv2.imread(image_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    return image

接下来,我们定义一个函数来保存增强后的图像:

def save_image(image, output_path):
    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    cv2.imwrite(output_path, image)

然后,我们定义一个函数来应用图像增强操作,并保存增强后的图像:

def apply_augmentation(image_path, output_folder):
    image = load_image(image_path)
    
    # 定义增强操作
    seq = iaa.Sequential([
        iaa.Fliplr(0.5), # 以50%的概率水平翻转图像
        iaa.Affine(rotate=(-45, 45)) # 旋转图像在-45度到45度之间
    ])
    
    # 应用增强操作
    augmented_image = seq.augment_image(image)
    
    # 保存增强后的图像
    image_name = os.path.basename(image_path)
    output_path = os.path.join(output_folder, image_name)
    save_image(augmented_image, output_path)

最后,我们定义一个函数来批量处理图像文件夹中的所有图像:

def augment_images(input_folder, output_folder):
    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)
    
    # 获取文件夹中所有图像的路径
    image_paths = [os.path.join(input_folder, f) for f in os.listdir(input_folder) if os.path.isfile(os.path.join(input_folder, f))]
    
    # 为每个图像应用增强操作
    for image_path in image_paths:
        apply_augmentation(image_path, output_folder)

现在,我们可以通过调用augment_images函数来应用图像增强操作并保存增强后的图像。假设我们有一个名为input的文件夹包含需要增强的图像,我们可以使用以下代码:

input_folder = "input"
output_folder = "output"

augment_images(input_folder, output_folder)

这将应用定义的增强操作并将增强后的图像保存到名为output的文件夹中。

总结一下,使用imgaug库可以很方便地实现图像增强操作,从而为机器学习模型提供更多样化的训练样本。在这篇文章中,我们展示了如何使用imgaug库来进行基本的图像增强,并提供了一个完整的例子来说明其使用方法。