【自监督论文阅读 3】DINOv1

news2024/9/28 23:36:41

文章目录

  • 一、摘要
  • 二、引言
  • 三、相关工作
    • 3.1 自监督学习
    • 3.2 自训练与知识蒸馏
  • 四、方法
    • 4.1 SSL with Knowledge Distillation
    • 4.2 教师网络
    • 4.3 网络架构
    • 4.4 避免坍塌
  • 五、实验与评估
  • 六、消融实验
    • 6.1 不同组合的重要性
    • 6.2 教师网络选择的影响
    • 6.3 避免坍塌
    • 6.4 在小batch上训练
  • 七、结论


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


论文地址: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

elk搭建

1、前言 ELK 是一个开源的日志管理解决方案,主要是为了统一收集生产的日志,方便日志的查询,传统的日志都是保存在每个机器上,当要查询的时候,需要到每一台机器上去查询日志,非常麻烦,而elk则使…

阿里巴巴 Java 开发手册部分整理

阿里巴巴 Java 开发手册 一、编程规约(一) 命名风格(二) 常量定义(三) 代码格式(四) OOP 规约(五) 集合处理(六) 并发处理(七) 控制语句(八) 注释规约(九) 其它 二、异常日志(一) 异常处理(二) 日志规约 三、单元测试四、安全规约五、MySQL 数据库(一) 建表规约(二) 索引规约(三…

Java 操作pdf工具类

1、获取pdf页数 添加maven依赖&#xff1a; <!-- java获取Pdf文件页码 --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>1.8.11</version></dependency>代码实现&#x…

Goby 漏洞发布|电信网关配置管理系统后台 /manager/teletext/material/upload.php 文件上传漏洞

漏洞名称&#xff1a;电信网关配置管理系统后台 /manager/teletext/material/upload.php 文件上传漏洞 English Name&#xff1a;Telecom system /manager/teletext/material/upload.php fileupload vulnerability CVSS core: 9.8 影响资产数&#xff1a;856 漏洞描述&…

不过时的经典层架构

在《设计服务要考虑的7个维度》中讲到设计一定要把不稳定的部分做封装。今天咱们就从这个角度重新审视一下经典的四层架构。 上面是一个经典层架构的示意图。这个架构大多数的公司和项目都在直接用&#xff0c;或者用其变体。 比如&#xff0c;某大厂上层Client客户端可能是电商…

安卓蓝牙GATT协议介绍

前言 现在低功耗蓝牙&#xff08;BLE&#xff09;连接都是建立在 GATT (Generic Attribute Profile) 协议之上。GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范&#xff0c;这些很短的数据段被称为属性&#xff08;Attribute&#xff09;。 GAP 详细介绍 GAT…

GBASE金融信创优秀解决方案鉴赏 · 核心业务系统数据库解决方案

为此&#xff0c;实验室特别开设金融信创优秀解决方案专栏&#xff0c;集中展示优秀成果。现在&#xff0c;让我们一起来领略下GBASE的优秀解决方案吧~可点击阅读原文 →《金融信创优秀解决方案--核心业务系统数据库解决方案》。 核心业务系统数据库解决方案 方案简介 随着技…

Android Qcom USB Driver学习(十三)

该系列文章总目录链接与各部分简介&#xff1a; Android Qcom USB Driver学习(零) Android Qcom USB Driver学习(八) Android Qcom USB Driver学习(九) UCSI USB Type-C Connector System Software Interface Specification DPM Device Policy Manager deals with the USB P…

智安网络|驾驭数字化转型时代:加速业务转型的战略

随着科技的飞速发展和数字化时代的到来&#xff0c;企业面临着前所未有的机遇和挑战。数字化正在改变着商业的方方面面&#xff0c;而那些能够及时适应和把握这些变化的企业将脱颖而出。因此&#xff0c;加速企业转型成为了当务之急。 一、为什么需要加速企业转型 1.全球市场竞…

D. Pairs of Segments(最大不相交区间数量)

Problem - D - Codeforces 给定一个由n个线段组成的数组[[l1,r1],[l2,r2],…,[ln,rn]]&#xff0c;其中每个线段用左右端点表示。如果存在至少一个x满足l1≤x≤r1且l2≤x≤r2&#xff0c;则称线段[l1,r1]和[l2,r2]相交。 如果k为偶数&#xff0c;并且可以将该数组的元素分成k/…

VTK裁剪【3】-vtkClipPolyDatavtkPolyPlane问题

前言&#xff1a;本博文主要记录vtkClipPolyData中采用vtkPolyPlane作为裁剪工具时的出现的问题&#xff0c;供各位小伙伴进行参考&#xff0c;避免踩坑&#xff01; 目录 vtkPolyPlane介绍及作用 vtkClipPolyData原理 实现流程&#xff1a; 问题所在&#xff1a; 需求&…

css绘制网格背景

文章目录 前言效果图说明 前言 本篇文章主要简单扼要的去实现css网格背景&#xff0c;并进一步探求其应用原理 效果图 css代码 body::before, body::after {position: fixed;top: 0;left: 0;right: 0;bottom: 0;content: ;background-repeat: repeat;pointer-events: none;o…

企业特权密码管理

随着企业中特权帐户的激增&#xff0c;必须保护的密码数量也大幅增长。跟踪所有这些密码是一项艰巨的任务&#xff0c;为避免敏感密码管理不善&#xff0c;管理员需要在集中式存储库下清点属于所有部门的密码&#xff0c;并管理对它们的直接控制。 部署PMP的好处 PMP是一个安…

Baumer工业相机堡盟工业相机如何使用新版本NEOAPI SDK控制相机数据流的开启和关闭(C#)

Baumer工业相机堡盟工业相机如何使用新版本NEOAPI SDK控制相机数据流的开启和关闭&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机NEOAPI SDK的技术背景Baumer工业相机使用NEOAPISDK控制相机数据流的方式1.引用合适的类文件2.使用NEOAPISDK控制相机数据流的方式2.使用…

市场模式下光伏用户群的电能共享与需求响应模型(matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《市场模式下光伏用户群的电能共享与需求响应模型》&#xff0c;为了使光伏用户群内各经济主体能实现有序的电能交易&#xff0c;提出了一种基于光伏电能供需比&#xff08;SDR&#xff09;的内…

JavaScript实现伪随机正态分布

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言什么是正态分布&am…

Jenkins+Allure+Pytest的持续集成

一、配置 allure 环境变量 1、下载 allure是一个命令行工具&#xff0c;可以去 github 下载最新版&#xff1a;https://github.com/allure-framework/allure2/releases 如果你想学习Pytest自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站播放全…

图扑智慧地下采矿,“像素游戏”智能呈现

在这个像素世界里&#xff0c;我们需要一个智能地下采矿可视化综合管理平台&#xff0c;来帮助我们管理和监控地下采矿全流程。 图扑软件依托自主研发的 HT for Web 产品&#xff0c;结合三维定制化渲染、动态模拟、物理碰撞、5G、物联网、云计算及大数据等先进技术&#xff0c…

vue+leaflet笔记之热力图

vueleaflet笔记之热力图 文章目录 vueleaflet笔记之热力图开发环境代码简介插件简介与安装使用简介 详细源码(Vue3) 本文介绍了Web端使用 Leaflet开发库展示热力图方法 (底图来源:天地图)&#xff0c;结合leaflet.heat插件可以很容易的做出热力图&#xff0c;通过调整其配置参…

旧系统重构遇到的种种问题

首先我将原来springboot版本升级到2.7.9&#xff0c;spring的docker分层和启动受到了影响&#xff0c;这个在docker镜像大小问题已经讲过&#xff0c;不再赘述&#xff0c;因为维护的人变成为一个人&#xff0c;因此我需要将各代码的版本进行统一&#xff0c;方便维护。 5 sun.…