Vision Transformer学习了什么-WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION
WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION
文章地址
代码地址
摘要
视觉转换器( Vision Transformers,ViTs )正在迅速成为计算机视觉的事实上的架构,但我们对它们为什么工作和学习什么知之甚少。虽然现有研究对卷积神经网络的机制进行了可视化分析,但对ViT的类似探索仍然具有挑战性。在本文中,我们首先解决在ViT上执行可视化的障碍。在这些解决方案的辅助下,我们观察到用语言模型监督(例如, CLIP)训练的ViT中的神经元是由语义概念而不是视觉特征激活的。我们还探索了ViT和CNN之间的潜在差异,我们发现Transformer和它们的卷积对应物一样检测图像背景特征,但它们的预测对高频信息的依赖要小得多。另一方面,两种建筑类型在特征从早期的抽象模式到后期的具体对象的过程中表现出相似的特征。此外,我们表明ViT在除最后一层之外的所有层中都保持空间信息。与以前的工作不同,我们表明最后一层最有可能丢弃空间信息,表现为一个学习的全局池化操作。最后,我们对包括DeiT、CoaT、ConViT、PiT、Swin和Twin在内的多种ViT变体进行大规模可视化,以验证我们方法的有效性。
介绍
实验发现
(1)通过剖析和可视化Transformer架构中的内部表示,我们发现patch tokens在除最后一个注意力块之外的所有层中都保留了空间信息。ViTs的最后一层学习类似于平均池化的token-mixing操作,使得分类头在摄取随机token而不是CLS token时表现出相当的准确率。
(2)在探讨了空间信息的作用后,我们深入探究了视觉通道和卷积神经网络的行为差异。在执行激活最大化可视化时,我们注意到ViTs比CNNs持续生成更高质量的图像背景。因此,我们尝试在推理过程中掩盖图像前景,发现当仅暴露于图像背景时,ViTs始终优于CNNs。这些发现支持Transformer模型从图像中提取多个源的信息,在分布外泛化和对抗鲁棒性上表现出优越的性能的观察。此外,卷积神经网络对图像中的高频纹理信息依赖较大。相比之下,我们发现ViTs即使在从输入中移除高频内容时也表现良好。
(3)虽然只有视觉的模型包含与不同物理对象和形状相对应的简单特征,但我们发现CLIP中的语言监督会导致响应复杂抽象概念的神经元。这包括响应与词性(如修饰语、形容词和介词)相关的视觉特征的神经元,响应广泛视觉场景的"音乐"神经元,甚至响应抽象的发病率概念的"死亡神经元"。
贡献
(1)我们观察到,当将标准的特征可视化方法应用于基于Transformer的模型的相对低维组件,如keys,queries,或者values时,会出现不可解释和对抗的行为。然而,将这些工具应用于position-wise feedforward层的相对高维特征,结果是成功的和信息丰富的可视化。我们对包括ViTs、DeiT、CoaT、ConViT、PiT、Swin和Twin在内的多种基于变压器的视觉模型进行大规模可视化,以验证我们方法的有效性。
(2)我们表明,针对ViT特征的patch-wise激活模式本质上类似于显著图,突出了给定特征所关注的图像区域。这种行为即使在相对较深的层中也持续存在,表明模型保留了块之间的位置关系,而不是将它们用作全局信息存储。
(3)我们比较了ViTs和CNNs的行为,发现ViTs更好地利用了背景信息,对高频、纹理属性的依赖较小。这两种类型的网络在更深的层次上逐步建立更复杂的表示,并最终包含负责检测不同对象的特征。
(4)我们研究了CLIP的自然语言监督对ViTs提取特征类型的影响。我们发现,CLIP训练的模型包含了各种特征,这些特征明显适合于检测与字幕文本对应的图像成分,如介词、形容词和概念范畴。
实验
实验思路
技术路线:基于在像素空间基于梯度做优化,主要目的是观察输入和 feature map 的关系。
优化问题是:


其中:ak表示对x进行增强操作,k表示第几次增强;TV表示正则项,让像素空间更锐化
主体思路:从k次增强的图像中找到Lmain损失最大的,Lmain损失其实就是将这个通道的特征图的所有位置相加,里面的特征向量f是一个通道d上的所有元素的堆叠,其中l表示是第几层,p表示patch。
可视化结果
Query,key和value的可视化结果不好,但是全连接层有更好的可视化结果,因为它向量大小为4倍d,表示更高维度。

