ImgAug图像增强
总结下imgaug数据增强常用的方法及增强的结果!
测试图片来源于网络
资料参考:https://blog.csdn.net/fenglepeng/article/details/116998236
镜像
水平镜像
iaa.Fliplr(0.5), # 对50%的图像进行镜像翻转
上下镜像
iaa.Flipud(0.2), # 对20%的图像做上下翻转
随机裁剪
# 对随机的一部分图像做crop操作
# crop的幅度为0到10%
iaa.Crop(percent=(0, 0.1))
仿射变换
缩放图像
# 图像缩放为80%到120%之间
scale={"x": (0.8, 1.2), "y": (0.8, 1.2)},
平移图像
# 平移±20%之间
translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)},
旋转图像
# 旋转±45度之间
rotate=(-45, 45),
剪切图像
# 剪切变换±16度,(矩形变平行四边形)
shear=(-16, 16),
超像素增强
sometimes(
iaa.Superpixels(
p_replace=(0, 1.0),
n_segments=(20, 200)
)
),
图像模糊
# 用高斯模糊,均值模糊,中值模糊中的一种增强。
iaa.OneOf([
iaa.GaussianBlur((0, 3.0)),
iaa.AverageBlur(k=(2, 7)), # 核大小2~7之间,k=((5, 7), (1, 3))时,核高度5~7,宽度1~3
iaa.MedianBlur(k=(3, 11)),
]),
图像锐化
iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)),
浮雕效果
iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)),
边缘检测
# 边缘检测,将检测到的赋值0或者255然后叠在原图上
sometimes(iaa.OneOf([
iaa.EdgeDetect(alpha=(0, 0.7)),
iaa.DirectedEdgeDetect(alpha=(0, 0.7), direction=(0.0, 1.0)),
])),
高斯噪声
iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05 * 255), per_channel=0.5),
Dropout&CoarseDropout
# 将1%到10%的像素设置为黑色
# 或者将3%到15%的像素用原图大小2%到5%的黑色方块覆盖
iaa.OneOf([
iaa.Dropout((0.01, 0.1), per_channel=0.5),
iaa.CoarseDropout(
(0.03, 0.15), size_percent=(0.02, 0.05),
per_channel=0.2
),
]),
图像反转
# 5%的概率反转像素的强度,即原来的强度为v那么现在的就是255-v
iaa.Invert(0.05, per_channel=True),
像素值随机加减
# 每个像素随机加减-10到10之间的数
iaa.Add((-10, 10), per_channel=0.5),
像素值随机乘法
# 像素乘上0.5或者1.5之间的数字.
iaa.Multiply((0.5, 1.5), per_channel=0.5),
对比度调整
# 将整个图像的对比度变为原来的一半或者二倍
iaa.ContrastNormalization((0.5, 2.0), per_channel=0.5),
Grayscale
# 将RGB变成灰度图然后乘alpha加在原图上
iaa.Grayscale(alpha=(0.0, 1.0)),
像素移动
# 把像素移动到周围的地方。这个方法在mnist数据集增强中有见到
sometimes(iaa.ElasticTransformation(alpha=(0.5, 3.5), sigma=0.25)),
图像局部区域扭曲
sometimes(iaa.PiecewiseAffine(scale=(0.01, 0.05))),
调整色度
iaa.AddToHue((-60, 60))
学习永远在路上!