图片mask任务和自监督损失函数MAE、Beit、MarkFeature、DINO、DINOv2

news2024/10/12 18:20:45

MAE (Masked Autoencoders Are Scalable Vision Learners)

来自Masked Autoencoders Are Scalable Vision Learners,Our loss function computes the mean squared error (MSE) between the reconstructed and original images in the pixel space. 几个关键点:

  • 需要Encoder和Decoder,encoder负责抽取高维表示,decoder则负责细粒度还原
  • 比较大的mask比例,甚至达到了75%

Beit

在这里插入图片描述
图像块和 ViT 原文所描述的并无二致,而对于重建目标,BEiT 并没有使用原始的像素,而是通过一个 “image tokenizer” 进行离散化,遵循的是 dVAE 的思路,在 BEiT 预训练之前,先构建 “tokenizer” 和 “decoder” 进行 dVAE 的训练,并构建视觉词汇表。在 BEiT 中是直接采用 Zero-shot text-to-image generation 文章开源的代码进行训练。

对于预训练的主干网络,则是标准的 ViT,每个图像块会被线性投射为对应的 embedding 向量,同时再加上标准的可学习的绝对位置编码。而与之不同的是,BEiT 采用了 Blockwise Masking 的方式,对大约 40% 的图像块进行了掩码操作,而预训练的目标便是期望能够正确预测掩码图像块的视觉标记,从而获得可以提取图像特征向量的编码器。
部分摘自https://zhuanlan.zhihu.com/p/475952825

Masked Feature Prediction for Self-Supervised Visual Pre-Training

MaskFeat 算法在整体思路上依然是重建掩码图像块的思路,只不过它的重建目标从原始像素值变成了 HOG 特征描述器。通过作者的实验,在五种不同类型的特征描述中,HOG 可使网络获得最好的结果,且训练更加高效,算法总览图如下:
在这里插入图片描述

DINO(self-DIstillation with NO labels)

来自于Emerging Properties in Self-Supervised Vision Transformers,DINO 本质上是一种自监督学习方法,通过无监督的方式学习图像特征表示,可用于计算机视觉的其他下游任务,例如分类和检测等。该方法的核心思想是使用一种叫做自蒸馏的方法,即将一个学生模型的表示与一个动量化的教师模型的表示进行比较,以学习出更好的特征表示。
在这里插入图片描述
然而,这种学生和教师网络均输出相同 embeddings 的情况容易出现模式崩塌(mode collapse)的现象(在自监督学习中,mode collapse 是指网络的学习过程中出现了多样性减少的现象。具体来说,当网络学习到一组特征表示时,往往会出现多个输入数据映射到相同的特征表示的情况,这就是所谓的模式崩塌。这种现象通常是由于网络在优化过程中陷入了局部最优解,只能考虑到一部分数据的特征表示,而忽略了其它数据样本的模式和特征,从而导致了多样性缺失的现象,因此会对模型的鲁棒性产生很大的负面影响。)。在《Momentum Contrast for Unsupervised Visual Representation Learning》一文中提出了一种解决方案,即应用“动量教师”(momentum tearcher)模型,可以简单地理解为就是教师的模型不是基于反向传播更新的,而是再对学生模型进行梯度回传后,在通过指数移动平均(Exponentially Weighted Average, EWA),直接将学生网络学习到的模型参数更新给教师网络,换句话就是教师网络的权重更新自学生网络。
在 DINO 论文中,还有两个不得不提的点便是 Centering 和 Sharpening,这是用于防止模式崩塌的两种有效方式。

  • Centering:首先,教师模型的输出经过一个 EMA 的操作,从原始激活值中减去得到一个新的结果。简单来说,可以表述为 l o g i t s = l o g i t s − l o g i t s m e a n logits=logits-logits_{mean} logits=logitslogitsmean。这个操作的目的是使得激活值有时候是正的(当它们高于平均值时),有时候是负的(当它们低于平均值时)。由于 softmax 函数在处理负数时会给出较小的概率值,而在处理正数时会给出较大的概率值,因此这种操作能够防止任何一个特征占据统治地位,因为平均值会在值的范围中间。
  • Sharpening: 这种技巧通过在 softmax 函数中加入一个 temperature 参数,来强制让模型将概率分布更加尖锐化。由于小差异会被夸大,这会防止所有激活值都是相同的,因为小的差异也会被放大。这个技巧和中心化操作搭配使用,可以使得激活值不断变化,从而引导学生模型更好地了解哪些特征应该变得更加强大。

部分摘自https://mp.weixin.qq.com/s/EGCAX51FTyZrO7-e4y9Egg

DINOv2

