ICLR 2024 | Meta AI提出ViT寄存器结构,巧妙消除大型ViT中的伪影以提高性能

9a5215cc415d49a0bddc2dd80e2f72bd.png

论文题目:Vision Transformers Need Registers
论文链接:https://arxiv.org/abs/2309.16588

视觉Transformer(ViT)目前已替代CNN成为研究者们首选的视觉表示backbone,尤其是一些基于监督学习或自监督学习预训练的ViT,可以在诸多下游视觉任务上表现出卓越的性能。但目前针对ViT中间特征图的可解释研究相对较少,本文介绍一篇Meta与INRIA(法国国家信息与自动化研究院)合作完成的论文,目前该文已被国际表征学习顶级会议ICLR 2024录用。本文的研究人员们对ViT网络特征图中出现的伪影进行了研究,并且认为这些伪影对应于模型表征图像背景区域中的高范数token,模型在推理阶段时丢弃了这些token中包含的局部信息。为此,本文提出了一个简单有效的寄存器方法(Registers)来将这些伪影token进一步送入到模型中进行内部运算以提高性能。作者通过一系列实验证明,Registers可以解决监督或自监督ViT丢失局部信息的问题,提高其在密集型下游视觉任务上的综合性能,同时产生更加平滑的特征图和注意力图。

01. 引言

本文的动机从目前流行的DINO[1],DINOv2[2]等ViT模型的内部表征出发。DINO算法目前已被证明可以生成包含图像语义布局的特征图,尤其是其最后一个注意力层可以生成可解释的注意力图。基于这些特性,目前已有研究通过收集注意力图中的语义信息在缺少明确监督的情况下检测目标。DINOv2是DINO的后续升级版本,提供了处理密集型预测任务的能力,但DINOv2在生成注意力方面的效果却不尽如人意。下图左侧第三列展示了DINOv2模型生成的注意力图,可以看到,其中出现了大量的噪声伪影。

4b96bc4b9f5b48febb467e2cb56fc16c.png

此外,作者也在其他监督学习训练的ViT中发现了类似的伪影现象,如下图中的DeiT、CLIP等,本文对这些伪影的出现原因和固有性质进行了研究,通过测量发现,这些伪影相比其他token的范数大约高10倍,并且其数量仅占token总序列的一小部分(2%)

cc2ced152bbb44bdb37f8a964f6601b7.png

随后作者使用简单的线性模型对这些伪影token进行评估,作者观察到,这些token保留其在图像中的原始位置的信息较少,这表明模型在推理过程中丢弃了这些token中包含的局部信息。此外,在这些伪影token上学习图像分类器比在其他token上学习图像分类器的准确性要高得多,这表明它们可能也包含有关图像的全局信息。因而作者引入了一种寄存器方法(Registers)来将这些token附加到ViT的输入序列中,而独立于输入图像。经过Registers优化后的ViT模型,其产生的token序列中,伪影token已经完全消失,同时模型在下游密集预测任务中的性能得到提高,并且生成的特征图明显更加平滑。

02. 本文方法

2.1 DINOv2局部特征中伪影

为了分析DINOv2特征图中的伪影,作者首先从定量分析的角度对伪影token进行测量,如下图所示,作者观察到,伪影token与其他token之间的一个重要区别是它们的特征范数值(norms)差异很大。下图右侧分别展示了给定参考图像的DINO和DINOv2 模型的局部特征范数情况。可以看到,伪影token的范数值远高于其他token,且伪影token特征范数的分布是双峰的,因而作者在文章的后续部分将范数值超过150的token均认定为伪影token。

c70f1de7078649b284abfdad7958ca57.png

c70f1de7078649b284abfdad7958ca57.png

2.2 伪影通常出现在大型ViT模型的训练过程中

除了定量分析,作者还对DINOv2训练期间出现伪影token的条件进行了观察,分析结果如下图所示。这些token主要出现在ViT的40层左右(下图a),此外,当观察训练过程中token范数的分布时,作者发现这些伪影token仅在训练的后期出现(下图b)。当作者更进一步分析模型不同参数规模(Tiny、Small、Base、Large、Huge 和 Giant)对伪影token的影响时发现,只有较大的三个模型才会出现伪影(下图c)

ad7d4ef2ef794871b1e7a74a42879e09.png

2.3 伪影token包含的局部信息和全局信息

为了探索伪影token中所含信息的性质,作者设计了两个不同的实验任务:位置预测和像素重建。对于每一个任务,作者将token嵌入作为输入训练一个线性模型,并测量该模型的性能。

c8e97ef2b5b64ba2926ed1e3b30b900f.png

(1)位置预测

作者首先训练了一个线性模型来预测图像中每个token的位置,并测量其准确性。作者观察到伪影token的准确度比其他token低得多(如上表所示),这表明它们包含的有关其在图像中位置的局部信息较少

(2)像素重建

