我一直在尝试使用深度学习框架对图像检测进行数据增强。
我在 Python 中使用 Opencv3.3。
我的框架是:
- 将 BGR 转换为 HSV
- 图像转换,如(旋转、缩放、剪切、平移)
- 将 HSV 转换为 BGR
原始图像是第一个图像,结果如下。
看到下面,红色瓶子上有一些污渍。
我确实在 [-10, 10] 内随机采样色调,在 [-80, 80] 内进行饱和度,在 [-40, 40] 内进行值。
此外,在这个链接之后,我将我的代码设置为这样。
class RandomHSV(object):
def __init__(self, hue = None, saturation = None, brightness = None):
if hue:
self.hue = hue
else:
self.hue = 0
if saturation:
self.saturation = saturation
else:
self.saturation = 0
if brightness:
self.brightness = brightness
else:
self.brightness = 0
if type(self.hue) != tuple:
self.hue = (-self.hue, self.hue)
if type(self.saturation) != tuple:
self.saturation = (-self.saturation, self.saturation)
if type(brightness) != tuple:
self.brightness = (-self.brightness, self.brightness)
def __call__(self, img, bboxes):
hue = random.randint(*self.hue)
saturation = random.randint(*self.saturation)
brightness = random.randint(*self.brightness)
img = img.astype(int)
a = np.array([hue, saturation, brightness]).astype(int)
img += np.reshape(a, (1,1,3))
img = np.clip(img, 0, 255)
img[:,:,0] = np.clip(img[:,:,0],0, 179)
img = img.astype(np.uint8)
return img, bboxes