【自监督学习】iBOT in ICLR 2022

一、引言

论文: iBOT🤖: Image BERT Pre-Training with Online Tokenizer
作者: ByteDance
代码: iBOT
注意: 该方法是在另一个自监督预训练方法基础上的改进,学习之前建议掌握DINO。
特点: 对于一张图片,该方法首先进行两次全局裁剪与增强得到两张全局视图,之后进行随机mask再产生两张带mask的全局视图,并分别送入教师和学生网络;学生与教师网络均有两个映射头,一个用于映射 [ CLS ] [\text{CLS}] [CLS],另一个用于映射特征图,之后以两个网络的输出一致性为损失进行学生网络的更新;教师网络由指数移动平均更新,还采用了中心化和锐化操作避免模式崩溃。

二、详情

  1. 对于一张图片,进行2次全局裁剪(面积占比在 [ 0.14 , 1 ] [0.14,1] [0.14,1],resize为224),之后对2个切片进行随机增强(翻转、色彩变化、高斯模糊、归一化等)得到2个正常的全局视图;接着按照16*16的patch分配14*14的mask,mask为1表示被遮掩,为1的概率为0.3,被遮掩的patch被设置为全0,于是又得到2个带mask的全局视图。
  2. 2个正常的全局视图送入教师网络,另外两个带mask的全局视图送入学生网络。教师网络和学生网络的结构相同初始参数也相同,可以是ViT、Swin Transformer等等。教师网络和学生网络都有两个映射头,最后输出维度相同都是8192,学生网络的两个头不共享参数,教师网络的两个头共享参数。一个映射头用于映射 [ CLS ] [\textbf{CLS}] [CLS],输出2*8192,另一个映射头用于映射图像特征,输出2*196*8192。
  3. 教师网络的 [ CLS ] [\text{CLS}] [CLS]输出先减去center1(初始全0)再除以temp1=0.04之后求softmax;教师网络的图像特征输出先减去center2(初始全0)再除以temp2(前30个epoch等间隔在0.04-0.07取值,后70个epoch全为0.07)之后求softmax。学生网络的输出均先除以temp=0.1,然后求softmax再取log;最后,教师与学生网络的 [ CLS ] [\text{CLS}] [CLS]输出之间计算损失,图像特征输出之间计算损失(其实就是在标准的交叉熵损失 − p t log ⁡ p s -p_t\log p_s ptlogps中对教师网络输出引入了锐化和中心化,对学生网络输出引入了锐化)。

除以temp的操作称为锐化(sharping),减去中心的操作称为中心化(centering),两个操作叠加是为了避免模式崩溃(无论哪个图像网络输出softmax后始终是某一项很大或始终接近均匀分布)。锐化能放大分布中某一个值减小其他值,中心化能促使分布更接近均匀分布,两个相反的操作相互作用使得模式崩溃得以避免。
⚠️ 图像特征输出mask=0的部分不计算损失,也就是说该项损失是希望学生网络能够借助教师网络的指导通过非mask部分预测出被mask的部分。 [ CLS ] [\text{CLS}] [CLS]对应的损失则是希望网络能够捕捉图像中的高层语义信息。

  1. 之后更新中心center1center2,两个center均用下式更新:

center = center_momentum * center + (1 - center_momentum) * batch_center
其中,center_momentum=0.9,batch_center是当前批次所有全局视图经教师网络输出的均值( [ CLS ] [\text{CLS}] [CLS]输出的均值更新center1,图像特征输出的均值更新center2)。
其实这个操作就是指数移动平均,一般公式为 b = λ b + ( 1 − λ ) a b=\lambda b+(1-\lambda)a b=λb+(1λ)a,简单来说就是用另外一个参数更新自己,但是保留自己的一部分。

  1. 根据3中的损失更新学生网络,教师网络不用损失更新,而是用指数移动平均更新,见下式:

θ t = λ θ t + ( 1 − λ ) θ s \theta_{t}=\lambda\theta_{t}+(1-\lambda)\theta_{s} θt=λθt+(1λ)θs
其中, λ \lambda λ在训练时是遵循cosine schedule,从0.996到1变化。即用学生网络更新教师网络,但保留教师网络的一部分。
⚠️ 因教师网络的 [ CLS ] [\text{CLS}] [CLS]和图像特征共用映射头,所以只需要用上式更新 [ CLS ] [\text{CLS}] [CLS]对应的映射头。

伪代码如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聊点基础---Java和.NET开发技术异同全方位分析

1. C#语言基础 1.1 C#语法概览 欢迎来到C#的世界!对于刚从Java转过来的开发者来说,你会发现C#和Java有很多相似之处,但C#也有其独特的魅力和强大之处。让我们一起来探索C#的基本语法,并比较一下与Java的异同。 程序结构 C#程序…

从零开始学习cartographer源码 | 番外:如何在wsl内使用clion阅读cartographer源码

从零开始学习cartographer源码 | 番外:如何在wsl内使用clion阅读cartographer源码 安装WSL2及Clion安装WSL2-Ubuntu20.04安装Clion安装ROS 安装Cartographer一键安装Cartographer 在Clion打开cartographer工程安装gdb手动创建CMakeLists.txt打开项目配置wsl工具链配…

CV07_深度学习模块之间的缝合教学(2)--维度转换