解释:我们发现可视化的前馈特征明显比其他层更具有可解释性。我们将其他层可视化的困难归因于ViTs将大量信息打包成仅有768个特征的特性。
ViT空间信息的保留:layer 5有明显的空间信息(黑色部分),last layer就很平均了。如下图:

ViT的某些通道是由背景激活的,也有空间信息。图(a)的左边是识别草和雪,右边的激活图是由背景块产生的,如下图:


说明:对于每个图像三元组,顶部的可视化显示了我们方法的结果(优化结果),左下角的图像是验证/训练集中最活跃的图像(跟我们方法的结果最接近的图像),右下角的图像显示了激活模式(激活结果,白色的激活效果更强)。可视化结果表明,ViTs与CNNs的相似之处在于,当我们从浅层特征到深层特征的过程中,ViTs表现出从纹理到零件到物体的特征递进。L5这些表示的是层数。
结论
为了剖析视觉转换器的内部工作原理,我们引入了一个基于优化的特征可视化框架。然后,我们确定了ViT的哪些组件最适合产生可解释的图像,发现前馈层的高维内部投影是合适的,而自注意力的键、查询和值特征则不适合。
将该框架应用于上述特征,我们观察到ViTs在除最后一层外的所有层中都保留了patch的空间信息,表明网络从头开始学习空间关系。我们进一步表明,最后一个注意力层中定位信息的突然消失是由类似于平均池化的学习到的token混合行为造成的。
通过比较CNNs和ViTs时,我们发现ViTs更好地利用了背景信息,并且在仅暴露于图像背景时,ViTs能够做出远优于CNNs的预测,尽管ViTs对高频信息的丢失并不像CNNs那样敏感。我们还得出结论,这两种架构有一个共同的属性,即较早的层学习纹理属性,而较深的层学习高级对象特征或抽象概念。最后,我们表明,经过语言模型监督训练的ViTs学习到更多的语义和概念特征,而不是像典型的分类器那样学习对象特定的视觉特征。
感悟
学到了很多之前不知道的,至少不是很玄学了,主要是:
- ViT对高频信息不是很敏感
- ViT可以利用背景信息
- ViT跟CNN相同,低层特征还是纹理,高层特征就是体现对象特征了
- ViT的低维特征不好解释
- ViT中除了Transformer的最后一层外其他都保留了位置信息。
相关文章:
Vision Transformer学习了什么-WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION
WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION 文章地址 代码地址 摘要 视觉转换器( Vision Transformers,ViTs )正在迅速成为计算机视觉的事实上的架构,但我们对它们为什么工作和学习什么知之甚少。虽然现有研究对卷积神经网络的机制进…...
一种全新的图像滤波理论的实验(三)
一、前言 2023年02月22日,我发布了滤波后,为针对异常的白色和黑色像素进行处理的实验,本次发布基于上下文处理的方案的实验,目的是通过基于加权概率模型滤波后,在逆滤波时直接修复大量的白色和黑色的异常像素…...
CV——day79 读论文:基于小目标检测的扩展特征金字塔网络
Extended Feature Pyramid Network for Small Object DetectionI. INTRODUCTIONII. RELATED WORKA. 深层物体探测器B. 跨尺度特征C. 目标检测中的超分辨率III. OUR APPROACHA. 扩展特征金字塔网络B. 特征纹理传输C. 交叉分辨蒸馏IV. EXPERIMENTSA. Experimental Settings1&…...
智能家居项目(五)测试串口功能
目录 一、写一个单独测试串口的demo 二、直接运行上一篇智能家居的代码 一、写一个单独测试串口的demo 1、TTL串口与树莓派的连接方式 (1)TTL的RXD和TXD针脚连接到树莓的TXD和RXD上(T–>R R–>T),交叉连&…...
2023年全国最新道路运输从业人员精选真题及答案7
百分百题库提供道路运输安全员考试试题、道路运输从业人员考试预测题、道路安全员考试真题、道路运输从业人员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 71.根据《中华人民共和国安全生产法》,生产经营单位…...
python的所有知识点(含讲解),不看就亏死了
目录 简介 特点 搭建开发环境 版本 hello world 注释 文件类型 变量 常量 数据类型 运算符和表达式 控制语句 数组相关 函数相关 字符串相关 文件处理 对象和类,注:不是那个对象!!!!&…...
【Servlet篇】Response对象详细解读
文章目录Response 继承体系Response 设置响应数据设置响应行数据设置响应头数据设置响应体数据Response 重定向Response 响应字符数据Response 响应字节数据Response 继承体系 前面说到,我们使用 Request 对象来获取请求数据,使用 Response 对象来设置响…...
SAP FICO期初开账存货导入尾差
一、问题 1.AFS物料网格级别库存导入先除再乘有尾差: 旧系统数据迁移自两个系统:一个管理数量账(网格级别),一个管理金额账(物料级别) 2.MB52分工厂与MB5L分工厂统计差异: M…...
微信商城小程序怎么做_分享实体店做微信商城小程序制作步骤
各行各业都在用微商城小程序开店,不管是餐饮店还是便利店,还是五金店。都是可以利用微信小程序开一个线上店铺。实现线上跟线下店铺更加全面的结合。维护好自己的老客户。让您的客户给您拉新,带来新客户。小程序经过这几年的快速发展和不断升…...
【moment.js】时间格式化插件
Moment.js 用于在JavaScript中解析,验证,操作和显示日期和时间。是一款在项目中使用频率极高的时间格式化工具,Ant Design Vue 组件中就是使用它来处理时间的。 安装 npm install moment --save # npm yarn add moment # Ya…...
微信小程序开发【壹】
随手拍拍💁♂️📷 日期: 2023.02.24 地点: 杭州 介绍: 2023.02.24上午十点,路过学院的教学楼时🏢,突然看见了一团粉红色。走进一看是一排梅花🌸,赶在它们凋零前,将它们定格在我的相…...
2 k-近邻算法
0 问题引入 想一想:下面图片中有三种豆,其中三颗豆品种未知,如何判断他们类型? 1 KNN概述 1.1 KNN场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作片:打斗次数更多爱情…...
深入探究文件I/O
目录Linux 系统如何管理文件静态文件与inode文件打开时的状态返回错误处理与errnostrerror 函数perror 函数exit、_exit、_Exit_exit()和_Exit()函数exit()函数空洞文件概念实验测试O_APPEND 和O_TRUNC 标志O_TRUNC 标志O_APPEND 标志多次打开同一个文件验证一些现象多次打开同…...
【LeetCode】剑指 Offer(9)
目录 题目:剑指 Offer 25. 合并两个排序的链表 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 26. 树的子结构 - 力扣&#…...
python 遍历可迭代对象的方法
python 遍历可迭代对象的方法 可迭代(iterable) 迭代(遍历)就是按照某种顺序逐个访问对象中的每一项。 Python中有很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等,这些对象都是可迭代的,被称为可迭代对象。 可以将可迭…...
【数据库】 第11章 并发控制
第11章 并发控制 事务 事务:(从微观角度,或者从DBMS角度)是数据库管理系统提供的控制数 据操作的一种手段,通过这一手段,应用程序员将一系列的数据库操作组合 在一起作为一个整体进行操作和控制,以便数据库管理系统能…...
Python3-数字
Python3 数字(Number) Python 数字数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。 Python 支持三种不同的数值类型: 整型(int) - 通常被称为是整型或整数,是正或负整数&#x…...
(四十一)Read Committed隔离级别是如何基于ReadView机制实现的?
今天我们来给大家讲一下,基于之前我们说的ReadView机制是如何实现Read Committed隔离级别的,那么当然了,首先就是要先做一些简单的回顾。所谓的Read Committed隔离级别,我们可以用骚气一点的名字,就是简称为 RC 隔离级…...
React echarts封装
做大屏的时候经常会遇到 echarts 展示,下面展示在 React (^18.2.0) 中对 echarts (^5.4.0) 的简单封装。 文章首发于https://blog.fxss.work/react/echarts封装.html,样例查看 echarts 封装使用 props 说…...
【C语言进阶】了解计算机的程序环境和预处理过程 掌握计算机预处理操作
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C语言进阶 🎯长路漫漫浩浩,万事皆有期待 文章目录1.编译与链接1.1 程…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