来自DINOv2: Learning Robust Visual Features
without Supervision,摘自原文We learn our features with a discriminative self-supervised method that can be seen as a combination of DINO and iBOT losses with the centering of SwAV。简单点理解就是,这种自监督方法是由多个损失函数组成的,包括 DINO(Transformers之间的局部信息最大化),iBOT(特征之间的相似度最小化)和 SwAV(样本中心化)。同时,添加了一个正则项,以使特征在特征空间中更加均匀地分布。此外,DINOv2 中还进行了一个短暂的高分辨率训练阶段,以进一步提高特征的鲁棒性。

Image-level objective

这个方法被称为图像级目标,是一种用于学习特征的判别式自监督方法。其基本思想是将来自同一图像不同裁剪的视图作为正样本,将来自不同图像的视图作为负样本,使用交叉熵损失函数来衡量这些视图之间的相似性和差异性,从而训练一个学生网络。另外,我们使用指数移动平均方法构建一个教师网络,其参数是过去迭代的加权平均值,以减少训练中的波动。最终,我们使用这两个网络的类令牌特征作为特征表示。

Patch-level objective

这个方法是另一种用于学习特征的自监督方法,称为 Patch 级目标。在这种方法中,作者将输入的一些 Patch 随机地遮盖掉,只将未被遮盖的 Patch 提供给教师网络,然后使用交叉熵损失函数来衡量学生和教师网络在每个被遮盖的 Patch 上的特征表示的相似性和差异性,从而训练学生网络。同时,我们可以将 Patch 级别的损失与图像级别的损失相结合,以便在训练过程中兼顾整体和局部特征。

Untying head weights between both objectives

此方法是针对前两个方法的实验发现进行的改进。在前两个方法中,图像级别和Patch级别的损失函数都共享了一个网络的参数(权重)。但是经过实验观察发现,当两个级别的损失函数共享同样的参数时,模型在Patch级别会欠拟合,在图像级别会过拟合。因此,我们可以考虑将这些参数(权重)解绑,使得模型在两个级别都能够更好地学习特征表示。这个方法的优化目标是在两个级别都得到最佳的结果。

Sinkhorn-Knopp centering

这个方法是对 DINO 和 iBot 两种方法中的一些步骤进行改进。在原来的方法中,教师模型中的 softmax-centering 步骤在某些情况下可能导致不稳定性,因此本文采用了 Sinkhorn-Knopp(SK)批量归一化方法来代替。这个方法的核心思想是通过正则化来使学生和教师网络在特征表示上更加接近。在这个方法中,作者使用了 3 次 Sinkhorn-Knopp 算法迭代来实现归一化。对于学生网络,则仍然使用 softmax 归一化。通过这个方法,我们可以更好地训练学生模型,并获得更好的性能。

KoLeo regularizer

KoLeo regularizer 是一种正则化方法,它通过计算特征向量之间的差异来确保它们在批次内均匀分布。具体来说,它使用了一种名为 Kozachenko-Leonenko 差分熵估计的技术,这是一种估计随机样本密度的方法。在计算这个正则化器之前,特征向量会被进行“2-范数归一化”(将每个向量的所有元素平方和开根号并除以该和),以确保它们具有相同的长度。这个正则化器的作用是减少特征向量之间的差异,从而使它们在整个批次内均匀分布。

Adapting the resolution

这一步主要是涉及在预训练的最后一段时间内,将图像的分辨率提高到 518×518 ,便在下游任务中更好地处理像素级别的信息,例如分割或检测任务。高分辨率的图像通常需要更多的计算资源和存储空间,因此只在预训练的最后阶段使用这种方法,以减少时间和资源成本。

部分摘自https://zhuanlan.zhihu.com/p/623274167

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

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

相关文章

无涯教程-JavaScript - IMSUB函数

描述 IMSUB函数以x yi或x yj文本格式返回两个复数的差。减去复数时,实数和虚数系数分别相减,即从复数a bi中减去复数c di的方程为- (a bi)-(c in)(a-c)(b-d)我 语法 IMSUB (inumber1, inumber2)争论 Argument描述Required/OptionalInumber1The complex number from …

【C++】可变参数模板

2023年9月9日,周六下午 这个还是挺难学的,我学了好几天... 在这里我会举大量的示例程序,这样可以有一个更好的理解, 不定期更新。 目录 推荐文章: 示例程序一:拼接字符串 示例程序二:求整…

Python散点图

散点图 散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间…

基于Java+SpringBoot+Vue前后端分离农产品直卖平台设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

气膜建筑为什么被称为低碳环保建筑?

