一 业务需求
在图像检测项目中,有些采集的图片数据与天气或季节变换有关,但由于一些限制条件,无法采集到全年的图片数据,所以需要通过现有的数据,比如只采集到第一季度的图片,对图片进行数据增强。假设现在的少量图片,检测目标在labelimg软件中已经标记出来,生成了xml文件。通过观察,目标特征在颜色上有很明显特征,比如多数为蓝色和红色。因为天气和季节的变换,全年采集到的图片,其特征的颜色深度和亮度应该有所不同,是否可以通过改变特征颜色的深度和亮度来进行数据增强呢?
二 解决思路
1 网上借鉴
现在网上很流行的数据增强的函数包是imgaug,里面所讲的都是对整张图片的数据增强,没有对目标特征的数据增强,而这个项目中对这方面有需求,所以自己写了一个关于局部(针对目标特征)的颜色变换方式的数据增强代码。
2 方法分析
2.1 步骤一
根据已标记的特征图片及对应的xml文件,提取出每张图片的标记特征个数、特征位置、特征像素矩阵。
2.2 步骤二
通过颜色提取特征主要的根据HSV这个颜色空间提取,所以在网上查阅蓝色和红色的HSV范围,如下图所示:
2.3 步骤三
通过蓝色的HSV范围,判断步骤一中标记特征的每个像素点的HSV是否在蓝色范围内,如果在,则可以更换成不同蓝色的HSV值,对每张图片的所有标记特征进行如此判断,在蓝色范围内的,统一批量更换成另几种蓝色的HSV值。比如,现在有100张图片,想要更换10种不同的蓝色,那就可以重新生成100x10=1000张图片。
2.4 步骤四
对应的xml文件只需要更换文件名称就行了,因为标记特征的位置都是没有变化的。对红色的标记特征也做同样的处理,这样又可以生成很多不同红色的标记特征的图片。