面向图像分类的视觉Transformer

news2024/9/23 23:30:58

        一种面向对象分类的视觉Transformer,即ViT。该模型避免了卷积带来的归纳偏置,弥补了卷积神经网络在超长周期建模的不足。

1、DeiT(data-efficient image transformer)采用了知识蒸馏策略(将大型模型的复杂知识(包括其中的泛化能力和细节知识)传递给小型模型,使得小型模型能够在有限的数据集上达到与大型模型相当的性能),使得视觉Transformer能够学习归纳偏差(机器学习算法在学习过程中出现的不准确和不稳定的情况);

2、Swin Transformer将自注意力的计算范围限制在不重叠的局部窗口内,并通过移位窗口操作实现局部窗口间的交互。

3、DINO(DETR with imporoved denoising anchor boxes)结合自监督学习和Transformer,使得可学习的特征更具解释性(DETR指的是目标检测算法)


ViT是首个针对图像分类任务提出的纯Transformer的模型,并在超大规模数据集上取得了超越CNN的效果。

ViT的三个模块

嵌入层

嵌入层由图像块嵌入、可学习的嵌入和位置嵌入组成,旨在将输入的三维图像数据转换为Transformer要求输入的一维token序列。

  1. 图像块嵌入将输入的二维图像进行切分并转化为Transformer可处理的一维向量,即图像块token。 
  2. 可学习的嵌入使用一个可学习的类别向量与图像块token通过自注意力层实现对图像特征的信息交互,用于存储学习到的分类向量,即class token。
  3. 位置嵌入通过位置编码添加图像块序列的位置信息,以解决Transformer因自注意力机制无法保留图像空间信息的问题。

位置编码与图像块嵌入及可学习嵌入按元素拼接得到一个完整的类别嵌入输入至Transformer编码器中

Transformer编码器

Transformer编码器负责提取输入图像的全局特征,由L(ViT中为12)个相同的层堆叠而成。每个层由多头注意力层多层感知机两个子层组成。

将类别嵌入向量输入编码器中后,Transformer编码器通过自注意力层实现对图像特征的信息交互或聚合。并将class token送入MLP Head进行分类预测。

MLP Head

其负责最终的多分类任务。以全局特征为输入,通过计算编码器输入的类别嵌入向量与图片标签损失反向约束网络完成分类预测。

传统领域的图像分类任务

表征能力

尽管基于注意力机制的ViT善于捕捉全局特征,但它在特征提取方面仍存在一些挑战。

一方面,ViT在特征提取过程中始终保持图像块token的尺度不变,不具备构建多尺度特征之间交互的能力;

另一方面,ViT将每个图像块视作一个单元token,仅捕捉token间的关联关系,不具备捕捉图像块内部信息的能力。

Transformer采用绝对位置编码无法实现对不同长度的序列的表达不变性。

多尺度表征能力

多尺度特征在CNN中得到了广泛的应用。

通过利用多尺度信息,模型可以有效地融合高分辨率特征和高语义特征,从而实现对不同尺度目标的有效学习。

多尺度是指深度网络中有n个conv_kernel可以将一张图片的维度扩展至长n,这就把一个高为1的长方体扩展为一个高为n的长方体,在这里提取的信息就与原图像中提取的信息尺度不同,后面经过不同比例的下采样后,每个比例内获得的信息统称为"多尺度"信息

多尺度嵌入

主要通过对不同尺度的图像 / 特征图进行早融合和晚融合,进而捕捉输入图像的多尺度信息。

早融合方式

通过下采样等一系列的操作,使得模型在嵌入之前就已经获得了多尺度图像信息。

CrossFormer使用单分支网络,首先通过使用不同大小的卷积核对原始图像块进行采样,然后对采样得到的多尺度图像进行投影和拼接等嵌入融合操作,进而得到一个包含多尺度信息的token,然后将其输入到Transformer编码器。

晚融合方式

通过构建多分支网络将图像 / 特征图进行不同尺度的划分,然后将其独立输入到参数互不共享的Transformer编码其中提取不同尺度的特征,最后使用不同的特征融合策略融合各分支的特征。

CrossViT

将输入图像划分为两种不同尺度的图像块序列,构造了双分支Transformer编码器网络分别生成不同尺度的初始特征,最后通过交叉注意力融合模块实现尺度间的特征融合。

MPViT

通过多路径结构对特征图并行使用不同大小卷积核的卷积操作,进而生成相同序列长度的不同尺度的序列。不同尺度的序列通过多条路径并行输入到Transformer编码器中,并使用拼接等特征融合操作聚合所得的特征,从而在同一特征级别实现精细和粗略的特征表示。