近年来,环保理念逐渐深入人心以及国家对于环境保护力度的加强,绿色建筑也得到了发展。其中,气膜建筑的建设更是进入了科技化、标准化与國际化发展时期,气膜建筑的使用能将建筑工程建设推向了一个新的高潮,使得公益性和…

业务架构图是什么?用什么软件制作比较好?

​一 业务架构图是什么? 1.1业务架构图简介 业务架构图是一种可视化表达方法,用于描述一个企业或产品的业务活动、流程、系统、数据和关系。它将业务流程、职能、数据流动以及系统之间的交互关系可视化,帮助人们更好地理解业务运作的全…

Claude 2,它有 GPT-4 一些无法超越的能力

文章目录 场景1:处理长文本场景2:上传文件场景3:进行冗长的多轮对话场景4:我的提示词里涉及2021年9月之后的信息 场景1:处理长文本 和 ChatGPT 相比,Claude 2 最大的优势就是它高达 10 万的 Token 数量。要…

工程可以编译通过,但是Vscode依然有波浪线提示

前言 (1)我们在使用Vscode进行开发的时候,命名文件成功编译通过了,但是Vscode还是有波浪线的提示。 (2)其实成功编译通过就行,但是肯定还会存在一些强迫症患者,硬要消除这个报错。接…

Linux Ubuntu20.04深度学习环境快速配置命令记录

1、更新系统包 sudo apt-get updatesudo apt-get upgrade 2、安装显卡驱动 使用apt方式安装驱动,多数情况不容易成功, 使用一下方法更佳: 1.查看合适显卡的驱动版本 ubuntu-drivers devices NVIDIA GeForce 驱动程序 - N 卡驱动 | NVI…

Qt案例-编译阿里云OSS对象存储C++ SDK源码,并进行简单下载,上传数据,显示进度等相关功能

项目中用到了阿里云OSS对象存储来保存数据,由于以前没用过这个库,就下载了C版的sdk源码重新编译了一次,并使用Qt调用;不得不说这可能是我编译源码最轻松的一次。 目录标题 简述OSS图形化管理工具编译源码Qt 添加引用常用 Endpoint…

JVM类加载和双亲委派机制

当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把类加载到JVM,本文主要说明类加载机制和其具体实现双亲委派模式。 一、类加载机制 类加载过程: 类加载的过程是将类的字节码加载到内存中的过程,主要包括…

基于SSM的物流管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Python判断多个文件夹的文件夹名是否包含“分公司”或“营销中心”怎么处理?(方法一)...

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 晓畅军事,试用于昔日。 大家好,我是皮皮。 一、前言 前几天在Python最强王者群【哎呦喂 是豆子~】问了一个Python自…

ASUS华硕天选4笔记本FX507VU FX707V原厂Win11系统

自带网卡、显卡、声卡等所有驱动、出厂主题壁纸LOGO、Office办公软件、华硕电脑管家、奥创控制中心等预装程序 链接:https://pan.baidu.com/s/1KwFu-39x7UJsFKN4BQMoBQ?pwdf5xa 提取码:f5xa

基于Java+SpringBoot+Vue前后端分离库存管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

《Graph of Thoughts: Solving Elaborate Problems with Large Language Models》中文翻译

《Graph of Thoughts: Solving Elaborate Problems with Large Language Models》- 思维图:用大型语言模型解决复杂的问题 论文信息摘要1. 介绍2. 背景及符号2.1 语言模型和情境学习 3. GoT 框架3.1 推理过程3.2 思想转变3.3 评分和排名思路 4. 系统架构及扩展性4.1…

深圳汇报片制作需要优先了解哪些信息

在现代社会中,汇报片成为了一种重要的传媒形式,被广泛应用于各个领域。无论是在企业、政府机构还是学术界,制作一部高质量的汇报片都是非常重要的。而要制作出一部成功的汇报片,一个合理的制作结构是至关重要的。 一个典型的汇报…

数据结构:线性表之-单向链表(无头)

目录 什么是单向链表 顺序表和链表的区别和联系 顺序表: 链表: 链表表示(单项)和实现 1.1 链表的概念及结构 1.2单链表(无头)的实现 所用文件 将有以下功能: 链表定义 创建新链表元素 尾插 头插 尾删 头删 查找-给一个节点的…

H.264编码及AAC编码基础

文章目录 前言一、视频编码的实现原理1、视频编码技术的基本原理2、视频编码技术的实现方法3、运动估计和补偿①、块(Block)与宏块(MicroBlock)②、I 帧、P 帧、B 帧的小结③、I 帧(帧内编码)④、如何衡量和…

软件测试中的43个功能测试点总结

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下: 1、页面链接检查: 每一个链接是否都有对应的页面,并且页面之间切换正…