自监督DINO论文笔记
论文名称:Emerging Properties in Self-Supervised Vision Transformers
发表时间:CVPR2021
作者及组织: Facebook AI Research
GitHub:https://github.com/facebookresearch/dino/tree/main
问题与贡献
作者认为self-supervised learning自监督学习结合vision transformer(ViT),相对于卷积神经网络,能挖掘更多目标特性,更具象化的表达目标。本文有如下两点贡献:
- 提出了一种新的自监督学习方法,DINO(self-distillation with no labels),结合ViT-Base在ImageNet的linear evaluation上达到了80.1%的Top-1指标;
- 自监督学习结合ViT得到的特征包含一张图像更显式的语义分割信息,远远超过带监督信息的ViTs或者卷积神经网络;如下图所示,自监督的ViTs可以自动学习目标类别的特征信息实现无监督的目标分割。

前置概念和理论
自监督学习
在机器学习中,根据是否有标签的训练数据可以分为有监督学习和无监督学习。其中,self-supervise learning,又称自监督学习,是无监督学习中的一种,主要是希望能够学习到一种通用的特征表达用于下游任务。
自监督学习模型训练分为两个阶段,在预训练阶段使用大量无标签的数据集进行训练,学习到通用的特征表达,然后根据下游任务的不同用带有标签的数据进行FineTune。

在自监督学习中,有两类主流的方法:基于Generative的方法和基于Contrastive的方法。基于Generative的方法主要关注重建误差,如一个句子中间盖住一个token,让模型去预测,计算预测结果与真实的token之间的误差更新模型。基于Contrastive方法不要求模型能重建原始输入,而是希望模型能够在特征空间上对不同的输入进行分辨。
知识蒸馏
知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法。其核心思想是将已经训练好的模型包含的知识蒸馏提取到另一个模型里面去。
如下图所示,教师模型的知识可以通过不同的方式传递给学生模型,包括软标签、特征表示和模型输出的概率分布等。学生模型通过与教师模型的输出进行比较和对齐,以最小化它们之间的差异,从而学习到教师模型的知识。

模型、理论和方法
DINO框架

