图像识别中的数据增强
深度学习方法论回顾
玩深度学习的人都知道,AI算法大部分是数据驱动。数据的质量一定程度上决定了模型的好坏。
图像识别基础网络结构的训练参数都是特别大。
训练一个效果较优,泛化性较强的模型一般会有两个步骤:
使用ImageNet数据做模型预训练。其中ImageNet有1000w+
使用类似Coco / Voc的中小型数据集做fine tune,其中数据量级在 1w张数据左右。
通过“feed”大量的数据,才能让模型的参数充分调整。才能根据数据的分布找到分割的超平面。
如此同时,随着图像识别任务的不同,人工标注的内容也不一样,同时人工标注的成本也非常高,这时候我们不禁去想,能不能根据少量的数据去构造更多的数据,来减少人工标注的成本。因此引出了图像增强的方法
以交通车辆识别为例,我们需要标注道路上的车辆,如下图
数据增强
数据增强作用
我们希望模型拥有泛化性,所谓泛化性就是满足以下几种不变性
平移不变性:Translation Invariance
旋转不变性:Rotation Invariance
尺度不变性:scale Invariance
光照不变性:Illumination Invariance
简单的来说就是 一只猫无论是正面还是反面,都应该识别成猫。
而在我们的数据集中,我们只有正面的猫的数据,对于平移 / 旋转等方面的数据一般都是比较少的,那这时候就会导致模型无法识别翻转后的猫
当我们把经过多次数据增强输入模型进行训练的时候,则
减少模型过拟合程度
提高模型泛化性
进一步提高数据数量和质量
常规方法
常规方法如:
A. 位置发生改变,1为原图,2为位置翻转,3为旋转45°
B 位置未改变,但色彩发生变化
C. 混合使用,位置和色彩都发生改变
小目标数据增强
小目标检测中,由于正负样本有anchor - IOU规则选取出来的,而小目标的面积过少会导致正负样本失衡以及小目标的特征没有被充分提取到,解决办法就是增加小目标的样本量。
检测图片中的网球和飞盘,由于目标过小很容易被忽略。所以我们会把根据网球的检测框COPY出来,贴到图片中的其他位置,来增加小目标的样本量。
图像拼接
马赛克(Mosaic)图像预处理技术,使用 4 张图片,对其进行随机裁剪和缩放旋转等操作,最后合成 1 张图像,丰富了检测物体的背景。
其算法流程如下图所示。
首先构建一张用灰色(114, 114, 114)填充的底图,尺寸为特征图的二倍(2S);
然后在底图中随机设置一点 X,通过一定规则选择四张训练图像以 X 点的坐标为分界线,随机缩放后排布到底图中,并裁剪掉超出底图范围的图像;
最后利用标签的映射关系,将原图的标签信息映射到新生成的马赛克图像中。
马赛克的操作原理相当于在训练过程中一次性传入四张图像进行学习,增加单次训练样本数量及目标多样性,提升网络训练收敛速度以及检测精确度,并且把大样本随机缩减成了小样本,增加了小尺度目标的数量
总结
在日常应用中,我们会使用基础方法 搭配图像拼接一起来做数据增强。对于特定场景增加对应的数据增强操作。虽然数据增强能有效的提高模型的泛化性。
但在下面两种情况下使用过多的数据增强不能使得模型变好
数据本身很少,假如只有100张,经过数据增强把训练数据增加到 1w张图片
模型本身很小,不足以支撑复杂的数据,这时候尽可能使用干净简单的数据