Albumentations(Augmentation Transformations)

Albumentations(Augmentation Transformations)

Albumentations(Augmentation Transformations)是一个用于图像数据增强(数据增广)的Python包。它提供了丰富的图像增强技术,用于训练机器学习模型,特别是在计算机视觉任务中,如图像分类、对象检测、图像分割等。

A.Compose

A.Compose 是 Albumentations 库中的一个重要函数,用于创建一个增强管道(augmentation pipeline)。增强管道是一系列图像增强操作的有序集合,你可以按照自己的需求定义和组合这些操作,然后将它们应用于图像数据。

import albumentations as A

# 定义一系列增强操作
transform = A.Compose([
    A.Resize(width=256, height=256),  # 调整图像大小
    A.RandomCrop(width=224, height=224),  # 随机裁剪
    A.HorizontalFlip(p=0.5),  # 水平翻转
    A.RandomBrightnessContrast(p=0.2),  # 随机亮度和对比度调整
])

# 应用增强管道到图像
augmented_image = transform(image=image)["image"]
  • A.Resize 将图像调整为指定的宽度和高度。
  • A.RandomCrop 执行随机裁剪操作,可以在图像中随机选择一个区域并裁剪到指定的大小。
  • A.HorizontalFlip 执行水平翻转操作,以一定的概率(这里是50%)进行翻转。
  • A.RandomBrightnessContrast 随机调整图像的亮度和对比度。

A.OneOf

A.OneOf 是 Albumentations 库中的一个函数,它用于在一组增强操作中选择一个来应用于图像数据。通常,A.OneOf 用于创建多个可能的增强方式中的随机选择,以增加数据的多样性。

import albumentations as A

# 定义一组可能的增强操作
augmentations = A.OneOf([
    A.RandomRotate90(),  # 随机旋转90度
    A.HorizontalFlip(),  # 水平翻转
    A.VerticalFlip(),    # 垂直翻转
    A.Transpose()        # 转置
])

# 应用一组可能的增强操作到图像
augmented_image = augmentations(image=image)

例子

    transform = A.Compose([
        A.Resize(256,256, interpolation=cv2.INTER_NEAREST),
        A.HorizontalFlip(p=0.5),
        A.VerticalFlip(p=0.5),
        A.ShiftScaleRotate(scale_limit=0.5, rotate_limit=0, shift_limit=0.1, p=1, border_mode=0),
        A.RandomCrop(height=256, width=256, always_apply=True),
        A.RandomBrightness(p=1),
        A.OneOf(
            [
                A.Blur(blur_limit=3, p=1),
                A.MotionBlur(blur_limit=3, p=1),
            ],
            p=0.9,
        ),
    
    ])
  • A.Resize(256, 256, interpolation=cv2.INTER_NEAREST): 这一步将输入图像调整为大小为 256x256 像素。interpolation 参数指定了插值方法,这里使用了 cv2.INTER_NEAREST,它表示最近邻插值,即像素间的值采用最近的像素值。

  • A.HorizontalFlip(p=0.5): 这一步以50%的概率对图像进行水平翻转。

  • A.VerticalFlip(p=0.5): 这一步以50%的概率对图像进行垂直翻转。

  • A.ShiftScaleRotate(scale_limit=0.5, rotate_limit=0, shift_limit=0.1, p=1, border_mode=0): 这一步执行了平移、缩放和旋转操作。scale_limit 控制了缩放的范围,rotate_limit 控制了旋转的范围,shift_limit 控制了平移的范围。p=1 表示总是应用这个操作,border_mode=0 表示使用填充为0的边界模式。

  • A.RandomCrop(height=256, width=256, always_apply=True): 这一步总是对图像进行随机裁剪,裁剪后的大小为 256x256 像素。

  • A.RandomBrightness(p=1): 这一步随机调整图像的亮度。

  • A.OneOf([…], p=0.9): 这一步是在一组可能的操作中随机选择一个进行应用,包括模糊和运动模糊。p=0.9 表示以90%的概率应用这个操作。

  • A.Blur(blur_limit=3, p=1): 这个操作是模糊图像的增强操作。参数包括:

    扫描二维码关注公众号,回复: 17276684 查看本文章
    • blur_limit: 控制模糊的程度,它指定了模糊内核的最大大小。在这里,blur_limit=3 表示内核的最大大小为 3x3 像素。

    • p: 控制应用这个操作的概率,p=1 表示总是应用这个模糊操作。

    这个操作会将图像模糊,可以降低图像的细节和清晰度,有时候用于数据增强,以模拟在现实世界中的一些模糊情况,如运动模糊、焦外模糊等。

  • A.MotionBlur(blur_limit=3, p=1): 这个操作是模拟图像中的运动模糊。参数包括:

    • blur_limit: 同样控制模糊的程度,指定了运动模糊的最大程度,这里也是 3x3 像素。

    • p: 控制应用这个操作的概率,p=1 表示总是应用这个模糊操作。

猜你喜欢

转载自blog.csdn.net/qq_42725437/article/details/134889449