DINO本质上是一种自监督学习方法,其核心思想是通过在大规模的无标签数据集上进行对比学习,期待学习到更好的视觉通用表征。该方法采用自蒸馏的方式,即将一个student和teacher的输出进行比较,以学习出更好的表示。
主要特点
- 整个框架包含teacher和student模型,并且两者的网络结构相同,但参数 θ t \theta_t θt和 θ s \theta_s θs不同;
- 对于输入图像,生成一系列不同视角的patchs,其中包含两个全局视图 x 1 g x_1^g x1g和 x 2 g x_2^g x2g,以及一些局部视角的crops。所有的crops都是会输入到student模型中,而只有全局视角的crops会送入到teacher中;
- teacher和student模型的输出会使用softmax函数进行归一化,公式如下,得到 K K K维度的概率分布,分别用 P t P_t Pt和 P s P_s Ps表示;
P ( x ) ( i ) = e x p ( g θ ( x ) / τ ) ∑ k = 1 K e x p ( g θ ( x ) ( k ) / τ P(x)^{(i)} = \frac{exp(g\theta(x)/\tau)}{\sum_{k=1}^K exp(g\theta(x)^{(k)}/\tau} P(x)(i)=∑k=1Kexp(gθ(x)(k)/τexp(gθ(x)/τ)
- student训练,更新参数,通过SGD优化函数来最小目标,损失函数公式如下:
m i n H ( P t ( x ) , P s ( x ) ) minH(P_t(x), P_s(x)) minH(Pt(x),Ps(x))
对比学习
teacher和student的网络结构相同,采用知识蒸馏的方式来使得student的输出拟合teacher的输出,但是没有真实标签,两者之间是如何进行对比学习?主要采用的是如下集中方式。
multi-crop learning
DINO中会对输入图像进行不同尺度的裁剪采样,这个也是自监督学习领域应用非常广泛的策略,裁剪后的图像可以分为两种:
- local views:局部视角,也称为small crops,指的是crop图像的面积小于原图的50%;
- global views:全局视角,也成为global crops,指的是crop图像的面积大于原图的50%;
在DINO中,student模型接收的是所有的crops图,而teacher模型接收的只是global views的裁剪图。通过这种方式,监督student模型学习到从局部到全局的响应。
此外,为了增强网络的鲁棒性,采用了其他的数据增强手段,如:颜色扰动、高斯模糊和曝光增强。
momentum teacher
teacher模型的权重参数更新不是基于反向传播更新的,而是通过指数移动平均法,将student模型学习到的权重参数更新给teacher。teacher模型权重的更新公式如下:
θ t ← λ θ t + ( 1 − λ ) θ s \theta_t \leftarrow \lambda\theta_t + (1-\lambda)\theta_s θt←λθt+(1−λ)θs
其中, θ t \theta_t θt和 θ s \theta_s θs分别表示teacher和student模型的参数,而 λ \lambda λ在训练过程中采用余弦学习率衰减策略从0.996变化为1。
centering and sharpening
在DINO中,采用centering和shapening来防止model collapse模型坍塌。在自监督学习中,模型坍塌指的是网络学习过程中出现了多样性减少的现象。具体而言,当模型把多个输入数据映射到相同的特征表示时,只考虑了一部分数据的表示,而忽略了其他数据样本的特征,从而导致多样性缺失,对模型的鲁棒性会产生很大的负面影响。
DINO使用centering来避免一部分特征占据主导地位,具体是通过添加一个偏差项 c c c到teacher模型中,表示如下:
g t ( x ) ← g t ( x ) + c g_t(x) \leftarrow g_t(x) + c gt(x)←gt(x)+c
其中 c c c的更新策略采用的指数移动平均法,可以减少batch size对训练效果的影响,公式如下:
c ← m c + ( 1 − m ) 1 B ∑ i = 1 B g θ t ( x i ) c \leftarrow mc + (1-m)\frac{1}{B}\sum_{i=1}^Bg\theta_{t}(x_i) c←mc+(1−m)B1i=1∑Bgθt(xi)
其中, m > 0 m>0 m>0是一个比例项, B B B表示batch size。
sharpening操作是通过在softmax函数中加入一个temperature参数,来强制让模型将概率分布跟价锐化。使得小的差异会引起较大的变化,搭配centering使用,可以使得激活值不断变化。
实验与结论
训练细节
- 训练集:不包含标签的ImageNet数据集
- 优化函数:Adamw optimizer
- Batch size: 1024
- 学习率在最初的10epochs相对于base值呈线性增长,按照如下规则: lr=0.0005 * batchsize / 256,在warmup之后,使用余弦策略衰减学习率
- 权重衰减也是按照余弦衰减策略从0.04到0.4
- 在最开始的30epochs,温度系数设置为0.1,使用linear warm-up从0.04到0.07
- 使用BYOL数据增强:color jittering、Gaussian blur和solarization,multi-crop使用bicubic interpolation适应position embedding
对比实验
实验的评价方式有两种:linear 和k-NN 评估,其中linear评估指的是冻结预训练模型的权重,仅训练linear层;k-NN分类评估先使用预训练模型计算和保存数据集的特征,然后使用k-NN基于提取的特征对输入图像进行分类。
相同模型下比较

以ResNet-50为基础模型,在相同设置下,DINO的效果都是最优的。在ViT框架下,DINO相对于BYOL,MoCov2和SwAV在linear和k-NN分类上分别至少提升了3.5%和7.9%。
不同框架比较

ViT-B/8,指的是ViT-Base模型patch size为8×8,其linear分类取得80.1%的Top-1,77.4%的k-NN分类,相较于之前的方法参数量减少了至少10倍,运行速度提升了1.4倍。
消融实验
不同模块的影响

上图展示了通过添加不同模块到DINO结果的变化,同时也比较了这些模块在BYOL、MoCov2和SwAV上的影响。可以看到最好的组合是momentum encoder、multicrop augmentation和交叉熵损失函数。
Patch size的影响

上图研究了ViT在不同patch size下模型性能的变化,可以看到patch size越小,性能越好,虽然参数量没有变换,但是推理速度变慢了。当使用5×5的patch size时,速率为44im/s,而8×8为180im/s。
不同teacher模型的影响

上图左边比较了student和teacher模型在训练过程中k-NN分类性能,可以看到teacher的效果要好于student。右边为teacher模型的不同参数更新策略,可以看到momentum的方式是最优的。
训练时batch size的影响

上图研究了训练阶段不同batch size的影响,表明即使使用小的batch size也可以取得很好的效果。
思考
本文提出了一种自监督学习方法,DINO,展示了采用自监督学习结合ViT也可以取得和精心设计的卷积神经网络类型的效果。但是DINO具有如下两个重要的特点:
- 采用的是无标签的数据进行训练;
- 学习了更高阶层的通用特征,可以直接用于非监督语义分割;
相关文章:
自监督DINO论文笔记
论文名称:Emerging Properties in Self-Supervised Vision Transformers 发表时间:CVPR2021 作者及组织: Facebook AI Research GitHub:https://github.com/facebookresearch/dino/tree/main 问题与贡献 作者认为self-supervise…...
计算机视觉: 基于隐式BRDF自编码器的文生三维技术
论文链接: MATLABER: Material-Aware Text-to-3D via LAtent BRDF auto-EncodeR 背景 得益扩散模型和大量的text - image 成对的图片, 现在文生2D的模型已经比较成熟的框架和模型,主流的技术比如说stable diffusion 和 midjourney 以及工业领域runway 等…...
分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测
分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-BiLST…...
Java队列相关面试题
ArrayBlockingQueue 1、ArrayBlockingQueue是什么?它与LinkedList和LinkedBlockingQueue有何区别? ArrayBlockingQueue是一个基于数组的有界阻塞队列,可以在队列的两端进行插入和删除操作。 与LinkedList不同,ArrayBlockingQueu…...
水库大坝除险加固安全监测系统解决方案
一、系统背景 为贯彻落实《办公厅关于切实加强水库除险加固和运行管护工作的通知》(〔2021〕8号)要求,完成“十四五”小型病险水库除险加固、雨水情测报和大坝安全监测设施建设任务,规范项目管理,消除安全隐患…...
android native C++编程实现数据库加密sqlcipher
sqlcipher是sqlite的加版本,分为免费版和收费版。 这里研究的是开源的免费版 https://github.com/sqlcipher/sqlcipher Android码源默认提供了sqlite的native,jni和java版本,但没有提供sqlcipher,开发用到需要自己添加。 sqlc…...
第五节 C++ 循环结构(算法)
文章目录 前言介绍1. for 语句1.1 语法结构1.2 语法流程的执行过程1.2.1 案例 1:循环的正序输入和倒序输入1.2.2 案例2 : 求1~n的平方数1.2.3 案例 3: 求输入a和b,求a~b区间数. 1.3 for 循环案例练习1.3.1 求最大值与最小值1.3.2 计算奇数和和偶数和1.3.3 计算平均气温与最高气…...
接口与抽象类的区别
a、抽象类不能被实例化只能被继承;b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;d、一个子类继承一个抽象类,则子类…...
短视频账号矩阵系统源码saas===独立部署
前言: 短视频账号矩阵是指在不同的短视频平台上,一个个人或企业所拥有的账号数量和分布情况。由于不同的短视频平台受众人群和内容类型等因素不同,因此拥有更多账号可以在更广泛的受众中传播内容,提高曝光度和流量。短视频账号矩阵…...
香港专用服务器拥有良好的国际网络连接
香港服务器在多个领域有着广泛的应用。无论是电子商务、金融交易、游戏娱乐还是社交媒体等,香港服务器都能够提供高效稳定的服务。对于跨境电商来说,搭建香港服务器可以更好地满足亚洲用户的购物需求;对于金融机构来说,香港服务器…...
IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电
IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电 深圳锐科达SV-7043VP 20W网络有源吸顶喇叭。该设备配备了10/100M以太网接口,内置了高品质扬声器,通过内置的功放和喇叭输出,可提供高达20W的音效功率。SV-7043VP作为SIP系统的播放终端&#…...
基于Keil a51汇编 —— 程序模板文件以及规则
程序模板文件 下面的代码模板包含有关如何编写自己的程序集模块的指南和提示。此模板文件模板。A51 在文件夹 \C51\ASM 中提供。 $NOMOD51 ; 禁用预定义的 8051 寄存器 #include <reg52.h> // 包含头文件; ;根据需要更改小写名称。 ;该汇编模板让你…...
案例研究 | 玉湖冷链基于JumpServer实现管理安全一体化
玉湖冷链(中国)有限公司(以下简称为玉湖冷链)是玉湖集团旗下的冷链食品供应链企业。依托自有的国际高标数智化冷链园区产业集群,玉湖冷链提供一站式国内外代采、仓干配物流解决方案、全链路创新金融支持、高品质生活办…...
JavaEE初阶学习:HTTP协议和Tomcat
1. HTTP协议 HTTP协议是一个非常广泛的应用层协议~~ 应用层协议 —> TCP IP 协议栈 应用层 —> 关注数据怎么使用~ 传输层 —> 关注的是整个传输的起点和终点 网络层 —> 地址管理 路由选择 数据链路层 —> 相邻节点之间的数据转发 物理层 —> 基础设置,硬…...
ASEMI整流桥GBU810参数,GBU810封装
编辑-Z GBU810参数描述: 型号:GBU810 最大直流反向电压VR:1000V 最大工作峰值反向电压VRWM:700V 最大平均正向电流IF:8A 非重复正向浪涌电流IFSM:200A 操作和储存温度范围TJ ,TSTG:-55 t…...
docker应用记录总结
一、前言 docker这类部署工具,久而久之不使用非常容易忘记,甚至连操作命令都容易忘记。网上也有比较全的docker使用教程。这里做一个记录总结,纯属是温故知新。 二、docker部署应用 1、docker印象 docker首先让我想到的是是虚拟化技术&…...
Jenkins 添加节点Node报错JNI error has occurred UnsupportedClassVersionError
节点日志 报错信息如下 Error: A JNI error has occurred, please check your installation and try again Exception in thread “main” java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime…...
swift ui 布局 ——Stack(HStack、VStack、ZStack)
一、HStack 水平布局 将其子视图排列在水平线上 import Foundation import SwiftUI struct MyView: View {var body: some View {HStack{Text("text")Image("yuyin").resizable().frame(width: 102,height: 80)}} } 默认子视图是水平中心对齐的,可添加al…...
淘宝天猫商品评论数据接口,淘宝天猫商品评论API接口,淘宝API
淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL,可以向淘宝服务器发起HTTP请求,获取商品评论数据。接口返回的数据一般为JSON格式,包含了商品的各种评价信息。获取到商品评论数据后,可以对其进行处理…...
C# Onnx GFPGAN GPEN-BFR 人像修复
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;namespace 图像修复 {public partial class Form1 : For…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...