教学(1):链接 1.1 预备知识 问题:假如说我们使用的模型张量是三维的,但是我们要缝合的模块是四维的,应该怎么办? 方法:pytorch中常用的函数:(1)view函数(2…

【LeetCode 链表合集】

文章目录 1. LeetCode 206 反转链表2. NC40 链表相加 1. LeetCode 206 反转链表 题目链接🔗 解题思路: 🔍 🐧创建一个新的节点,使用链表头插的方法; 2. NC40 链表相加 题目链接🔗 解题思路…

如何用STM32实现modbus-RTU?

Modbus RTU是一种广泛应用于工业自动化领域的通信协议,基于主从架构,通过串行通信进行数据传输。本文将详细介绍Modbus RTU协议的基本原理,并提供在STM32微控制器上实现Modbus RTU通信的完整代码示例。 1. Modbus RTU协议概述 Modbus RTU的定义和特点 Modbus RTU(Remote Te…

mysql的窗口函数

一、窗口函数 1.1 什么是窗口函数 窗口函数&#xff0c;也叫OLAP函数&#xff08;Online Analytical Processing&#xff0c;联机分析处理&#xff09;&#xff0c;可以对数据库进行实时分析处理&#xff0c;窗口函数的基本语法如下&#xff1a; <窗口函数> over (part…

Web前端开发

1. 介绍 本文将覆盖Web前端开发的方方面面&#xff0c;包括HTML、CSS、JavaScript三大基础知识&#xff0c;vue3框架以及项目实战&#xff0c;帮助读者从零开始掌握前端开发。 2. Web前端开发基础 2.1 HTML5 2.1.1 什么是HTML5 HTML&#xff08;HyperText Markup Language…

【深海王国】初中生也能画的电路板?手把手教你制作第一个PCB电路板(2)

Hi~ (o^^o)♪, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~ 辛苦工作的你今天也辛苦啦(/≧ω) 今天大都督将继续为大家带来系列——初中生也能画的电路板&#xff0c;帮你一周内快速入门PCB设计&#xff0c;手把手教你从元器件库添加、电路原理图绘制、PCB布局设计…

SparkStreaming--scala

文章目录 第1关&#xff1a;QueueStream代码 第2关&#xff1a;File Streams代码 第1关&#xff1a;QueueStream 任务描述 本关任务&#xff1a;编写一个清洗QueueStream数据的SparkStreaming程序。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.如何使用S…

【07】分布式事务解决方案

1、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中&#xff0c;一个事务由一组SQL语句组成。事务应该具有ACID四个特性&#xff1a;原子性、一致性、隔离性、持久性。任何事务机制在实现时&#xff0c;都应该考虑事务…

mac生成.dmg压缩镜像文件

mac生成.dmg压缩镜像文件 背景准备内容步骤1&#xff0c;找一个文件夹2&#xff0c;制作application替身1&#xff0c;终端方式2&#xff0c;黄金右手方式 3&#xff0c;.app文件放入文件夹4&#xff0c;制作.dmg压缩镜像文件5&#xff0c;安装.dmg 总结 背景 为绕开App Store…

纯css实现语音播报动画效果

先来看看效果图 黑色以下代码 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAYCAYAAAAF6fiUAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAO8SURBVGiB1ZlPaBxVHMe/v7fbkmUZErRs9/1moUtYBBfxklZR8aYg5KAgvcT25MFDvUhPTaGnHoKIlOpJ0VsPUvAgKNjSS0EPAVGKya…

防火墙综合实验之NAT和智能选路

目录 前言&#xff1a; 一、实验题目 二、实验操作 需求一 需求二 需求三 需求四、需求五 需求六 需求七 ​编辑 需求八 需求九 需求十 需求十一 三、需求测试 前言&#xff1a; 本篇文章是延续上一篇文章&#xff0c;简单来说就是防火墙实验的完善和延续&#…

Zabbix6.0监控Freeswitch状态

一、前提环境说明 1、最终实现Freeswitch监控指标信息&#xff1a; 2、环境需求&#xff1a; &#xff08;1&#xff09;需要使用Zabbix6.0及以上 &#xff08;2&#xff09;需要使用zabbix_agent2 二、实现步骤 1、zabbix_agent2添加监控键值 cat /etc/zabbix/conf.d/fr…

唯众物联网综合实训台 物联网实验室建设方案

物联网综合实训装置 物联网工程应用综合实训台是我公司针对职业院校物联网行业综合技能型人才培养&#xff0c;综合运用传感器技术、RFID技术、接口控制技术、无线传感网技术、Android应用开发等&#xff0c;配合实训台上的433M无线通信设备、ZigBee节点、射频设备、控制设备、…

CoT-SC论文速读

1.论文速读 本文提出了一个重要的Decoder策略为&#xff1a;“Self-Consistency”,并将其用在CoT的Prompt工作中。 该策略作用&#xff1a;让LLM在处理复杂问题时&#xff0c;让他尝试多个推理路径&#xff0c;每一个推理路径都是一次CoT&#xff08;Chain of Thought&#x…

解决回溯算法之切割问题(leetcode--分割回文串)

文章目录 1.问题描述2.做题思路(关键是画出对于的二叉树图)3.代码实现 1.问题描述 2.做题思路(关键是画出对于的二叉树图) 1.思考从起始串的分割方案, 有a ,aa, aab三种方式 2.————————————剩余ab,b,空&#xff08;接下来对ab,b同样的方式进行分割&#xff09; 3.…

【Linux】centos7安装PHP7.4报错:libzip版本过低

问题描述 configure: error: Package requirements (libzip > 0.11 libzip ! 1.3.1 libzip ! 1.7.0) were not met: checking for libzip > 0.11 libzip ! 1.3.1 libzip ! 1.7.0... no configure: error: Package requirements (libzip > 0.11 libzip ! 1.3.1 libzi…

星辰计划02-独特视角的spring动态代理

承接上一文 动态代理 &#xff0c;这里探究spring 动态代理 会话1&#xff1a;spring动态代理 quick start &#x1f467;哥哥&#xff0c;哥哥&#xff0c;spring 怎么去搞动态代理的呢&#x1f468; 来来来&#xff0c;听我细细来说 quick start通过Spring的 ProxyFactory…

【高中数学/幂函数】比较a=2^0.3,b=3^0.2,c=7^0.1的大小

【问题】 比较a2^0.3,b3^0.2,c7^0.1的大小 【解答】 a2^0.32^3/10(2^3)^1/108^1/10 b3^0.23^2/10(3^2)^1/109^1/10 c7^0.17^1/10 由于yx^1/10在x正半轴是增函数&#xff0c;底数大的得数就大。 因为9>8>7,所以b>a>c 【图像】 在图像上绘出曲线yx^1/10&…