当前位置:   article > 正文

一款容易上手的数据增强库Albumentations_albumentations安装

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

  1. conda install -c conda-forge imgaug
  2. conda install albumentations -c albumentations

三、数据增强

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

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

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

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

四、使用示例

  1. import albumentations as A
  2. from PIL import Image
  3. import numpy as np
  4. from torchvision import transforms as t
  5. import matplotlib.pyplot as plt
  6. trans = A.Compose([
  7. A.HorizontalFlip(p=0.5),
  8. A.VerticalFlip(p=0.5),
  9. A.OneOf([
  10. A.IAAAditiveGaussianNoise(), # 将高斯噪声添加到输入图像
  11. A.GaussNoise(), # 将高斯噪声应用于输入图像
  12. ], p=0.2), # 应用选定变换的概率
  13. A.OneOf([
  14. A.RandomGamma(gamma_limit=(60, 120), p=0.9), # gamma变换
  15. A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.9), # 随机选择图片的对比度和亮度
  16. A.CLAHE(clip_limit=4.0, tile_grid_size=(4, 4), p=0.9), # 一种对比度受限情况下的自适应直方图均衡化算法
  17. ])
  18. A.OneOf([
  19. A.MotionBlur(p=0.2), # 使用随机大小的内核将运动模糊应用于输入图像
  20. A.MedianBlur(blur_limit=3, p=0.1), # 中值滤波
  21. A.Blur(blur_limit=3, p=0.1), # 使用随机大小的内核模糊输入图像
  22. ], p=0.2),
  23. A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.2, rotate_limit=45, p=0.2),
  24. # 随机应用仿射变换:平移,缩放和旋转输入
  25. A.RandomBrightnessContrast(p=0.2), # 随机明亮对比度
  26. A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), max_pixel_value=255.0, p=1.0) # 归一化
  27. ])
  28. image = Image.open('xxx.png')
  29. img_arr = np.array(image) #
  30. resize = A.resize(img_arr, 256, 256) #
  31. trans_img = trans(image=img_arr) #对输入图像进行变换
  32. as_tensor = t.ToTensor()
  33. img_tensor = as_tensor(trans_img['image']) # 使用torchvision把做好了transforms的数据转化成tensor。
  34. plt.figure(figsize=(8,8))
  35. plt.subplot(121)
  36. plt.title('original image')
  37. plt.imshow(img_arr, cmap='gray')
  38. plt.subplot(122)
  39. plt.title('albumentations image')
  40. plt.imshow(trans_img['image'], cmap='gray')

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/327349
推荐阅读
相关标签
  

闽ICP备14008679号