图像分割任务中的图像增强

对数据进行增强是一种常用的操作,用来生成更多的数据,提高模型的泛化能力,对图像数据增强的常用方法有:弹性形变、旋转、加入噪声等。在图像分割任务中,除了需要对图像进行变换外,还需要对segmentation map 进行相同的处理。下面为一个简单的基本流程。

需要的包,imgaug用来对图像进行一系列变换,imageio用来读取和存储图片

import imgaug as ia
import imgaug.augmenters as iaa
from imgaug.augmentables.segmaps import SegmentationMapsOnImage
import imageio
import numpy as np

首先加载图片和分割图

image=imageio.imread('image.jpg') # (256,256,3)
segmap=np.loadtxt('segmap.numpy', dtype=np.int32) # (256, 256)
ia.imshow(image)
ia.imshow(segmap)

在这里插入图片描述
在这里插入图片描述

将分割图实例化

segmentation= SegmentationMapsOnImage(segmap, shape=image.shape)

以下为其包括的主要方法

  • segmentation.get_arr() # 返回分割图(256,256)
  • segmentation.draw() # 只画分割图
ia.imshow(segmentation.draw()[0])

在这里插入图片描述

  • segmentation.draw_on_image(image) # 将分割图显示在原图上
ia.imshow(segmentation.draw_on_image(image, alpha=0.6)[0]) # alpha代表透明度,1则完全叠加,0则完全透明

在这里插入图片描述

对图像和分割图进行变换

有多种变换方式,只有对原图像进行了几何变换才会改变分割图,否则不改变

  • CoarseDropout:对图像进行随机区域丢失,它不会影响分割图
aug = iaa.CoarseDropout(0.06, size_percent=0.1)
im_aug, seg_aug = aug(image=image, segmentation_maps=segmentation)
ia.imshow(im_aug)
ia.imshow(seg_aug.get_arr())

在这里插入图片描述

  • ElasticTransformation:对图像进行弹性形变,会影响分割图
aug = iaa.ElasticTransformation(alpha=200, sigma=20)
im_aug, seg_aug = aug(image=image, segmentation_maps=segmentation)
ia.imshow(im_aug)
ia.imshow(seg_aug.get_arr())

在这里插入图片描述

  • Affine:对图像进行旋转,会影响分割图
aug = iaa.Affine(rotate=(-10, 10))
im_aug, seg_aug = aug(image=image, segmentation_maps=segmentation)
ia.imshow(im_aug)
ia.imshow(seg_aug.get_arr())

在这里插入图片描述

  • Fliplr:左右旋转图片,会影响分割图
aug = iaa.Fliplr()
im_aug, seg_aug = aug(image=image, segmentation_maps=segmentation)
ia.imshow(im_aug)
ia.imshow(seg_aug.get_arr())

在这里插入图片描述

  • Flipup:上下旋转图片,会影响特征特。

以上为一些常用的变换函数,其它函数自行查找。

还可以将变换定义为一个序列,则程序每次都执行序列中的操作,参数random_order表示是否将操作顺序打乱,False则顺序执行序列中的操作,False则随机打乱操作顺序后再执行。

seq = iaa.Sequential([
    iaa.Dropout([0.05, 0.2]),      # drop 5% or 20% of all pixels
    iaa.Sharpen((0.0, 1.0)),       # sharpen the image
    iaa.Affine(rotate=(-45, 45)),  # rotate by -45 to 45 degrees (affects segmaps)
    iaa.ElasticTransformation(alpha=50, sigma=5)  # apply water effect (affects segmaps)
], random_order=True)

更详细的介绍参考

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值