Vision Transformer学习了什么-WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION

news2024/9/23 19:26:54

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的最后一层外其他都保留了位置信息。

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

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

相关文章

LabVIEW控制DO通道输出一个精确定时的数字波形

LabVIEW控制DO通道输出一个精确定时的数字波形如何使用数据采集板卡的DO通道输出一个精确定时的数字波形?解答:产生一个数字波形首先需要创建一个布尔数组,把波形序列信息放到该布尔数组中,然后通过一个布尔数组至数字转换vi来产生数字波形。…

【C++】仿函数、lambda表达式、包装器

1.仿函数 仿函数是什么?仿函数就是类中的成员函数,这个成员函数可以让对象模仿函数调用的行为。 函数调用的行为:函数名(函数参数)C中可以让类实现:函数名(函数参数)调用函数 自己写一个仿函数: 重载()运算符 cla…

chatgpt的原理 第四部分

五、ChatGPT 终于说到了主角,能看到这里的,可以关注一下 JioNLP 公众号吗?我写的也够累的。 ChatGPT 模型上基本上和之前 GPT-3 都没有太大变化,主要变化的是训练策略变了,用上了强化学习。 强化学习 几年前&#xf…

【Linux驱动开发100问】如何编译Linux内核?

🥇今日学习目标:如何编译Linux内核? 🤵‍♂️ 创作者:JamesBin ⏰预计时间:10分钟 🎉个人主页:嵌入式悦翔园个人主页 🍁专栏介绍:Linux驱动开发100问 如何编译…

【论文笔记】Deep 3D-to-2D Watermarking == Google ==CVPR‘2022

Deep 3D-to-2D Watermarking: Embedding Messages in 3D Meshes and Extracting Them from 2D Renderings 本文工作:提出了一个端到端的框架来从2D渲染图像中提取水印信息,且对 不同光照和相机位姿 的渲染结果具有鲁棒性。 1.1 本文工作概述 核心贡献&…

metaRTC新增纯C版JSON支持

概述 JSON 是轻量级的文本数据交换格式,它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 metaRTC新版本新增了纯C版的JSON支…

操作系统权限提升(十五)之绕过UAC提权-基于白名单DLL劫持绕过UAC提权

系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权 操作系统权限提升(十四)之绕过UAC提权-基于白名单AutoElevate绕过UAC提权 注:阅读本编文章前,请先阅读系列文章,以…

pytorch学习日记之图片的简单卷积、池化

导入图片并转化为张量 import torch import torch.nn as nn import matplotlib.pyplot as plt import numpy as np from PIL import Image mymi Image.open("pic/123.png") # 读取图像转化为灰度图片转化为numpy数组 myimgray np.array(mymi.convert("L"…

GNURadio RTL-SDR之FM接收

环境配置与准备: PC操作系统: Windows10 64位系统。RTL-SDR: 包括射频主板和天线。Radioconda:GNURadio windows方案之一,安装radioconda-2023.02.24-Windows-x86_64,官方下载和操作指导: InstallingGR - GNU Radioht…

spring框架--全面详解(学习笔记)

目录 1.Spring是什么 2.Spring 框架特点 3.Spring体系结构 4.Spring开发环境搭建 5.spring中IOC和DI 6.Spring中bean的生命周期 7.Spring Bean作用域 8.spring注解开发 9.Spring框架中AOP(Aspect Oriented Programming) 10.AOP 实现分类 11.A…

并发编程之死锁问题介绍

一、本文概览 死锁问题在并发编程中是一个非常致命的问题,问题一旦产生,只能通过重启机器、修改代码来修复问题,下面我们通过一小段文章内容介绍下死锁以及如何死锁的预防 二、什么是死锁? 在介绍死锁之前,先来明确下什…

对象分配策略

对象创建后,究竟何去何从,对象在堆中又会经历哪些过程,本篇就会详细解释对象创建后直到对象被回收的整个过程。之前博主已经写过Minor GC、Major GC、Full GC的区别,而本篇也主要根据这几个GC开展。 对象回收过程流程如下图所示: 正常的对象生存过程&a…

NetSuite Saved Search中When Ordered By Field 与 Keep Dense_Rank辨析

今朝的题目是一个隐藏的宝藏话题,Saved Search中我们极少用的一个功能--When Ordered By Field和Keep Dense_Rank。 假如你碰到一个需求,要求是:“在销售历史中按照客户别,取最早交易日期的销售金额,以识别VIP客户”。…

QML Animation动画详解

1.Animation简介 Animation类型提供了四个属性: alwaysRunToEnd:该属性接收布尔类型的参数。该属性保存动画是否运行到完成才停止。当loops属性被设置时,这个属性是最有用的,因为动画将正常播放结束,但不会重新启动。…

PMP值得考吗?

第一,PMP的价值体现 1、PMP是管理岗位必考证书。 多数企业会选择优先录用持PMP证书的管理人才,PMP成为管理岗位的必考证书。PMP在很多外企和国内中大型企业非常受重视,中石油、中海油、华为等等都会给内部员工做培训。 这些机构对项目管理…

超简单 华为OD机试用Python实现 -【无向图染色问题 or 红黑图】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲无向图染色问题 or 红黑图题目描述输入描述输出描述说明示例一输入输出示例二输入输出Python 代码实现华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog…

Js高级API

Decorator装饰器 针对属性 / 方法的装饰器 // decorator 外部可以包装一个函数,函数可以带参数function Decorator (type) {/*** 这里是真正的decorator* description: 装饰的对象的描述对象* target:装饰的属性所述类的原型,不是实例后的类。如果装饰…

Python每日一练(20230226)

1. 合并列表中字典字段 如下两个列表,需要将oldList转化为newList,去掉相同字段的字典,并且去掉的参数里面的值要相加。 oldList [{0-0: 0, 0-1: 0, 0-2: 0, 0-3: 1972}, {3-3: 203, 3-2: 0, 3-1: 0, 3-0: 0}, {0-0: 0, 0-1: 0, 0-2: 0, 0…

Git ---- IDEA集成 GitHub

Git ---- IDEA集成 GitHub1. 设置 GitHub 账号2. 分享工程到 GitHub3. push 推送本地库到远程库4. pull 拉取远程库到本地库5. clone 克隆远程库到本地1. 设置 GitHub 账号 新版的 IDEA 选择之后会自动登录,就不需要设置 token 了。 如果是老版的 IDEA 的话&…

随想录二刷Day06——链表

文章目录链表6. 删除链表的倒数第 N 个结点7. 链表相交8. 环形链表 II链表 6. 删除链表的倒数第 N 个结点 19. 删除链表的倒数第 N 个结点 思路: 用双指针的方法,fast 和 slow 之间保持距离为 n,只需要遍历一次即可完成删除任务。 为了方便…