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

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值