一、相关概念
不同的图像任务中,数据增强的方式也有所不同。 相比于图像分类,目标检测中的数据增强需要同时考虑图像和边界框的变换。
在目标检测中,数据增强又分为两个大类: 针对图像中的像素,针对整幅图像。
- 解释:
主要是改变原图像中像素的值,而不改变图像目标的形状和图像的大小。
经过处理后,图像的饱和度、亮度、明度、颜色通道、颜色空间等会发生发生变化。这类变换不会改变原图中的标注信息,即边界框和类别。 - 方式:
- 随机改变图像亮度:RandomBrightness
- 随机改变对比度、色度、饱和度:PhotometricDistort
- 对比度:RandomContrast
- 色度:RandomHue
- 饱和度:RandomSaturation
-
随机改变颜色通道:RandomLightingNoise
-
解释:
针对图像的像素增强不仅需要改变图像本身,还需要考虑标注信息的改变,这里主要指标注的边界框的改变。 - 方式:
- 随机缩放:Expand
- 随机裁剪:RandomSampleCrop
- 随机翻转:RandomMirror
二、数据增强方式
数据增强手段主要有:仿射变换、透视变换、色调变换等等
- 实现手段:
通过在 hsv 色彩空间中,对 h、s、v三个通道增加扰动,来进行色调增强变换 - 代码实现:
def augment_hsv(image, hgain=0.5, sgain=0.5, vgain=0.5):
"""
HSV color-space augmentation
:param image: 待增强的图片
:param hgain: HSV 中的 h 扰动系数,yolov5:0.015
:param sgain: HSV 中的 s 扰动系数,yolov5:0.7
:param vgain: HSV 中的 v 扰动系数,yolov5:0.4
:return:
"""
if hgain or sgain or vgain:
r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1
image_hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
hue, sat, val = cv2.split(image_hsv)
dtype = image.dtype
x = np.arange(0, 256, dtype=r.dtype)
lut_hue = ((x * r[0]) % 180).astype(dtype)
lut_sat = np.clip(x * r[1], 0, 255).astype(dtype)
lut_val = np.clip(x * r[2], 0, 255).astype(dtype)
hue = cv2.LUT(hue, lut_hue)
sat = cv2.LUT(sat, lut_sat)
val = cv2.LUT(val, lut_val)
image_hsv = cv2.merge((hue, sat, val)).astype(dtype)
image_dst = cv2.cvtColor(image_hsv, cv2.COLOR_HSV2BGR)
return image_dst
else:
return image
三、常见数据增强方式
1)随机旋转
随机旋转一般情况下是对输入图像随机旋转[0,360)
2)随机裁剪
随机裁剪是对输入图像随机切割掉一部分
3)色彩抖动
色彩抖动指的是在颜色空间如RGB中,每个通道随机抖动一定的程度。在实际的使用中,该方法不常用,在很多场景下反而会使实验结果变差
4)高斯噪声
是指在图像中随机加入少量的噪声。该方法对防止过拟合比较有效,这会让神经网络不能拟合输入图像的所有特征
5)水平翻转
6)竖直翻转
随机裁剪/随机旋转/水平反转/竖直反转都是为了增加图像的多样性。并且在某些算法中,如faster RCNN中,自带了图像的翻转。
三、经典算法
- 参考资料:https://zhuanlan.zhihu.com/p/313650981
- https://blog.csdn.net/LK007CX/article/details/106940453
-
https://blog.csdn.net/Q1u1NG/article/details/107362572
-
参考资料:https://blog.csdn.net/weixin_43593330/article/details/108174095
-
数据类型和坐标转换:
- 图片矩阵转化为 浮点型:ConvertFromInts
- 归一化坐标转为绝对化坐标:ToAbsoluteCoords 为下面的几何变换做准备
- 像素内容变换(Photometric Distortions):
- 随机改变图像亮度:RandomBrightness
- 随机改变对比度、色度、饱和度:PhotometricDistort
- 对比度:RandomContrast
- 色度:RandomHue
- 饱和度:RandomSaturation
- 随机改变颜色通道:RandomLightingNoise
- 空间几何变换(Geometric Distortions):
- 随机缩放:Expand
- 随机裁剪:RandomSampleCrop
- 随机翻转:RandomMirror
- 坐标转换、缩放及减均值:
- 绝对化坐标转为归一化坐标:ToPercentCoords
- 缩放:Resize(300*300),因为几何变换后图像尺寸改变了
- 减均值:SubtractMeans(104, 117, 123)
本文介绍了两类在目标检测中常使用的数据增强的方法,包括 基于像素值 的增强方法和 基于整幅图像 的增强方法。
其中,在基于像素值的增强方法中,要注意对 颜色通道 的转换;在基于整幅图像的增强方法中,要注意对标注 边界框 施以同样的变化。
- 参考资料:https://blog.csdn.net/mao_hui_fei/article/details/90542891
四、总结
参考文献
Original: https://blog.csdn.net/pentiumCM/article/details/119180346
Author: pentiumCM
Title: CV — 目标检测:数据增强
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/686356/
转载文章受原作者版权保护。转载请注明原作者出处!