【自监督论文阅读 3】DINOv1

2023-10-31


自监督论文阅读系列:
【自监督论文阅读 1】SimCLR
【自监督论文阅读 2】MAE
【自监督论文阅读 3】DINOv1
【自监督论文阅读 4】BYOL


论文地址:https://arxiv.org/pdf/2104.14294.pdf
github地址:https://github.com/facebookresearch/dino

论文题目:Emerging Properties in Self-Supervised Vision Transformers


一、摘要

在这篇文章里,质疑了自监督学习是否为ViT提供了与卷积网络相比更加突出的新的属性。
然后就是除了自监督方法适用于这篇文章提出的架构是特别有效的之外,本文还进行了以下观察:

  • 自监督的ViT特征包含了显著的语义分割的信息;
  • 这些特征也是优秀的K-NN分类器,用一个小的Vit,就在ImageNet上取得了78.3%的top1准确率

这篇文章同样列出了以下几点的重要性:

  • mementum encoder (动量编码器)
  • multi-cop training (多尺度裁剪训练)
  • the use of small patches with ViTs (带有Vits的小patch的使用)

本文方法实现为一个简单的自监督方法,叫做DINO(一定形式的无标签自蒸馏 self-distillation with no labels),本文展示了DINO和ViTs之间的协同作用, 在ImageNet上, 使用VIiT-Base的 linear评估达到80.1%的的top1准确率。

二、引言

Transformers最近在视觉识别领域,已经作为卷积网络的替代品出现。受NLP训练策略启发,Transformers在视觉领域的应用,也是对大量的数据进行预训练,然后在目标数据集上微调。
由此产生的ViT与卷积网络比,具有竞争力,但尚未出现明显的优势,如:

  • 对计算要求更高
  • 需要更多的数据
  • 特征没有表现出独有的特性

这篇论文质疑了,Transformers在视觉领域的成功,是不是因为预训练中采用的是监督学习,动机如下:

  • Transformer在NLP领域成功的最大因素之一是使用了自监督预训练;
  • 自监督预训练目标使用句子中的单词来创建一个pretext任务,这个比每个句子预测单个标签的监督目标有更丰富的学习信号
  • 图像类似,图像强监督的会将图中丰富的视觉信息简化成单一的概念

虽然在NLP领域使用的自监督前置任务是特定文本的,但许多现有的使用卷积网络的自监督方法已经展示出在图像上的潜力。它们通常具有相似的结构,但具有不同的组件,这样设计是为了避免模型坍塌或者提高性能。 受这些工作启发,这篇文章确定了几个有趣的属性,这些属性不会出现在受监督的 ViT 中,也不会出现在卷积网络中:

  • 自监督 ViT 特征 明确包含场景布局,特别是 对象边界,如下图 所示。这些信息 可以在最后一个模块的自注意模块中 直接获取

  • 自监督 ViT 功能 在基本的最近邻分类器 (k-NN) 上表现特别出色,无需任何微调、线性分类器或数据增强,在 ImageNet 上达到 78.3% 的 top-1 准确度
    在这里插入图片描述
    总的来说,这篇文章通过对这些组成部分的重要性的发现,设计了一种简单的自监督方法,然后解释为了一种 没有标签的知识蒸馏形式 ,成之为DINO。DINO简化了自监督训练,体现在以下几个方面:

  • 使用标准的交叉熵损失 直接预测教师网络

  • 教师网络是通过使用动量编码器来构建

  • 本文方法只能使用 教师输出的 中心化和锐化 来避免崩溃。而其他流行的组件,如预测器 、高级归一化或 对比损失在稳定性或性能方面几乎没有什么好处

  • 框架非常灵活。可以在 convnets 和 ViTs 上工作,无需修改架构,也不需要调整内部的归一化

三、相关工作

3.1 自监督学习

大量关于自监督学习的工作 侧重于创造实例分类 的判别方法,该方法将每个图像视为不同的类别,并通过在不同的数据增强训练模型(区分它们)。然而,显式学习分类器以区分所有图像 并不能很好地适应图像数量。有文章建议 使用噪声对比估计 (NCE) 来比较实例,而不是对它们进行分类。这种方法的一个限制是 它需要同时比较大量图像的特征。实际上,这 需要大的batchsize 或内存库,还有几个变体允许以聚类的形式自动对实例进行分组。

