paper:Large-Scale Object Detection in the Wild from Imbalanced Multi-Labels
这篇文章用的数据集是谷歌发布的 Open image dataset,它包含1.7m image 共 12.4m 个boxes 有 500 个类别。它主要是机器打标,然后人力修改,所以单个框的质量不高。(最近已经有了open image v4,更多了)
摘要:
Open Image主要是半监督的标注,所以有很大的提升空间。(感觉这么大的数据集用不上,只有工业界才能大力出奇迹了)这个数据集有label-related problems:同一个目标可能显式地或者隐式的具有多个标签,且非常不平衡。
这篇文章concurrent softmax去解决多标签问题,并使用soft sampling和hybrid training scheduler 解决标签不平衡问题。
什么是multiple labels?
以这个图为例,图a和b都是多标签,同一个物体被打上了多个正确的标签,标签之间的关系可能是并列的(a),也可能是树形关系的从属(b)。图c和d是隐式的多标签,c将苹果只打标成了水果,d手电筒被随机打标成手电筒或者火炬。
相关工作:
Multi label Recognition
一种做法是将多标签转成多个二分类的组合,但是这样忽略了标签之间的关系;
有人用图结构试图保留这种标签之间的关系;
或者使用基于排名的学习策略,并重新衡量不同品牌的损失,以获得更好的准确度;
[34]提出了一种CNN-RNN框架,将标签嵌入到隐空间中,捕捉标签之间的相关性;
更详细的可以参考原文的reference。
针对Open Image提出的问题:
- 显示多标签
- 隐式多标签
- 标签不平衡
具体的表述,前面的图已经解释过了。
方法:
Concurrent softmax
首先是改softmax,softmax会提高一个类压制另一个类,但是对于多标签问题,这显然是错误的优化方向。如果一个bbox是苹果,那么不应该压制标签为水果的概率。
这是基本的交叉熵,重点是 的计算。
那么concurrent soft max呢?
主要是分母的变化,对于j=i,e不变;j≠i,乘两个系数。其中 y 是当前bbox对应的类别j,r_ij是类别i和类别j之间的相关系数。这样,有r的调节,对于某些相关性高的激活输出就不会被压制。
1-y 解决了显示多标签的问题,r 解决了隐式多标签的问题。
Soft-balance Sampling with Hybrid Training
这个是如何解决label 的 unbalance,也是我关注的重点。
两种采样方式:
1)随机采样,每一个样本被采样的概率是:
2)按类采样,每一个样本被采样的概率是:
Soft-balance sampling
,用Pn表示随机抽样的近似;
用λ来平衡两者:
这样就是soft balance sample,怎么觉得和之前看的有点像呢?
Training
先用正常训练一些epoch,然后用soft balance sample fine tune几个epoch。
实验结果
Res50 FPN backbone:
首先是 Co BCE Loss 有效
然后 Soft balance sampling 有效
怎么取 λ 的值
Pretrain的模型不同会有多少提升?