- Published on
使用Albumentations进行图片数据增强
- Authors
- Name
- Pony Ma
介绍
什么是数据增强
数据增强是指在训练模型时,对数据进行一些变换,从而扩充数据集的大小,增加模型的泛化能力,防止模型过拟合。 图片数据增强就是从一个现有图像中创造新的训练样本的过程。为了创造新的训练样本,我们可以对现有图像进行一些变换,比如旋转、翻转、缩放、裁剪、平移、添加噪声等等。
Albumentations库
当你需要对图片进行数据增强时,可以使用Albumentations库,它是一个快速且灵活的图像增强库,可以用于计算机视觉、医学影像、卫星图像和遥感图像等领域。
Albumentations库支持多种数据增强方法,包括:
- AdvancedBlur 高级模糊
使用具有随机选择的参数的广义正态滤波器来模糊输入图像。 该变换还在卷积之前向生成的内核添加了乘性噪声。
- Blur 模糊
使用随机大小的内核模糊输入图像。
- CLAHE 对比度受限的自适应直方图均衡化
将对比度受限自适应直方图均衡应用于输入图像。
- CenterCrop 中心裁剪
从输入图像的中心裁剪一块区域。
- ChannelDropout 通道丢失
随机丢弃输入图像的通道。
- ChannelShuffle 通道随机重排
随机重排输入图像的通道。
- CoarseDropout 粗糙丢失
随机丢弃输入图像的正方形区域。
- ColorJitter 颜色抖动
随机改变输入图像的亮度、对比度和饱和度。
- Crop 裁剪
从输入图像的随机位置裁剪一块区域。
- Defocus 散焦
应用散焦变化,模拟焦距不正确的图像。https://arxiv.org/abs/1903.12261.
- Downsacle 缩小减低图片质量
通过缩小和放大来降低图像质量。
- ElasticTransform 弹性变形
图像的弹性变形
- Equalize 浮雕
对输入图像进行浮雕并将结果与原始图像叠加。
- FancyPCA FancyPCA
对输入图像应用FancyPCA变换。from Krizhevsky's paper "ImageNet Classification with Deep Convolutional Neural Networks"
- Flip 翻转
随机翻转输入图像的水平、垂直或两个方向。
- GaussianBlur 高斯模糊
使用具有随机内核大小的高斯滤波器模糊输入图像。
- GaussNoise 高斯噪声
向输入图像添加高斯噪声。
- GlassBlur 玻璃模糊
模拟玻璃的模糊效果。
- GridDistortion 网格扭曲
对输入图像应用网格扭曲变换。
- HorizontalFlip 水平翻转
随机水平翻转输入图像。
- HueSaturationValue 色调饱和度值
随机改变输入图像的色调、饱和度和值。
- ImageCompression 图像压缩
随机压缩输入图像的质量。
- InvertImg 反转
反转输入图像的通道。
- ISONoise ISO噪声
向输入图像添加ISO噪声。
- JpegCompression JPEG压缩
随机压缩输入图像的质量。
- LongestMaxSize 最长最大尺寸
将输入图像的最长边调整为给定的值,保持纵横比。
- MedianBlur 中值模糊
使用具有随机内核大小的中值滤波器模糊输入图像。
- MotionBlur 运动模糊
使用具有随机内核大小和方向的运动模糊模糊输入图像。
- MultiplicativeNoise 乘性噪声 向输入图像添加乘性噪声。
- OpticalDistortion 光学扭曲
对输入图像应用光学扭曲变换。
- PadifNeeded 必要时填充
如果图像的任何边小于给定的高度或宽度,则在图像的任何边缺少的长度上填充图像。
- Perspective 透视
对输入图像应用透视变换。
- PiecewiseAffine 分段仿射
对输入图像应用分段仿射变换。
- PixelDropout 像素丢失
随机丢弃输入图像的像素。
- Posterize 色调分离
将输入图像的色调分离为给定的位数。
- RandomBrightness 随机亮度
随机改变输入图像的亮度。
- RandomBrightnessContrast 随机亮度对比度
随机改变输入图像的亮度和对比度。
- RandomContrast 随机对比度
随机改变输入图像的对比度。
- RandomCrop 随机裁剪
从输入图像的随机位置裁剪一块区域。
- RandomCropFromBorders 从边界随机裁剪
从输入图像的随机位置裁剪一块区域,但不会从图像的边界裁剪。
- RandomFog 随机雾
随机向输入图像添加雾。
- RandomGamma 随机伽马
随机改变输入图像的伽马。
- RandomGridShuffle 随机网格洗牌
随机将输入图像的像素重新排列为网格。
- RandomRain 随机雨
随机向输入图像添加雨。
- RandomResizeCrop 随机调整大小裁剪
随机裁剪输入图像的一部分,然后将其调整为给定的大小。
- RandomRotate90 随机旋转90度
随机旋转输入图像90度。
- RandomScale 随机缩放
随机缩放输入图像。
- RandomSizedCrop 随机尺寸裁剪
从输入图像的随机位置裁剪一块区域,然后将其调整为给定的大小。
- RandomSnow 随机雪
随机向输入图像添加雪。
- RandomToneCurve 随机色调曲线
随机应用色调曲线变换。
- Resize 调整大小
调整输入图像的大小。
- RGBShift RGB偏移
随机改变输入图像的R、G、B通道。
- RingingOvershoot 振铃过冲
通过将图像与 2D sinc 滤波器进行卷积来创建振铃或过冲伪影。
- Rotate 旋转
将输入旋转从均匀分布中随机选择的角度。
- SafeRotate 安全旋转
从均匀分布中随机选择一个角度,将输入图像在输入框内旋转。
- Sharpen 锐化
锐化输入图像并将结果与原始图像叠加。
- ShiftScaleRotate 平移缩放旋转
随机平移、缩放和旋转输入图像。
- SmallestMaxSize 最小最大尺寸
将输入图像的最小边调整为给定的值,保持纵横比。
- Solarize 曝光
反转高于阈值的所有像素值。
- Spatter 溅射
模拟溅射效果。
- Superpixels 超像素
将图像部分/完全转换为其超像素表示。
- ToGray 转灰度
将输入图像转换为灰度。
- ToSepia 转棕褐色
将输入图像转换为棕褐色。
- Transpose 转置
转置输入图像。
- UnsharpMask 锐化蒙版
使用USM锐化处理锐化输入图像,并将结果与原始图像叠加。
- VerticalFlip 垂直翻转
随机垂直翻转输入图像。
- ZoomBlur 缩放模糊
使用具有随机内核大小和中心的缩放模糊模糊输入图像。
安装
pip install albumentations
使用
基础用法
import albumentations as A
import cv2
image = cv2.imread("image.jpg")
transform = A.Compose([
A.RandomBrightnessContrast(p=0.2),
])
transformed = transform(image=image)
transformed_image = transformed["image"]
OneOf
从一组增强方法中随机选择一个方法
import albumentations as A
import cv2
image = cv2.imread("image.jpg")
transform = A.Compose([
A.RandomBrightnessContrast(p=0.2),
A.OneOf([
A.Blur(blur_limit=3, p=0.5),
A.ColorJitter(p=0.5),
], p=1),
])
transformed = transform(image=image)
transformed_image = transformed["image"]
SomeOf
从一组增强方法中随机选择n个方法
import albumentations as A
import cv2
image = cv2.imread("image.jpg")
transform = A.Compose([
A.RandomBrightnessContrast(p=0.2),
A.SomeOf([
A.Blur(blur_limit=3, p=0.5),
A.ColorJitter(p=0.5),
A.RandomContrast(p=0.5),
A.RandomGamma(p=0.5),
], n=2, p=1),
])
transformed = transform(image=image)
transformed_image = transformed["image"]