对于像素重建任务,作者训练了一个线性模型来根据token嵌入预测图像的像素值,并测量该模型的准确性。从上表的实验结果可以观察到,伪影token的准确率同样比其他token低得多。这表明伪影token比其他token包含更少的像素信息

除了伪影token的局部信息情况,作者还在标准图像表示基准上对其进行了评估,用于分析其中的全局信息。对于分类数据集中的每个图像,作者都直接提取DINOv2的token嵌入,并送入到一个逻辑回归分类器中预测图像类别,结果如下表所示。可以观察到伪影token比其他token具有更高的准确度。这表明伪影token相比其他token包含更多的全局信息

9dc65f7da78b4e709ab0c20541cee55d.png

2.4 寄存器Registers设计

经过以上分析,作者认为,出现在大型ViT训练过程中的伪影token实际上包含了输入图像的一部分信息。将其直接丢弃可能会导致模型在密集预测任务上的性能下降。因此作者提出了一个简洁的寄存器(Registers)模块,通过明确地将伪影token添加到序列中,这些token被设计为可学习性的参数,类似于[CLS]token。实际操作过程如下图所示,这些伪影token被标记为[REG]token,随后附加在图像patch和[CLS]token之后一起送入到transformer中进行后续的运算。

b16af4d46e7a4ebf9694d05520716409.png

03. 实验效果

本文的实验部分选取了三种不同的ViT架构:DeiT-III、OpenCLIP和DINOv2,由于Registers本质上只是一个简单的架构修改方案,因此其可以灵活的应用在多种ViT模型上。其中DeiT-III是监督学习训练的代表模型,使用ImageNet-1k 和 ImageNet-22k进行预训练。OpenCLIP是一种文本监督学习模型,其遵循原始的CLIP模型,仅在文本-图像对齐数据集上进行训练。DINOv2是本文研究的重点模型,该模型是一种基于自监督学习的视觉特征表示模型

下图展示了Registers应用在上述三种模型上的效果,对于每个模型,作者测量了起输出token的特征范数,可以看到,当加入Registers进行训练时,模型输出的伪影token数量将会大幅度减少。

f59b724b7f4944e0996b8a2af713e45f.png

此外,作者还对Registers进行了消融研究,即检查Registers的使用不会影响原始特征的表示质量,作者选择了ImageNet分类、ADE20k图像分割和NYUd单目深度估计三个常规视觉任务进行实验,结果如下表(a)所示。可以发现,当使用Registers进行训练时,模型并不会损失性能,甚至还可以提高性能。为了完整起见,作者还进一步提供了 OpenCLIP 在 ImageNet 上的零样本分类性能,如下表(b)所示,该性能保持不变。

9364608c46ee4aa6a61197650edc6d97.png

Registers结构的一个关键超参数是加入到原始序列中的token数量,作者对该数量对模型局部特征和下游性能的影响进行了研究,结果如下图所示。作者分别使用数量为0、1、2、4、8 和 16 的寄存器训练DINOv2模型。下图上半部分的结果表明,随着Registers数量的增加,模型注意力图中的伪影区域逐渐减小。图中下半部分展示了Registers数量改变对下游任务性能的影响情况,对于密集型预测任务(图像分割和单目深度估计)而言,Registers的数量并不是越多越好。而对于图像分类任务来说,使用更多的Registers,模型的性能会一直提升。

81775e28c86740bcbbbca3f45e13899d.png

04. 总结

在这项工作中,作者对 DINOv2 模型特征图中的伪影进行了详尽的研究,并发现这种现象存在于多个现有的流行ViT模型中。作者提供了一种简单的检测伪影的方法,即通过测量token的特征范数来实现。通过研究这些token的局部位置和全局特征信息,作者发现,这些token对于模型性能损失存在一定的影响,并提出了一种简单的寄存器方案(Registers)来将这些token附加到输入序列中。通过实验表明,这种方法完全消除了ViT特征图中的伪影,并且提高了模型在下游密集预测等任务上的性能。

参考

[1] Mathilde Caron, Hugo Touvron, Ishan Misra, Herv´e J´egou, Julien Mairal, Piotr Bojanowski, and Armand Joulin. Emerging properties in self-supervised vision transformers. In ICCV, 2021.

[2] Maxime Oquab, Timoth´ee Darcet, Th´eo Moutakanni, Huy Vo, Marc Szafraniec, Vasil Khalidov, Pierre Fernandez, Daniel Haziza, Francisco Massa, Alaaeldin El-Nouby, et al. Dinov2: Learning robust visual features without supervision. arXiv preprint arXiv:2304.07193, 2023.


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区 

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

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

相关文章

Python3虚拟环境之virtualenv

virtualenv 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.7。所有第三方的包都会被pip安装到Python3的site-packages目录下。 如果要同时开发多个应用程序,这些应用程序都会共用一个Python,就是安装在系统的Pyt…

【力扣100】【好题】322.零钱兑换 || 01背包完全背包

添加链接描述 思路: dp[j]数组表示的是在金额达到 j 的时候所需要的最小硬币数金额:背包容量,每个硬币的个数都为1:背包中物品的价值,硬币面额:物品重量dp[j]min(dp[j],dp[j-coin]1) class Solution:def …