现有的多尺度嵌入方式主要通过融合多尺度图像或多尺度特征进而捕捉输入图像的多尺度信息 

多尺度注意力机制

在ViT中,图像块token具有固定且相等的感受野,并且模型单层内的注意力机制作用在相同尺度的token上,导致Transformer无法捕获不同尺度的特征。

多尺度注意力机制使注意力在图像 / 特征图的作用范围不同,捕捉从大到小、从全局到局部的特征,最终通过特征融合操作融合各分支的特征。

Cross Former  提出长短距离注意力( long short distance attention, LSDA )机制捕捉从大到小、从全局到局部的特征。 短距离注意力对特征图在局部范围内(G × G )提取局部特征,即小尺度特征,建立相邻图像块间的依赖关系;长距离注意力在全局范围内通过固定步长 I 对特征图进行采样,建立较远图像块间的依赖关系,进而获取全局特征,即大尺度特 征。CrossFormer  可以同时获取不同尺度的特征,进而提升模型的表征能力。实验证明,该模型在降低计算成本的同时获得了多尺度特征的建模能力,在图像分类任务中取得了具有竞争力的结果 。
DW-ViT
DW- ViT dynamic window visual transformer 提出动态多尺度窗口策略来探索窗口设置对模型性能的影响。在 DW-ViT 中,通过将不同大小的窗口分配给窗口多头注意力机制的不同注意力头来获得多尺度信息。然后,通过对多尺度窗口分支赋予不同的权重,实现多尺度信息的动态融合。
VSA
从图像数据中学习自适应窗口配置。基于每个默认窗口内的token,VSA运用窗口回归模块来预测目标窗口的大小和位置。通过对每个注意力头独立采用VSA,构建一个长期依赖模型能够从多种窗口中捕获丰富的上下文信息。
注意力层通过下采样改变注意力图的尺寸

结构融合方法将Transformer和CNN的模块融合为全新的网络结构。HRViT将HRNet和视觉Transformer相结合,通过Transformer与CNN相结合的多分支架构,HRViT可以并行提取多尺度特征并进行多次融合,生成具有丰富语义信息的多分辨率表示,增强了视觉Transformer在学习语义丰富且空间精确的多尺度表示方面的能力。

特征融合方式是在特征级别实现CNN特征和Transformer特征之间的双向桥接来实现融合。采用并行的CNN和Transformer分支,通过CNN分支中池化操作实现特征的多尺度操作。

局部信息捕捉能力

ViT在中小型数据集中的性能较差,原因是ViT更偏向于在全局关联关系间建模。在建模过程中,会不可避免地存在丢失重要局部信息、特征丰富度有限等现象

嵌入局部化

图像块在嵌入阶段便可以获得局部信息捕捉能力。

现有文献中,学者们主要通过聚合或重叠相邻图像块的方式捕捉相邻图像块间的关系

聚合相邻图像块的方式:

递归地将相邻的图像块token聚合为一个token,以模拟周围图像块的局部结构信息。 

在非重叠图像块上递归重叠,采用自底向上方式分层逐步集成,以促进相邻图像块之间的信息耦合与通信,从而捕捉图像块内和相邻图像块间的信息。

重叠相邻图像块的方式:

将图像块的感受野进行逐层扩增,在不改变图像块尺寸的情况下捕捉相邻图像块的信息

PVT v2通过重叠相邻图像块的方式改进PvT,逐层地扩展图像块的感受野。具体的,该模型将输入图像边缘填充为0(填充大小为S-1),之后使用步长S和卷积核大小2S-1的卷积将图像块与其相邻的图像块进行结合,实现重叠图像块的操作。

 局部注意力机制

将自注意力的计算范围限制在局部区域内一定会导致全局建模能力的减弱。

基于隐式全局交互的局部注意力

将输入图像分为若干个局部区域,将注意力的计算限制在局部范围内,通过各类操作隐式地捕获局部区域间的关系,实现全局建模能力。

Swin Transformer提出了基于窗口的局部注意力机制,并通过层间窗口移动完成跨窗口的信息交互。在n层通过窗口多头自注意力完成局部窗口范围内的自注意计算,缓解了内存和计算量较大的问题;在n+1层通过偏移操作使得窗口移位,实现跨窗口的交互,避免上下文建模的不足。

基于窗口扩增操作的局部自注意力,提出了具有缩放属性的Transformer模型HaloNet;每一层中,在局部图像块内计算查询向量Q,在图像块扩展后得范围内计算键值对向量K和V,使得一次计算获得了局部以及其相邻图像块边缘处的信息,有效平衡计算复杂度和特征提取能力。

正则化的HaloNet比ResNet的性能增益更多,但对于ResNet中重要的架构化模块却没有显著改进

基于显式全局交互的局部自注意力