最近的工作表明,可以在不区分图像的情况下学习无监督特征。特别有趣的是,其中有一种称为 BYOL 的度量学习公式,其中通过 将特征与使用动量编码器获得的表示相匹配 来训练特征。已经表明,像 BYOL 这样的方法即使没有动量编码器也能工作,但代价是性能下降。

其他几项工作也呼应了这个方向,表明可以训练与 l2 超球面 上的均匀分布相匹配的特征,或使用白化操作。

文章中的方法从 BYOL 中汲取灵感,但又有以下不同之处:

  • 但使用不同的相似性匹配损失
  • 为学生和教师使用完全相同的架构。

这样,我们的工作就完成了在 BYOL 中发起的对自监督学习的解释,作为一种没有标签的 Mean Teacher 自蒸馏 的形式。

3.2 自训练与知识蒸馏

  • 自训练: 通过将一小部分初始注释 传播到大量未标记实例 来提高特征质量。这种传播可以 通过标签的硬分配 或 软分配 来完成。
  • 当使用软标签时,该方法通常被称为知识蒸馏 ,主要设计用于 训练小型网络 以模仿大型网络的输出 以压缩模型。
  • 蒸馏可用于 将 软伪标签 传播到自训练流程中的 未标记数据,从而在自训练和知识蒸馏之间建立了本质联系。

这篇文章的工作的正是建立在这种联系之上,并且将知识蒸馏扩展到没有标签可用的情况。

以前的工作还结合了自监督学习和知识蒸馏,实现了 自监督模型压缩 和性能提升。然而,这些作品依赖于 预训练的固定教师,而本文方法是:

  • 教师网络是在训练期间动态构建的,这样,知识蒸馏就不会被用作自监督预训练的后处理步骤,而是直接被用作自监督目标
  • 我们的工作还与协同蒸馏codistillation 有关,其中 学生和教师具有相同的架构, 并 在训练期间使用蒸馏。然而,codistillation 中的 teacher 也是从 student 中蒸馏出来的,而 在我们的工作中 它是用 student 的动量平均值更新的。

四、方法

4.1 SSL with Knowledge Distillation

DINO框架 与最近的自监督方法具有相同的整体结构。然而,DINO也与知识蒸馏 有相似之处,这篇文章主要从知识蒸馏的角度来介绍它。下图说明了 DINO,还有一个伪代码的实现:
在这里插入图片描述

在这里插入图片描述

  • 输入 x x x 为原始图像,经过两种数据增强方式得到 x 1 x_1 x1 x 2 x_2 x2,分别送入到学生网络 g ( θ s ) g(θ_s) g(θs)和教师网络 g ( θ t ) g(θ_t) g(θt)中。需要注意的是,数据增强里组合里有local views和global views,
    所有的local crop都送入到学生网络中,教师网络仅输入global views。 主要用来鼓励 局部到全局的通信。

  • 教师网络不参与反向传播,参数通过exponential moving average (EMA),从学生网络的参数更新,更新规则如下:
    θ t ← λ θ t + ( 1 − λ ) θ s , θ_t ← λθ_t + (1 − λ)θ_s, θtλθt+(1λ)θs, 其中,λ在训练期间,遵循一个余弦规则表,从0.996到1。

  • 教师网络和学生网络的输出 P s P_s Ps P t P_t Pt,都表示 K K K维的概率分布。 概率 P P P说白了,就是网络最后一层的全连接的预测头后,再接一个SoftMax, 只不过这里的Softmax带有一个控制输出分布锐度的温度参数
    -在这里插入图片描述- 教师网络输出后,接一个centering操作,用来防止一个维度占主导地位,使鼓励崩塌到均匀分布。centering操作可以看成 教师网络的输出再加上一个偏置项:

    g t ( x ) ← g t ( x ) + c g_t(x) ← g_t(x) + c gt(x)gt(x)+c.
    在这里插入图片描述

  • 锐化操作紧接着centering后:就是将softmax中的温度参数设置为一个较小的值。

  • 损失函数就是交叉熵损失函数,用来衡量向量之间的一致性
    在这里插入图片描述

