在之前的几篇文章中也已经介绍了自监督预训练几种方法。其中采用双塔结构的对比学习自监督预训练范式在SimCLR、MOCO、BYOL得到广泛研究。但是他们主要只在CNN上进行了预训练,并没有在transformer结构上进行尝试。而同样基于双塔结构,DINO采用了一种自蒸馏的自监督预训练范式,并在transformer与CNN结构上验证了预训练效果。并且,在实验分析中,发现了这种自监督的预训练方法能够使得transformer在不需要任何标签的情况下就能提取到类似语义分割的显著特征(见图一)的特征。确实是比较令人惊喜。
论文地址:https://arxiv.org/pdf/2104.14294.pdf
代码地址:https://github.com/facebookresearch/dino

一、背景

本篇文章中,作者试着将双塔结构的自监督的学习从CNN扩展到transformer,以研究自监督学习相较于 CNN 是否为 Transformer(ViT) 提供了新的属性。就这么一做,还真发现了一个superived的特质:文中所设计的这种预训练方式所训练出的transformer模型能够提取出类别明确的特征。我们来看看以下两个可视化:
图一:[CLS] token的可视化图
1)论文开局就是一张可视化图,在没有任何标签的情况下,自监督的transformer的[CLS] token居然能够得到如此清晰的类别明确的特征图真是令人惊奇。这都初步具备了语义分割的特性了。
2)再来看实验部分展示的另一组图,如下图2所示:

图二:[CLS] token的可视化图,不同的颜色代表多头注意力机制中的不同的head。
更加进一步的展示了自监督的transformer的[CLS]token得到的类别明确的特征图,并且说明了不同的head所注意的区域不一致,证明了多头注意力的必要性。
下面我们来看一下能够提取如此优秀特征的transformer是通过什么方法预训练出来的。

二、方法


模型框架

算法流程

模型框架简洁明了,整体上的设计也类似与BYOL(从 SimCLR, MoCo, BYOL 了解目前图像自监督对比学习预训练在做什么)总体思想就是同一幅图片在不同的数据增强之后,经过同样结构的网络模型处理输出的类别分布总体上应该是接近的。相信看了上面两个图,大家也都能理解。比较细节的点在于:

1)teacher网络在反向传播中不更新,而是只更新student网络。再更新完student之后,再以EMA的方式缓慢更新teacher。
所谓EMA就是:

其中:λ following a cosine schedule from 0.996 to 1 during training。这保证了teacher更新速度不至于过快。文中也做了实验来验证使用EMA更新teacher的必要性:
图三:不同的techer更新方式的top 1 acc,momentum表示EMA
个人理解这么做的原因在于使得模型不要落入trivial solution中。
2)centering与sharping操作:即使 使用了EMA操作,模型在这种设计中仍然有可能陷入trivial solution中。而centering与sharping操作则是为了防止这种风险。文中提出了两种trivial solution。一种是不管输入是什么,输出的向量中的数都是一样的。另一种是不管输入是什么,输出向量由其中的一个纬度主导。所以作者采用了centering与sharping操作两个小trick。centering在于使用同一batch内的所有输出向量的平均值来平滑当前的输出向量,使得模型不至于被一个纬度主宰。但是只进行centering的话会的模型很容易朝着另一个trivial solution走。所以还需要进行sharping操作来锐化输出向量。具体来说就是调小输出向量在softmax操作时的温度参数(温度参数的作用见:https://blog.csdn.net/weixin_41803874/article/details/107726241
以上两个细节明白之后,整体的框架应该也就明白了。

三、实验

在[CLS]特征上使用kNN分类器可以在ImageNet上达到78.3%的top-1精度。这足以证明这种预训练方式训出来的transformer提取特征能力的强大。其实这也是显然的,从可视化特征图来看模型提取的特征都初步具备了语义分割的能力,它用于分类能不强大嘛。
以下是与其他自监督方法的比较:

阿柴提示
以上若有你需要而查不到或有疑惑的项目,
请联系小编为你解答
Ps:欢迎关注公众号,获取更多计算机视觉、图像分割和自然语言处理领域资料:

以上如果对你有用,请点击点击右下角在看或者分享一下噢
继续阅读
阅读原文