计算机视觉之Albumentations图像数据增强库


打kaggle图像类的比赛时总是会用到 Albumentations库,这个库挺强大的,基于OpenCV实现的,API接口简单,也易于添加到AI框架比如Pytorch中,因此,特别适合用于深度学习中的网络训练时的图片数据增强。

1 安装

Albumentations库的安装:

# 建议把opencv-python也安装
# -i 之后加的是豆瓣源
pip install albumentations -i https://pypi.douban.com/simple

2 参考

3 实例

'''
Albumentations可以对数据集进行逐像素的转换,
如模糊、下采样、高斯造点、高斯模糊、动态模糊、RGB转换、随机雾化等;
也可以进行空间转换(同时也会对目标进行转换),如裁剪、翻转、随机裁剪等;
'''
import numpy as np
import cv2
import matplotlib.pyplot as plt
import albumentations as A
# 图像变换函数
# from  albumentations  import (
#     HorizontalFlip, IAAPerspective, ShiftScaleRotate, CLAHE, RandomRotate90,
#     Transpose, ShiftScaleRotate, Blur, OpticalDistortion, GridDistortion, HueSaturationValue,
#     IAAAdditiveGaussianNoise, GaussNoise, MotionBlur, MedianBlur, IAAPiecewiseAffine,
#     IAASharpen, IAAEmboss, RandomContrast, RandomBrightness, Flip, OneOf, Compose
# )
# .jpg的图也可以
image = cv2.imread('jinsihou.jpeg', 1)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 水平翻转
aug = A.HorizontalFlip(p = 1)
img_HorizontalFlip = aug(image = image)['image']
# 透视变换
aug = A.IAAPerspective(scale = 0.2, p = 1)
img_IAAPerspective = aug(image = image)['image']
# 平移缩放旋转三合一
aug = A.ShiftScaleRotate(p = 1)
img_ShiftScaleRotate = aug(image = image)['image']
# 组合图像增强
def augment_flips_color(p = .5):
    return A.Compose([
        A.CLAHE(),
        A.RandomRotate90(),
        A.Transpose(),
        A.ShiftScaleRotate(shift_limit = 0.0625, scale_limit = 0.50, rotate_limit = 45, p = .75),
        A.Blur(blur_limit = 3),
        A.OpticalDistortion(),
        A.GridDistortion(),
        A.HueSaturationValue()
    ], p = p)
aug = augment_flips_color(p = 1)
img_augment_flips_color = aug(image = image)['image']
def strong_aug(p = .5):
    return A.Compose([
        A.RandomRotate90(),
        A.Flip(),
        A.Transpose(),
        A.OneOf([
            A.IAAAdditiveGaussianNoise(),
            A.GaussNoise(),
        ], p = 0.2),
        A.OneOf([
            A.MotionBlur(p = .2),
            A.MedianBlur(blur_limit = 3, p = .1),
            A.Blur(blur_limit = 3, p = .1),
        ], p = 0.2),
        A.ShiftScaleRotate(shift_limit = 0.0625, scale_limit = 0.2, rotate_limit = 45, p = .2),
        A.OneOf([
            A.OpticalDistortion(p = 0.3),
            A.GridDistortion(p = .1),
            A.IAAPiecewiseAffine(p = 0.3),
        ], p = 0.2),
        A.OneOf([
            A.CLAHE(clip_limit = 2),
            A.IAASharpen(),
            A.IAAEmboss(),
            A.RandomContrast(),
            A.RandomBrightness(),
        ], p = 0.3),
        A.HueSaturationValue(p = 0.3),
    ], p = p)
aug  ==  strong_aug(p=1)
img_strong_aug = aug(image=image)['image']
# 显示结果图
plt.subplot(2, 3, 1)
plt.imshow(image)
plt.subplot(2, 3, 2)
plt.imshow(img_HorizontalFlip)
plt.subplot(2, 3, 3)
plt.imshow(img_IAAPerspective)
plt.subplot(2, 3, 4)
plt.imshow(img_ShiftScaleRotate)
plt.subplot(2, 3, 5)
plt.imshow(img_augment_flips_color)
plt.subplot(2, 3, 6)
plt.imshow(img_strong_aug)
plt.show()

输出结果图
在这里插入图片描述
未完待续…




须知少时凌云志,曾许人间第一流。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZPILOTE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值