本文主要介绍语义分割中的数据增广方法,使用了OpenCV和albumentations两个库完成具体的数据增广操作。
1、常见的数据增广方法
对于语义分割而言,数据增广方法回改变图像的标签,因为在改变图片时,对应的像素会发生变化,导致标签也会发生变化。
- 水平翻转
- 垂直翻转
- 旋转
- 随机缩放(极其重要)
- cutout
2、albumentations数据扩增
albumentations是基于OpenCV的快速训练数据增强库,拥有非常简单且强大的可以用于多种任务(分割、检测)的接口,易于定制且添加其他框架非常方便。
albumentations 可以与深度学习框架Pytorch配合使用,使用起来更加方便。
import albumentations as A
import cv2
# Declare an augmentation pipeline
transform = A.Compose(
A.VerticalFlip(p=0.5), #随机垂直翻转
A.HorizontalFlip(p=0.5), # 随机水平翻转
A.RandomRotate90(p=0.5), # 随机旋转90度
A.Transpose(p=0.5), # 随机交换行和列
A.RandomCrop(width=256, height=256),
A.RandomBrightnessContrast(p=0.2),
])
# Read an image with OpenCV and convert it to the RGB colorspace
image = cv2.imread("image.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Augment an image
transformed = transform(image=image)
transformed_image = transformed["image"]
下图为效果图。