albumentations: 一个快速的图像增强库
- albumentations 下载
- albumentations 特点
- albumentations 使用
- 图像增强的目标
- 图像增强
- albumentations 官网
albumentations 下载
conda activate conda环境 # 不使用conda可以忽略
pip install albumentations
# 上面未成功
pip install -U git+https://github.com/albu/albumentations
albumentations 特点
- 基于高度优化的 OpenCV 库实现图像快速数据增强,输入数据是numpy
- 针对不同图像任务,如分割,检测等,这里重点是医学图像分割
albumentations 使用
图像增强的目标
图像增强
- 前期准备
import albumentations as A
# 展示图片
def show(image1,image2):plt.figure()plt.subplot(121)plt.imshow(image1)plt.subplot(122)plt.imshow(image2)plt.show()
- 图像缩放
image1 = A.Resize(128, 128, p=1.0)(image=image)['image']
image2 = A.RandomCrop(128, 128, p=1.)(image=image)['image']
show(image1,image2)
- 水平翻转、垂直翻转
image1 = A.VerticalFlip(p=1.0)(image=image)['image']
image2 = A.HorizontalFlip(p=1.)(image=image)['image']
show(image1, image2)
- 自适应直方图均衡、锐化输入图像
image1 = A.CLAHE(p=1.0)(image=image)['image']
image2 = A.Sharpen(p=1.)(image=image)['image']
show(image1, image2)
- 添加噪声
image1 = A.Blur(blur_limit=4,p=1.0)(image=image)['image']
image2 = A.MotionBlur(blur_limit=4,p=1.)(image=image)['image']
show(image1, image2)
- 改变图像的亮度、对比度和饱和度
image1 = A.ColorJitter(p=1.0)(image=image)['image']
image2 = A.HueSaturationValue(p=1.)(image=image)['image']
show(image1, image2)
- 组合和选择
Compose组合下的变换是要挨着顺序做的,而OneOf组合里面的变换是系统自动选择其中一个来做,而这里的概率参数p是指选定后的变换被做的概率
normal_transforms = A.Compose([A.Resize(width=256 // 2, height=256 // 2, p=1.0),A.HorizontalFlip(p=0.5),A.VerticalFlip(),# 对比度受限直方图均衡# (Contrast Limited Adaptive Histogram Equalization)A.CLAHE(),# 随机旋转 90°A.RandomRotate90(),# 转置A.Transpose(),# 随机仿射变换# A.ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.50, rotate_limit=45, p=.75),A.OneOf([# 模糊A.Blur(blur_limit=3),# 光学畸变A.OpticalDistortion(),# 网格畸变A.GridDistortion(),# 随机改变图片的 HUE、饱和度和值A.HueSaturationValue()],p=1.0)
], p=1.0)
arg = normal_transforms(image=image,mask=mask)
image = arg['image']
mask = arg['mask']
show(image,mask)
- 增强方法和pytorch结合
pytorch模型接受的输入是Tensor格式,而albumentations增强后的数据格式是numpy,添加一个numpy转为Tensor的函数即可
import torchvision.transforms as T
arg = normal_transforms(image=image,mask=mask)
image = arg['image']
mask = arg['mask']
img_tensor = T.ToTensor()(image)
print(type(image),type(img_tensor))
<class 'numpy.ndarray'> <class 'torch.Tensor'>
albumentations 官网
官方文档:链接
Github: https://github.com/albumentations-team/albumentations