通过串行并行的网络结构直接有效地构建局部和全局的关系

Twins-SVT首先将特征图划分为m*n个子窗口,然后通过串联后的全局注意力机制实现不同子窗口间的通信,在降低计算成本的同时实现局部和全局的建模。

RegionViT采用双分支网络得到尺度不同的区域token和局部token。首先利用区域注意力提取所有区域token中的信息,然后通过局部自注意力完成区域token和与之相关的局部token之间的信息交互。

Focal Transformer则通过多分支网络提取当前token不同感受野的信息,更加有效地捕获局部和全局的信息。

上述模型将自注意力限制在局部范围内,通过串行或并行的网络结构直接有效地构建局部和全局的关系。

与CNN相结合

结构融合方法将Transformer和CNN的模块融合为全新的网络结构。Next-ViT和LocalViT将卷积模块添加到Transformer编码器中实现对局部信息的提取。Mobile-ViT将Transformer视为卷积层嵌入到卷积神经网络中,实现局部信息和全局信息的交互。

特征融合方式通过双向桥接的方式在特征级别实现CNN特征和Transformer特征的融合。

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

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

相关文章

工厂数据分析系统用这个开源库准没错

ScottPlot是一款简单易用、高度定制、性能卓越的.NET绘图库,支持跨平台操作。除提供标准图表类型外,还支持交互式操作,呈现生动的数据展示。在工厂数字化系统中,可用于生产数据可视化、设备监测和质量控制。无论用于科学研究、数据…

蓝桥杯 2022 省A 选数异或

一种比较无脑暴力点的方法&#xff0c;时间复杂度是(nm)。 (注意的优先级比^高&#xff0c;记得加括号(a[i]^a[j])x&#xff09; #include <iostream> #include <vector> #include <bits/stdc.h> // 包含一些 C 标准库中未包含的特定实现的函数的头文件 usi…

ThreadLocal和Synchronized的区别

目录 背景过程ThreadLocal什么是ThreadLocal&#xff1f;既然都是保证线程访问的安全性&#xff0c;那么和Synchronized区别是什么呢&#xff1f;ThreadLocal的使用TheadLocal使用场景原理高并发场景下ThreadLocal会造成内存泄漏吗&#xff1f;什么原因导致&#xff1f;如何避免…

JavaScript 权威指南第七版(GPT 重译)(四)

第九章&#xff1a;类 JavaScript 对象在第六章中有所涉及。该章将每个对象视为一组独特的属性&#xff0c;与其他对象不同。然而&#xff0c;通常有必要定义一种共享某些属性的对象类。类的成员或实例具有自己的属性来保存或定义它们的状态&#xff0c;但它们还具有定义其行为…

蓝桥杯省三保底代码——数显+按键功能实现

目录 前言 一、为什么能保底省三 二、数显模块的实现 1.数码管显示​编辑 1&#xff09;断码表 2&#xff09;位选 3&#xff09;段选 4&#xff09;扫描 2.菜单 三、按键功能的实现 1.按键扫描 2.菜单切换 四、完整代码演示 五、结语 前言 上一期介绍全家桶时&…

C语言分支循环语句详解

分支和循环语句是什么 在我们写程序的时候&#xff0c;总会遇到想一直循环执行某种语句的时候&#xff0c;这时候我们就要使用一种语句叫循环语句&#xff0c;或者带一些判断条件的语句&#xff0c;在C语言中提供了像这些的循环语句和分支语句 if else 语句 这是一种判断语句…

Model-Free Q-Learning for the Tracking Problem of Linear Discrete-Time Systems

Model-Free Q-Learning for the Tracking Problem of Linear Discrete-Time Systems&#xff0c;2024&#xff0c; Chun Li , Jinliang Ding , Senior Member, IEEE, Frank L. Lewis , Life Fellow, IEEE, and Tianyou Chai , Life Fellow, IEEE 对完全未知动力学的线性离散时…

远程桌面连接弹出“出现身份验证错误,要求的函数不受支持”解决办法

windows远程桌面连接,出现如图所示“出现身份验证错误&#xff0c;要求的函数不受支持”错误&#xff0c;无法连接。 解决办法&#xff1a; 打开本地组策略编辑器&#xff0c;按winr组合键输入gpedit.msc命令打开。 选择“计算机配置”--“管理模板”--“系统”--“凭据分配”…

OpenHarmony实战开发-Web组件的使用

介绍 本篇Codelab使用ArkTS语言实现一个简单的免登录过程&#xff0c;向大家介绍基本的cookie管理操作。主要包含以下功能&#xff1a; 获取指定url对应的cookie的值。设置cookie。清除所有cookie。免登录访问账户中心。 原理说明 本应用旨在说明Web组件中cookie的管理操作。…

