作者:Changsin Lee 翻译:Happy 链接:Changsin Lee@Medium
不知你有没有想过:训练一个检测器至少需要多少图像?又该如何处理数据不平衡问题?
在这篇文章中,作者期望回答一下三个与目标检测训练数据相关的问题:
- 达成最大性能增益的最小数据集是多大?
- 如何处理类别不平衡问题?
- 采用新数据更新预训练模型的最佳姿势是哪个?
第一个问题的重要性并未得到足够的重视。一般来讲,预处理(数据收集、数据清洗、数据标注)占据了一个AI算法的至少80%时间。因此,我们希望以最小的投入获取最大的回报。
第二个问题对于任何实际AI项目来说都是一个常见问题:常见数据可以轻易得到一个好的性能,而不常见数据却很难得到好的性能。过采样与欠采样是解决类别不平衡常见的两种策略。
对与训练模型进行微调变得越来越重要,这是因为:一个AI模型无法满足所有应用场景,我们需要频繁的对其微调以适配新的数据(即跨域微调)。
接下来,作者将以YOLOv5 Korean Sidewalkd数据回答上述问题。
1YOLOv5
目标检测旨在对图像或视频中的实例进行定位与识别,即回答where与what这两个问题。在上图中,我们可以看到已标注bbox与label信息的行人、车辆、板凳。
为获得上述反馈,目标检测器需要定位目标在哪并识别它属于哪个类别,前者对应目标定位,后者对应目标分类。
为训练一个目标检测模型,我们需要准备一个包含图像以及对应目标位置 标签标注的数据集。然而,构建这样一个数据集非常耗时,幸运的是,已有许多公开数据集,COCO则是目标检测领域最常用数据集,它包含80个类别。
YOLO是目标检测领域应用最广泛的检测器(没有之一),YOLOv5更是因为高效率、易部署、易扩展等受到诸多从业人员的追捧。基于YOLOv5而引申出了不少知名的检测器,如YOLOv5-lite就是其中佼佼者。
在后续文章中,我们以YOLOv5s为基础,除batch(16)与epoch(100)外,其他超参均为默认参数。
2Korean Sidewalk
该数据集包含670000 带标注信息的图像,其中有约352810带有bbox标注信息,故我们采用这部分用于模型训练,下图给出了该部分数据的分布以及类别信息。注:我们仅采用了top15类用于训练与测试。
关于该数据集有几个比较重要的信息:
- 类别不平衡:该数据集存在严重类别不平衡问题,top5占据了70%左右,top15占据了90 %,最常见的类别car在整个数据集中的比例高达24%(可参考上图)。
- 同一图像存在多实例:在每个图像中,存在多个同类别目标。比如,每个图像中包含3-4个car目标(这个很容易理解,因为数据就是人行道拍摄图像)。
- De-identified:人行道图像包含一些私人信息,如人脸、车牌。为保护信息,这个带有私人信息的图像在标注与发布之前进行了特殊处理,可参考下图的车牌。
该数据集的上述三个特性在实际AI算法研发过程中非常常见。因此,基于该数据集,让我们来对文章开头提到的几个问题进行探究吧。
3Minimum Dataset Size
按照《How many images do I need》一文所提到:影响模型性能的数据量的拐点在每个类别包含150-500张图像,即在该拐点之前,数据量的提升对模型性能影响非常显著,超过该拐点后性能增益趋于平稳。
为复现该实验并比较不同类别的性能增益,作者将数据集划分为以下三类:
- Top5:car、person、tree、pole、bollard
- Top10:traffic_sign、traffic_light、truck、moveable_ginage、potted_plant
- Top15:motor_cycle、bicycle、bus、chair、bench
上图给出了上述三类与整体性能伴随数据量增加的性能曲线,从中可以看到:
- Top5的性能拐点在300左右,这是因为每个图像中有多个实例;
- 150-500看起来是影响检测性能的一个比较可靠的拐点;
- Top15的性能同样服从类似的趋势,但因为存在低频目标导致拐点更出现的更晚。
4Countering the Class Imbalance
在上面的实验中,Top5迅速取得了非常的性能,但Top10与Top15紧随其后,但当每个类别的数量达到1000后期性能仍弱于Top5。显而易见,数据量少是主要原因。
前面也提到:过采样与欠采样是两种常见策略。由于该数据集存在严重不平衡,因此,我们同时进行低频目标数据进行过采样与高频目标数据欠采样。
上图给出了重采样前后数据量对比。由于数据的特性问题,完全平衡的数据集是不可获取的。比如,当对bus或motercycle进行采样时,我们不得不也对car进行处理。
上图给出了采样前后模型的性能对比。当然,性能增益不能只看数值。低频类别增多就意味着高频类别减少。可能低频类别的性能提升了,而高频类别的性能变差了很多。那么,我们该如何知道这是不是真的呢?
加权平均是一种非常好的技术,因此,我们对所得mAP进行加权平均。采样前后的性能对比见上图:很明显,重采样的性能增益仍有,但不会那么剧烈。
从该实验中,我们 可以学到:当进行模型训练时,你需要有一个合理的采样策略以及一个合理的度量准则。
5How to Update the Model
当把模型进行应用时,它可能面临不听的类别分布,甚至存在未训练的类别。为此,我们需要采用新数据集进行模型更新。在对模型进行更新时,有两种不同的策略:
- 仅使用新数据;
- 采用新 旧数据组合。
从上图可以看到:无论是随机采样还是重采样,组合数据均提供了更佳的结果。
与此同时,我们需要回答另一个新问题:从头开始训练 与 迁移学习哪种的性能更佳呢?从上图可以看到:两种训练策略并无明显差异。仅有的区别在于迁移学习具有更好的早期收敛性能。因此,当新数据很少时,迁移学习可以节省更多时间。
6Conclusion
从上述实验中我们学到了以下三点:
- 用于训练的最少图像数据量在150-500;
- 采用过采样与欠采样补偿类别不平衡问题,但需要对重平衡的数据分布非常谨慎;
- 模型的更新建议在新 旧组合数据集上进行迁移学习。