https://zhuanlan.zhihu.com/p/33493383
- Introduction
主要思想是用通过使用一个在大量已标记数据上训练过的模型在未标记数据上生成annotations,然后再将所有的annotations(已有的或者新生成的)对模型进行重新训练。作者将其思想同 G. Hinton, O. Vinyals, and J. Dean. 等人的Distilling the knowledge in a neural network. 的model distillation进行了对比
不同于Hinton等人从不同模型的预测中得出结论的思想,作者的方法则是通过对未标记数据的多种形式变换运用于同一个模型之上得出结论。
- Data Distillation
数据蒸馏主要包括4步:(1)首先在人工标记的数据上训练一个模型;(2)将(1)中训练好的模型运用到各种转变形式过后的未标记的数据;(3)将(2)中得到的未标记数据转变成它们通过模型获得的预测;(4)将人工标记数据和预测数据进行汇总之后,对模型进行训练。
1)multi-transform inference
比如,对输入图片进行multiple crops,或者对不同大小的图片进行检测之后汇总目标检测的结果
2) Generating labels on unlabeled data
很自然地,对于只存在一种形式的数据进行多个模型的训练和针对多种形式(将一种形式进行变换得到的多种数据)进行单个模型的训练,后者效果肯定更好。
在多种形式的未标记数据上生成标签的可行办法有:用平均分类概率进行标记,这种方法可能存在两个问题,一是最后得到的标签可能是一个概率向量,因此我们需要通过调整它的损失函数来适应这种情况的产生,二是对于输出空间结构化的问题而言,使用平均概率去处理要谨慎。
因此作者采用的方法是生成相同结构的hard labels以及在人工标记的数据中已经出现了的种类。
3) Knowledge distillation
从这一步开始,就采用一个新的模型(可以和之前的模型一样也可以不一样)在之前的人工数据以及被预测的数据的集合上进行训练了,我们把这个模型叫做student model。在这一过程中,主要考虑了两点,首先是每一个mini-batch,既要包括人工标记的数据也要包括自动标记的数据,第二是,在现在数据量充足的情况下,我们必须延长训练时间来充分利用这些数据。
- Data Distillation for Key Point Detection
1) teacher 和 student model选择的是Mask R-CNN, Mask R-CNN的backbone选择的是 ResNet and ResNeXt with FPN
2) 数据变换选择的是几何变换,对于数据变换唯一的要求是最后的预测结果要适合ensemble。作者最后采取了两种常用的数据变换的方法:scaling和水平旋转。
3)在实验中,为了简化,作者只将多种形式变换数据的预测运用到了关键部位,比如头部,其他部位则都来自于没有进行过任何变换的数据。
4)选择预测的标准是,选用预测目标得分来代表对预测质量的估计,并且只针对那些大于预测目标得分阈值生成annotation。当每张未标记图片中平均标记物体大致等于已标记图片中的平均物体个数。
5)生成关键点的annotation,标准同4)中类似。
6)再训练中保持原始图片和新生成标签的图片的比例为6:4
- Experiments on Keypoint Detection
1)测试集为COCO数据集
2)数据分割为三部分,即COCO已标记数据集、COCO未标记数据集以及 Sports-1M static frames
3)主要结果,在三种情况下进行了data distillation实验,分别是:
a)小规模数据: co-35作为标记数据, co-80作为未标记数据
b)同分布的大规模数据: co-115作为标记数据, un-120作为未标记数据
c)不同分布的大规模数据:co-115作为标记数据, s1m-180作为未标记数据
接下来这张表展示了结果:
从表(1)的(a)中可以得出,如果所有训练数据都有标签,那么使用所有标签可以提升半监督学习的准确性。从第二行可以看出,现实世界中总有一些数据是未标记的,因此我们可以追求一个稍微低一点的准确率。除此之外,当数据集较大时,能从未标记数据中获得的信息就越少。
表(1)的(b)中比较的是 只在co-115同“同分布的大规模数据: co-115作为标记数据, un-120作为未标记数据“的情况,可以看出每个实验大概提升了1.7至2个百分点。作者同时提到近期另外一个实验中通过增加一半数据提升了大约3个百分点,因此他们的效果是promising的。
表(1)的(c)中比较的是只在co-115同“不同分布的大规模数据:co-115作为标记数据, s1m-180作为未标记数据“的情况,可以看出后面两张表的表现情况大致相同,因此作者认为他们的方法对于不同分布的数据具有稳健型。
下面这张图展示了第三个实验的具体表现情况:
- Ablation Experiments
1)迭代次数
从这张表的第一栏中可以看出,增加迭代次数的确可以在一定程度上提升效果,但是如果不增大数据量的话,可能导致模型倾向于过拟合。
从这张表的第二栏中可以看出,当使用作者的方法时,增加迭代次数提升效果的作用是肯定的。当数据量较小的时候全监督比数据蒸馏方法要好是可以理解的,因为同gt相比,预测的标签的准确性肯定是不能与之比较的,但是随后作者方法的优越性就显现了出来。
2)未标记数据的量
3)the impact of teacher quality
很自然,teacher model的AP越高,student model的AP自然也会更高。
4) test-time augmentation
将数据转换同样也实时运用到测试时,同样可以提升模型表现
- 目标检测实验
小规模数据上的表现情况不是很好,有待研究。
未标记数据在目标检测上的应用是在是....作者说很challenging.