Albumentations:医学图像数据增强方式

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 使用

图像增强的目标

Albumentations:医学图像数据增强方式_第1张图片

图像增强

  • 前期准备
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)

Albumentations:医学图像数据增强方式_第2张图片

  • 水平翻转、垂直翻转
image1 = A.VerticalFlip(p=1.0)(image=image)['image']
image2 = A.HorizontalFlip(p=1.)(image=image)['image']
show(image1, image2)

Albumentations:医学图像数据增强方式_第3张图片

  • 自适应直方图均衡、锐化输入图像
image1 = A.CLAHE(p=1.0)(image=image)['image']
image2 = A.Sharpen(p=1.)(image=image)['image']
show(image1, image2)

Albumentations:医学图像数据增强方式_第4张图片

  • 添加噪声
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)

Albumentations:医学图像数据增强方式_第5张图片

  • 改变图像的亮度、对比度和饱和度
image1 = A.ColorJitter(p=1.0)(image=image)['image']
image2 = A.HueSaturationValue(p=1.)(image=image)['image']
show(image1, image2)

Albumentations:医学图像数据增强方式_第6张图片

  • 组合和选择
    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)

Albumentations:医学图像数据增强方式_第7张图片

  • 增强方法和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

你可能感兴趣的:(图像分割,数据增强,python,图像处理,matplotlib)