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): 这个操作是模糊图像的增强操作。参数包括:
-
blur_limit: 控制模糊的程度,它指定了模糊内核的最大大小。在这里,blur_limit=3 表示内核的最大大小为 3x3 像素。
-
p: 控制应用这个操作的概率,p=1 表示总是应用这个模糊操作。
这个操作会将图像模糊,可以降低图像的细节和清晰度,有时候用于数据增强,以模拟在现实世界中的一些模糊情况,如运动模糊、焦外模糊等。
-
-
A.MotionBlur(blur_limit=3, p=1): 这个操作是模拟图像中的运动模糊。参数包括:
-
blur_limit: 同样控制模糊的程度,指定了运动模糊的最大程度,这里也是 3x3 像素。
-
p: 控制应用这个操作的概率,p=1 表示总是应用这个模糊操作。
-
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!