4.2 教师网络

4.1已经介绍过,这里总结如下:

  • 和知识蒸馏不一样,没有先验的参数,通过上一个iter的学生网络的参数进行迭代
  • 教师网络的参数被冻结,不参与反向传播
  • 学生权重使用EMA来激活教师权重,如果直接复制学生网络的参数无法收敛

4.3 网络架构

神经网络 g g g 由backbone f f f(Vit或者ResNet等)和投影头 h h h组成: g = h ◦ f g=h ◦ f g=hf
使用 f f f 作为下游任务中的特征。

  • 投影头 h h h:3层的MLP,隐藏维度为2048(遵循L2 normalization)和一个K维归一化的全连接。
  • backbone h h h:Vit或者ResNet, 可应用于下游任务

值得注意的一个现象是,与标准的对流网络不同,ViT架构在默认情况下不使用批处理规范化(BN)。因此,当将DINO应用于ViT时,我们也不会在投影头中使用任何BN,从而使系统完全没有BN。

4.4 避免坍塌

现有的自监督方法避免坍塌有着不同的方法,比如对比损失、聚类约束、预测或者批量归一化。

虽然本文方法可以通过多次归一化来确定,但也可以通过对动量老师的输出进行centering居中和sharping锐化来避免模型坍塌。

居中 防止一个维度占主导地位,但 鼓励崩溃到均匀分布,而 锐化具有相反的效果。应用这两种操作平衡了它们的效果,这足以避免在有动量老师的情况下模型发送坍塌。

五、实验与评估

六、消融实验

6.1 不同组合的重要性

6.2 教师网络选择的影响

6.3 避免坍塌

6.4 在小batch上训练

七、结论

  • 展示了自监督预训练Vit模型的潜力
  • KNN分类中特征质量有在图像检索中的潜力
  • 特征中场景布局信息的存在,有利于弱监督图像分割
  • 自监督学习可能是发展BERT-Like的key
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【自监督论文阅读 3】DINOv1 的相关文章

