Albumentations(Augmentation Transformations)

Albumentations(Augmentation Transformations)

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

A.Compose

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

python 复制代码
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 用于创建多个可能的增强方式中的随机选择,以增加数据的多样性。

python 复制代码
import albumentations as A

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

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

例子

python 复制代码
    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): 这个操作是模糊图像的增强操作。参数包括:

    • blur_limit: 控制模糊的程度,它指定了模糊内核的最大大小。在这里,blur_limit=3 表示内核的最大大小为 3x3 像素。

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

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

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

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

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

相关推荐
强哥之神20 分钟前
英伟达发布 Llama Nemotron Nano 4B:专为边缘 AI 和科研任务优化的高效开源推理模型
人工智能·深度学习·语言模型·架构·llm·transformer·边缘计算
Green1Leaves23 分钟前
pytorch学习-9.多分类问题
人工智能·pytorch·学习
kyle~1 小时前
计算机视觉---RealSense深度相机技术
人工智能·数码相机·计算机视觉·机器人·嵌入式·ros·传感器
碣石潇湘无限路1 小时前
【AI篇】当Transformer模型开始学习《孙子兵法》
人工智能·学习
看到我,请让我去学习2 小时前
OpenCV开发-初始概念
人工智能·opencv·计算机视觉
汀沿河2 小时前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
陈敬雷-充电了么-CEO兼CTO2 小时前
大模型技术原理 - 基于Transformer的预训练语言模型
人工智能·深度学习·语言模型·自然语言处理·chatgpt·aigc·transformer
学术 学术 Fun2 小时前
✨ OpenAudio S1:影视级文本转语音与语音克隆Mac整合包
人工智能·语音识别
双翌视觉2 小时前
机器视觉对位中的常见模型与技术原理
数码相机·计算机视觉·机器视觉
风铃喵游3 小时前
让大模型调用MCP服务变得超级简单
前端·人工智能