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 表示总是应用这个模糊操作。

相关推荐
康康的AI博客1 小时前
腾讯王炸:CodeMoment - 全球首个产设研一体 AI IDE
ide·人工智能
中达瑞和-高光谱·多光谱1 小时前
中达瑞和LCTF:精准调控光谱,赋能显微成像新突破
人工智能
mahtengdbb11 小时前
【目标检测实战】基于YOLOv8-DynamicHGNetV2的猪面部检测系统搭建与优化
人工智能·yolo·目标检测
Pyeako1 小时前
深度学习--BP神经网络&梯度下降&损失函数
人工智能·python·深度学习·bp神经网络·损失函数·梯度下降·正则化惩罚
清 澜2 小时前
大模型面试400问第一部分第一章
人工智能·大模型·大模型面试
不大姐姐AI智能体2 小时前
搭了个小红书笔记自动生产线,一句话生成图文,一键发布,支持手机端、电脑端发布
人工智能·经验分享·笔记·矩阵·aigc
虹科网络安全3 小时前
艾体宝方案 | 释放数据潜能 · 构建 AI 驱动的自动驾驶实时数据处理与智能筛选平台
人工智能·机器学习·自动驾驶
Deepoch3 小时前
Deepoc数学大模型:发动机行业的算法引擎
人工智能·算法·机器人·发动机·deepoc·发动机行业
2501_940198693 小时前
从“数据孤岛”到“智慧医脑”:实战 MCP 协议安全接入 HIS 系统,构建医疗级 AI 辅助诊断合规中台
人工智能·安全·asp.net