随机推荐

  • Google Maps API v3离线开发包

    http blog 3snews net space php uid 730 do blog id 61654 在09年的时候 我就写过一篇Google Maps API离线开发包 没有网络也可以开发Gmap了 后来liongis大虾又重新
  • Jpa操作数据库之@Query使用SQL语句

    使用Jpa操作数据库除了简单的 save findOne findBy delete 等等还可以使用原生的SQL语句 下面就说一些简单的使用SQL语句操作 首先写一个接口继承 JpaRepository 接口 例如 public inter
  • javaweb题库

    目录 第1章 网页开发基础 第2章 Java Web概述 第3章 HTTP协议 第4章 Servlet基础 第5章 会话及会话技术 第6章 JSP技术 第7章 EL表达式和JSTL 第8章 JavaBean与JSP开发模型 第9章 Serv
  • 隐私和效用不可兼得?隐私保护开辟商业新境地|第1论

    作者 严强 来源 微众银行区块链 话说天下数据 分久必合 合久必分 伴随着计算机软硬件技术的飞速发展 社会整体信息化程度提高 数据的价值逐渐凸显 由此开创了数据汇集 数据提炼 数据变现的信息时代 信息技术商业化日渐深入的同时 数据汇集潜藏的
  • Qt-虚拟键盘

    杂 开发过程中 查阅大量关于虚拟键盘的使用 其中最容易的是使用Qt自带的输入法 但是此法受制于人 其做法 int main int argc char argv 环境 qputenv QT IM MODULE QByteArray qtvi
  • 银河麒麟创建sh脚本快捷方式的方法

    本文旨在将 sh 做成快捷方式放到桌面上 一 将解压后的文件中的 sh 做成快捷方式放到桌面上 1 在桌面打开终端命令行 2 创建 desktop文件 在打开的终端命令行中 输入vim 快捷方式名称 desktop 3 在vim编辑器中按如
  • 如何在Windows 10上下载并安装Linux Bash Shell?

    Bash is the command line interface for Linux distributions like Ubuntu CentOS Debian Mint Kali RedHat Fedora etc Bash pr
  • Opencv的使用小教程3——利用轮廓检测实现二维码定位

    Opencv的使用小教程3 利用轮廓检测实现二维码定位 二维码具有什么特征 实现效果 识别二维码的流程 1 预处理图像 2 寻找轮廓 3 通过寻找到的轮廓确定 回 的位置 4 创建一张新图 并在新图上画出识别到的 回 并连线 5 寻找直角
  • 论文阅读:(ECCV 2022)Simple Baseline for Image Restoration

    Simple Baseline for Image Restoration ECCV 2022 2022 08 26 两个月的时间终于把那个材料完成了 今天一看虽然审核完了还有些小问题 老板没有怪我还说他会去搞定这个事 TAT 我要做老板的
  • 如何利用python处理excel

    利用Python处理Excel数据可以帮助我们更高效地进行数据分析和处理 以下是一些常用的Python库和工具 Pandas Pandas是一个用于数据处理和分析的Python库 它提供了丰富的数据结构和函数 可以方便地读取 清洗 转换和分
  • 存储器IP核生成 非对齐读写 vivado

    存储器制作 含非对齐读写 1 创建ROM 和 RAM IP核 参考马德老师lab0PPT 1 新建一个项目ROM 选择芯片 创建 2 搜索memory generator 3 双击 4 设置好后点击OK width写32 另一个写1024
  • eclipse中文注释缩进异常

    最近更新了eclipse 发现格式化代码后 中文的注释缩进出现了问题 如下图 这个问题 我们可以通过更改字体解决 推荐修改生成支持中文的字体 最简单的方法就是更改成与系统一致 依次点击 Window gt Preferences gt Ge
  • Shell中sort命令使用

    一 sort命令工作原理 sort命令将文件的每一行作为比较对象 通过将不同行进行相互比较 从而得到最终结果 比较原则是从首字符开始 向后依次按ASCII码值进行比较 最后将结果按升序输出 比较前的结果 rocrocket rocrocke
  • java :基本递归(阶乘,斐波那契数列,猴子吃桃,迷宫,汉诺塔,八皇后)

    1 求一个非负数的阶乘 package ex import java util public class ex1 public static void main String args Scanner myscanner new Scann
  • Hive3 启动 提示:com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character

    Windows10 系统启动Hive3 提示如下错误信息 com ctc wstx exc WstxParsingException Illegal character entity expansion character code 0x8
  • 7.全志H3-准备焊接

    上面是我的微信和QQ群 欢迎新朋友的加入 20201203 CPU和DDR已到 20201207 板子到了 开始焊接 20201208 下班继续焊接 发现少了一个料 漏买了 赶紧淘宝补一个 现在就把手上的板子拆了个芯片先用着 焊接完成 测试
  • Partition Pruning和Partition-Wise Joins

    Partition Pruning Partition pruning is an essential performance feature for data warehouses In partition pruning the opt
  • Android Bitmap图像处理(1)- 图片压缩

    一直以来Bitmap都是开发中很棘手的问题 这个问题就是传说中的OOM java lang OutofMemoryError 内存溢出 那么Bitmap为何如此丧失 令无数Android开发者所懊恼 一 Bitmap引发OOM的原因 由于每
  • 介绍中国传统节日的网页html,关于中国传统节日介绍的作文

    关于中国传统节日介绍的作文 春节的另一名称叫过 是我国的传统节日之一 小编为大家收集整理的传统节日作文 欢迎感兴趣的小伙伴们前来查阅 中国传统节日介绍的作文 过春节了 孩子的脸上露出了春节特有的快乐 大人们一年的劳累得到了安抚 春节是多么重
  • 【自监督论文阅读 3】DINOv1

    文章目录 一 摘要 二 引言 三 相关工作 3 1 自监督学习 3 2 自训练与知识蒸馏 四 方法 4 1 SSL with Knowledge Distillation 4 2 教师网络 4 3 网络架构 4 4 避免坍塌 五 实验与评估