【正点原子FreeRTOS学习笔记】————(7)任务调度

这里写目录标题 一、开启任务调度器&#xff08;熟悉&#xff09;二、启动第一个任务&#xff08;熟悉&#xff09;2.1&#xff0c;prvStartFirstTask () /* 开启第一个任务 */2.2&#xff0c;vPortSVCHandler () /* SVC中断服务函数 */ 三、任务切换&#xff08;掌握&#xff…

Deconstructing Denoising Diffusion Models for Self-Supervised Learning解读(超详细)

论文题目&#xff1a;Deconstructing Denoising Diffusion Models for Self-Supervised Learning 原文链接&#xff1a;https://arxiv.org/html/2401.14404v1 本文是对何凯明老师的新作进行的详细解读&#xff0c;其中穿插了一些思考&#xff0c;将从以下四个方面对这篇工作进…

波奇学Linux:http协议

2 个简单预备知识 https://www.baidu.com/ -域名-字符串-域名解析--ip地址 http请求和响应 格式画出来&#xff0c;两个工具见一见 https协议绑定端口号443 http协议绑定端口号 80 url 统一资源定位符 所有网络的资源都可以用唯一的一个字符串标识&#xff0c;并且可以获取…

八种顺序读写函数的介绍(fput/getc;fput/gets;fscanf,fprintf;fwrite,fread)

一&#xff1a;读写的含义的解释&#xff1a; 读&#xff08;读出&#xff09;&#xff1a;即从文件里面读出数据----------->和scanf从键盘里面读出数据类似 写&#xff08;写入&#xff09;&#xff1a;即把数据写入文件里面----------->和printf把数据写入到屏幕上类…

13.Java能干什么?以及Java的三大平台

文章目录 一、JavaSE二、JavaME三、JavaEE JAVA从95年以来&#xff0c;已经问世了20多年了&#xff0c;可能比部分同学的年龄还大。 Java到底能干嘛呢&#xff0c;此时就需要讲到Java的三大平台&#xff0c;其实也就是它的三个分类&#xff1a;JavaSE、JavaME、JavaEE。 一、Ja…

PDFgear:一款免费的PDF编辑、格式转化软件

日常办公中&#xff0c;很多朋友都会接触到PDF文件。把文件转化成PDF是保留文件格式、防范别人修改常用的方法。但是很多人会为PDF文件的生成、压缩、编辑和格式转化而头疼&#xff0c;还有人为了能把PDF转化成Word还购买了不少付费的软件。 为了解决大家这个痛点&#xff0c;…

ES6 学习(三)-- es特性

文章目录 1. Symbol1.1 使用Symbol 作为对象属性名1.2 使用Symbol 作为常量 2. Iterator 迭代器2.1 for...of循环2.2 原生默认具备Interator 接口的对象2.3 给对象添加Iterator 迭代器2.4 ... 解构赋值 3. Set 结构3.1 初识 Set3.2 Set 实例属性和方法3.3 遍历3.4 相关面试题 4…

如何着手写一个自己的网站管理客户端

WebHole 项目地址 https://gitee.com/yiyefangzhou24/web-hole 是什么&#xff1f;能干什么&#xff1f; WebHole是一款网站管理软件&#xff0c;类似但不同于菜刀、冰蝎、蚁剑&#xff0c;能通过C/S的工作模式&#xff0c;方便的管理服务器的文件、数据库&#xff0c;并执…

Redis命令介绍

一、redis启动&#xff1a; 本地启动&#xff1a;redis-cli 远程启动&#xff1a;redis-cli -h host -p port -a password Redis 连接命令 1 AUTH password 验证密码是否正确 2 ECHO message 打印字符串 3 PING 查看服务是否运行 4 QUIT 关闭当前连接 5 SELECT index 切换…

VS2022 使用ClaudiaIDE设置自定义图片背景

ClaudiaIDE的下载 第一步&#xff0c;如下图所示&#xff0c;点击&#xff1a;扩展——管理扩展。 第二步&#xff0c;如下图所示&#xff0c;点击&#xff1a;联机——右上角输入ClaudiaIDE搜索——点击下载。 下载后关闭所有VS窗口&#xff0c;然后等待弹出一个安装窗口&…

商密测评必知:国密算法的重要性与应用

国密算法是指由中国国家密码管理局发布的密码算法标准&#xff0c;旨在保障国家信息安全。目前&#xff0c;国家密码管理局已发布了一系列国产商用密码标准算法&#xff0c;包括SM1&#xff08;SCB2&#xff09;、SM2、SM3、SM4、SM7、SM9以及祖冲之密码算法&#xff08;ZUC)等…