在目标检测的实际应用场景中,我们经常会遇到类别增多的情况.
- 这时候我们是重新把源数据集中新类别进行标注重新训练模型?
- 还是只用新图片标注新类别,然后训练一个新类别的目标检测模型,在工作时候运行两个目标检测模型?
来自于商汤的一篇文章可能用于解决这个问题:
Cross-dataset Training for Class Increasing Object Detection
文中提出了 跨数据集的训练方法,用于合并多个数据集之间的训练;
如文章中采用coco 2017目标检测数据集、WIDER FACE人脸数据集进行联合训练,一个检测模型的情况同时能对coco的80类和人脸进行检测,然而精度只丢失1%左右.
整体框架如图所示:
跨数据集训练pipeline
- label mapping 合并重复标签
- 通过串联标签,形成混合数据集(但是不需要重新标注)
- 建立 avoidance relationship across(记录某个标签来源于哪个数据集)
- 根据avoidance relationship across计算loss,作者称之为dataset-aware classification loss
label-mapping
如图所示,
假如我们有两个数据集,其标签分别为 、 ,其中标签具有相同含义,那么在新标签中,将其映射为同一个标签
dataset-aware classification loss
文中采用focal loss 作为classification loss.然而,针对不同数据集的的正负样本可能会发生冲突,如wide face 数据集中的人脸样本可能在coco数据集中可能被误判为负样本,这样会降低检测器的性能.
因此作者改进了原始的focal loss,将其适用于多数据集联合训练上.
原始的focal loss 示意为:
其中为ground truth class label.为估计概率.
而作者改写的dataset-aware classification loss很简单,则修改了!=1时的定义,!=1在单数据集训练中代表了其为负样本,但是在多数据集联合训练中,它有可能代表了其是其他数据集中正样本,所以其应该为1;
所以修改后的 dataset-aware focal loss为:
总结
作者通过提出两点来解决多数据集联合训练问题:
- label mapping
- dataset-aware focal loss
其idea主要是将focal loss 用来解决正负样本不均衡问题应用到不同数据集中关于不用label的样本问题上.
reference
- Yao Y, Wang Y, Guo Y, et al. Cross-dataset Training for Class Increasing Object Detection[J]. arXiv preprint arXiv:2001.04621, 2020.