【c语言 】数组入门

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

Redhat Linux(RHEL) - Primavera P6 EPPM 安装及分享

引言 继上一期发布的Oracle Linux版环境发布之后,近日我又制作了基于Redhat Linux 的P6虚拟机环境,同样里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primavera销售代表…

什么是农业四情监测设备?

【TH-Q2】智慧农业四情监测设备是一种高科技的农田监测工具,旨在实时监测和管理农田中的土壤墒情、作物生长、病虫害以及气象条件。具体来说,它主要包括以下组成部分: 气象站:用于监测气温、湿度、风速等气象数据,为农…

proxy配置代理

通过代理配置可以实现以下几个作用 跨域请求处理:当前端应用运行在一个域名下,而需要请求的 API 接口位于另一个域名下时,由于浏览器的同源策略限制,会导致跨域请求失败。通过代理配置,可以将前端应用的请求先发送到同…

基于鹦鹉优化算法(Parrot optimizer,PO)的无人机三维路径规划(提供MATLAB代码)

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行…

2024最新最全【网络安全】学习路线,零基础入门到精通

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

Linux安装Mysql8.0

本案例为linux安装mysql8.0.27 若非新服务器可先查看是否已安装mysql,若已安装先进行卸载。 1、Linux查看glibc版本信息,下载相应的MYSQL ldd --version2、mysql下载 https://downloads.mysql.com/archives/community/ 3、安装 linux打开目录&#xf…

python数据类型 -- 元组Tuple

你好, 我是木木, 目前正在做两件事   1. 沉淀自己的专业知识   2. 探索了解各种副业项目,同时将探索过程进行分享,帮助自己以及更多朋友找到副业, 做好副业 文末有惊喜 在Python中,元组(tuple)是一种不可变序列类型&…

(二十四)Flask之flask-session组件

目录: 每篇前言:Flask-session 每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于…

qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

qt-C笔记之使用Cmake来组织和构建QWidget工程项目 —— 杭州 2024-03-10 code review! 文章目录 qt-C笔记之使用Cmake来组织和构建QWidget工程项目1.运行2.文件结构3.CMakeLists.txt4.main.cpp5.widget.h6.widget.cpp7.widget.ui 1.运行 2.文件结构 3.CMakeLists.txt 代码 c…

批量文本处理:轻松提取与整理大量文本内容

在数字时代,内容创作已成为企业与个人传递信息、展示品牌形象的重要手段。然而,面对海量的文本信息,如何高效地提取关键内容,并将其转化为引人注目的标题和宣传软文,成为了摆在我们面前的一大挑战。 第一步&#xff0…

电脑桌面图标变大了怎么恢复?5种简单方法帮你恢复正常

在使用电脑的过程中,有时候我们可能会遇到桌面图标变得异常大的情况。这种问题不仅影响了桌面的整洁度,也可能会影响我们的操作体验。电脑桌面图标变大了怎么恢复?如果你也遇到了这种情况,不用担心,本文将为你介绍五种…

【C++从0到王者】第五十二站:跳表

文章目录 一、什么是跳表二、skiplist的效率三、skiplist的实现 一、什么是跳表 skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。 skiplist,…

c++的STL(3)-- deque容器

目录 deque概述 deque的内存模型 注意: 1. deque的默认构造(和vector类似) 代码: 2. deque的有参构造(和vector类似) 代码: 3. deque容器在首部和尾部添加或者元素 代码: 相关知识点: 4. deque容器的元素个数 (和vector类似) 代码: 5. deque在指定位置插入元素(和…

Linux搭建ftp服务

使用yum 进行安装 # 在线安装FTP yum install -y vsftpd 安装完成后查看ftp状态 # 查看ftp状态 systemctl status vsftpd.service # 启动ftp状态 重启:restart,停止:stop,开机自启:enable,关闭开机自启&…

【小黑送书—第十二期】>>一本书讲透Elasticsearch:原理、进阶与工程实践(文末送书)

Elasticsearch 是一种强大的搜索和分析引擎,被广泛用于各种应用中,以其强大的全文搜索能力而著称。 不过,在日常管理 Elasticsearch 时,我们经常需要对索引进行保护,以防止数据被意外修改或删除,特别是在进…

图片二维码能长期扫码展示吗?在线图片快速生码的文字教学

很多人在制作图片二维码的时候,比较关注的问题一个是扫码次数,另一个是二维码有效期,那么满足这两个需求的图片二维码该如何制作呢?想要制作不限制扫码次数并且长期有效的图片二维码,大家可以通过图片二维码生成器的功…

分库分表浅析原理

数据库存放数据大了,查询等操作就会存在瓶颈,怎么办? 1. 如果是单张表数据大了,可以在原有库上新建几张表table_0、table_1、table_2、.....table_n 写程序对数据进行分表: --这里提供一种一种分表策略,这里只需维护…