计算机视觉研究院专栏
作者:Edison_G
一个简单、渐进、但必须知道的基线:用于Vision Transformer的自监督学习。尽管标准卷积网络的训练方法已经非常成熟且鲁棒,然而ViT的训练方案仍有待于构建,特别是自监督场景下的训练极具挑战。
1
背景
在今天分享恺明团队新推出的自监督学习+Transformer=MoCoV3之前,我想和大家分享下最近我看到一篇目标检测文章,最近因为一直推送目标检测类的,觉得这篇是个不错的idea。
什么是开放世界中的目标检测呢?
A model is tasked to:
- 在没有明确的监督下,能够将没有见过的目标识别为“未知”类;
- 对于这些认定为“未知”的类,当逐步获得对应的标签之后,能够渐进地学习它们,且不遗忘以前学过的那些类别。
这个与以前提出的Open Set和Open World image classification的最大不同在于:在目标检测器的训练过程中,将那些未知的目标当做背景。
深度学习加快了目标检测的研究进展,但目前现有方法都在一个强假设下进行:所有要被检测的种类都需要在训练阶段提供。当我们放宽这一假设,就会出现两个具有挑战性的问题:
- 测试图像可能包含未知类的目标,这些未知目标也需要被归类;
- 当被识别为未知类别的标签已经可用时,模型需要进一步学习新的类别。
2
检测框架
论文:https://arxiv.org/pdf/2103.02603.pdf
代码:https://github.com/JosephKJ/OWOD
第一行:在每个增量学习步骤中,模型识别未知对象(用“?”表示),这些对象被逐步标记(蓝色圆圈)并添加到现有知识库(绿色圆圈)中。
第二行:开放世界目标检测模型使用基于能量的分类头和未知感知RPN识别潜在的未知对象。此外,在特征空间中执行对比学习来学习判别集群,并且可以以连续的方式灵活地添加新类而不会忘记以前的类。
对比聚类
在隐藏层特征空间上类的区分性将是实现类别分离的理想特征。采用对比性聚类就是为了强制性的达到上图第二行中间图的效果,类内差尽量小,而类间差尽量大。每个已知类别会维护一个向量是检测器中间层生成的特征向量,假设已知类别数为,则特征向量表征为,其中代表未知类的特征向量。然后再建立一个用来存储训练过程中的临时特征向量,每个类的特征向量存在其对应位置。
最后在常规损失函数上再叠加一个对比聚类损失来达到强制降低类内差,增大类间差的效果。原文中该部分的流程图如下,其中是不叠加对比聚类损失的轮数,用以初始化已知类别的特征向量,表示,在迭代轮数大于后,每轮都计算对比聚类的损失,并每轮进行一次特征向量更新(有点像混合高斯背景建模了):
基于RPN自动标记机制
框架的核心就是利用RPN的建议框类别无关特性,将RPN提取的置信度最高的前K个背景建议框作为位置对象的建议框位置向后传递。
基于能量的分类头
首先是基于前面提到的对比聚类将不同类别的特征表征尽量的拉开了,研究者选择对不同类别的概率密度函数进行建模,作为不同类别的区分,作者用图进行了说明。
如上所示,已知和未知数据点的能量值表现出明显的分离。研究者在每个样本上拟合Weibull分布,并使用这些分布来识别未知的已知和未知样本。
Alleviating Forgetting
在识别未知数之后,开放世界检测器的一个重要要求是能够学习新的类,当提供一些感兴趣的未知类的标记示例时。重要的是,在此阶段将不存在先前任务的训练数据,因为从头开始重新训练不是可行的解决方案。
仅使用新类实例进行训练将导致灾难性地遗忘之前的类。研究者注意到已经开发了许多涉及的方法来减轻这种遗忘,包括基于参数正则化的方法,示例重放(exemplar replay),动态扩展网络(dynamically expanding networks)和元学习。
3
检测效果分析
仅在任务 1 上训练的ORE在上图(a)中成功地将风筝定位为未知对象,而在任务3中了解风筝后,它逐渐学习检测上图(b)中的风筝和飞机。
在任务1上训练后来自ORE的预测。“大象”、“苹果”、“香蕉”、“斑马”和“长颈鹿”尚未引入模型,因此成功归类为“未知”。该方法将其中一只“长颈鹿”错误分类为“马”,显示了ORE的局限性。
有关对比聚类的更多详细信息
使用对比聚类来确保潜在空间分离的动机有两个:1)它使模型能够将未知实例与已知实例分开,从而促进未知识别;2)它确保每个类的实例与其他类很好地分离,缓解遗忘问题。
对比损失被添加到Faster R-CNN 损失中,整个网络被端到端的训练。因此,在 Faster R-CNN管道中RoI Head中的残差块之前和包括网络的所有部分都将使用来自对比聚类损失的梯度进行更新。
在学习任务1后,桌子顶部笔记本电脑旁边的几个项目被识别为未知。笔记本电脑、书和鼠标作为任务4的一部分被引入。external-storage和walkman(两者都没有介绍过)最初被识别为未知,但学习任务4后没有被检测到,是ORE的失败案例之一。
最终在任务2中学习到被识别为未知的手提箱,以及对椅子的误报检测。
上图(a)是ORE学习Task 2后产生的结果。由于没有引入Task 3类,如apple和Orange,ORE识别出来并正确标注为unknown。在学习Task 3之后,这些实例在上图(b)中被正确标记。一个未识别的类实例仍然存在,ORE成功地将其检测为未知。
下期我们来好好说说何凯明他们团队又做出来重大贡献的思路,有兴趣的你请持续关注,谢谢!
计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!
标签:Transformer,一神作,检测,何恺明,学习,聚类,类别,未知,识别 From: https://blog.51cto.com/u_15726357/5768024