一款容易上手的数据增强库Albumentations

一、Albumentations简介

官方地址:github.com

API(文档)地址:Albumentations Documentation

Albumentations是一个基于OpenCV的数据增强库,支持多种计算机视觉任务,如分类、语义分割、实例分割、目标检测和位姿识别。

Albumentations具有以下特点:

  • 提供一个简单统一的api接口,适用于所有数据类型:图像(RBG图像、灰度图像、多光谱图像),分割mask,边界框和关键点。
  • 大概有70多种不同的图像增强方法,相比torch自带的,这个库函数有更多的图像预处理方法。
  • 最大特点:快!在相同的预处理下,albumentations的速度最快。
  • 可以与流行的深度学习框架(例如PyTorch和TensorFlow)一起使用,对PyTorch非常友好。
  • 而且该库函数由专家团队编写而成,编程质量很棒。

二、安装

        方法一: pip 安装

pip install albumentations

        方法二:源码库安装

pip install -U git+https://github.com/albu/albumentations

pip install -U git+https://github.com/albumentations-team/albumentations

        方法三: conda安装

此方式需要先安装imgaug,然后再安装albumentations

conda install -c conda-forge imgaug

conda install albumentations -c albumentations

三、数据增强

3.1 像素级变换(Pixel-level transforms)

        像素级变换仅更改输入图像,而mask、检测框和关键点保持不变。

3.2 空间级变换 (Spatial-level transforms)

        空间级变换将同时更改输入图像、mask、检测框和关键点。

四、使用示例

import albumentations as A
from PIL import Image
import numpy as np
from torchvision import transforms as t
import matplotlib.pyplot as plt

trans = A.Compose([
    A.HorizontalFlip(p=0.5),
    A.VerticalFlip(p=0.5),
    A.OneOf([
        A.IAAAditiveGaussianNoise(),  # 将高斯噪声添加到输入图像
        A.GaussNoise(),    # 将高斯噪声应用于输入图像
    ], p=0.2),      # 应用选定变换的概率
    A.OneOf([
        A.RandomGamma(gamma_limit=(60, 120), p=0.9),      # gamma变换
        A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.9),   # 随机选择图片的对比度和亮度
        A.CLAHE(clip_limit=4.0, tile_grid_size=(4, 4), p=0.9),    # 一种对比度受限情况下的自适应直方图均衡化算法
    ])
    A.OneOf([
        A.MotionBlur(p=0.2),     # 使用随机大小的内核将运动模糊应用于输入图像
        A.MedianBlur(blur_limit=3, p=0.1),      # 中值滤波
        A.Blur(blur_limit=3, p=0.1),           # 使用随机大小的内核模糊输入图像 
    ], p=0.2), 
    A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
    # 随机应用仿射变换:平移,缩放和旋转输入
    A.RandomBrightnessContrast(p=0.2),   # 随机明亮对比度
    A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), max_pixel_value=255.0, p=1.0)  # 归一化
])

image = Image.open('xxx.png')
img_arr = np.array(image)     #
resize = A.resize(img_arr, 256, 256)  # 

trans_img = trans(image=img_arr)   #对输入图像进行变换

as_tensor = t.ToTensor()

img_tensor = as_tensor(trans_img['image'])    # 使用torchvision把做好了transforms的数据转化成tensor。

plt.figure(figsize=(8,8))
plt.subplot(121)
plt.title('original image')
plt.imshow(img_arr, cmap='gray')
plt.subplot(122)
plt.title('albumentations image')
plt.imshow(trans_img['image'], cmap='gray')

注意:两个重要的函数——Compose和OneOf。Compose是把所有的变换放在一起,按顺序执行;OneOf可以选择性的执行包在它里面的变换。Compose组合下的变换是要挨着顺序做的,而OneOf组合里面的变换是系统自动选择其中一个来做,而这里的概率参数p是指选定后的变换被做的概率。

五、如何将Albumentations增强方法和PyTorch结合

方法一:使用albumentations库中的函数ToTensorV2()。

方法二:使用torchvision把做好了transform的数据转换成tensor。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值