HSN:微调预训练ViT用于目标检测和语义分割,华南理工和阿里巴巴联合提出

news2024/11/26 17:51:38

今天跟大家分享华南理工大学和阿里巴巴联合提出的将ViT模型用于下游任务的高效微调方法HSN,该方法在迁移学习、目标检测、实例分割、语义分割等多个下游任务中表现优秀,性能接近甚至在某些任务上超越全参数微调。

  • 论文标题:Hierarchical Side Tuning for Vision Transformers
  • 机构:华南理工大学、阿里巴巴
  • 论文地址:https://arxiv.org/pdf/2310.05393.pdf
  • 代码地址(即将开源):https://github.com/AFeng-x/HST#hierarchical-side-tuning-for-vision-transformers
  • 关键词:Vision Transformer、迁移学习、目标检测、实例分割、语义分割

1.动机

近年来,大规模的Vision Transformer(简称ViT)在多个任务中表现优秀,很多研究人员尝试利用ViT中的预训练知识提升下游任务的性能。然而,快速增长的模型规模使得在开发下游任务时直接微调预训练模型变得不切实际。 Parameter-efficient transfer learning(简称PETL)方法通过选择预训练模型的参数子集或在主干中引入有限数量的可学习参数,同时保持大部分原始参数不变,来解决该问题。

尽管PETL方法取得了重大成功,但主要是为识别任务而设计的。当将其用于密集预测任务时(比如目标检测和分割),与完全的微调相比其性能仍有很大的差距,这可能是由于密集预测任务与分类任务有本质上的不同。为了解决这一性能差距,作者提出了一种更通用的PETL方法Hierarchical Side-Tuning(简称HST),作者构建了Hierarchical Side Network(简称HSN),能产生金字塔式的多尺度输出,使得整个模型能适应不同的任务。

2.Hierarchical Side-Tuning(HST)

2.1 HST总体结构

HST的总体结构如下图所示:

上图中蓝色部分为普通的ViT,其权重被冻结;绿色部分为Adaptive Feature Bridge(简称AFB),用于桥接和预处理中间特征;粉色部分是Hierarchical Side Network(简称HSN),由1个Conv Stem和 L L L个Side Block组成。

对于ViT部分,输入图像首先通过patch embedding,然后进入 L L L个Transformer encoder;对于HSN部分,输入图像通过Conv Stem,从输入图像中引入局部空间上下文信息。HSN由4个stage组成,下采样率分别为 { 4 , 8 , 16 , 32 } \{4,8,16,32\} {4,8,16,32},输出4种不同尺度的特征。每个Transformer encoder都有1个对应的Side Block,信息流从backbone流向Side Block。

2.2 Meta Token

与其他prompt-based的微调方法不同,作者令prompt的数量为1,并将其称作Meta Token(简称MetaT),其结构如下图所示:

作者并没有丢弃prompt对应的输出特征,而是将其与输出的patch token一起作为Adaptive Feature Bridge的输入。由于MetaT的输出特征分布与patch token的分布有差异,这会影响HSN的性能,因此要微调Transformer中的Layer Normalization(简称LN)层,以改变特征的均值和方差(即改变了特征分布),有助于保持同一样本中不同特征之间的相对值。下图展示了MetaT的输出特征与ViT中patch token之间的余弦相似度,显然,通过微调LN层,MetaT的输出与patch token的向量方向能更好地对齐,从而有效地利用MetaT的输出特征。

2.3 Adaptive Feature Bridge(AFB)

由于ViT的输出特征与HSN中的特征形状不同,因此引入了Adaptive Feature Bridge(AFB),AFB包括2个重要部分:双分支分离(Dual-Branch Separation)和权重共享(Linear Weight Sharing),如下图所示:

Dual-Branch Separation

MetaT的输出和patch token先经过线性层进行维度变换,线性层的输出分为2个分支,patch token进行全局平均池化输出1个token,将其称作GlobalT,GlobalT与MetaT拼接得到 F m g i \mathcal{F}_{m g}^i Fmgi。通过双线性差值改变patch token的形状,使其与HSN中对应stage的特征形状一致。整体流程表示如下:

F m g i = [ W j F MetaT  i , AvgPooling ⁡ ( W j F patch  i ) ] ; F f g i = T ( W j F v i t i ) \mathcal{F}_{m g}^i=\left[W_j \mathcal{F}_{\text {MetaT }}^i, \operatorname{AvgPooling}\left(W_j \mathcal{F}_{\text {patch }}^i\right)\right] ; \mathcal{F}_{f g}^i=\mathcal{T}\left(W_j \mathcal{F}_{v i t}^i\right) Fmgi=[WjFMetaT i,AvgPooling(WjFpatch i)];Ffgi=T(WjFviti)

上式中 i i i表示第 i i i个Vit block, W j W_j Wj表示第 j j j个stage中线性层的权重矩阵。

Linear Weight Sharing

同一个stage中的多个AFB共享线性层权重,以减少可学习参数;此外,这样能在同一个stage中实现特征间的信息交互,达到与使用多个线性层相当的效果。

2.4 Side Block

Side Block包含1个cross-attention层和1个Feed-Forward Network(简称FFN),其结构如下图所示。

Side Block对ViT的中间特征和多尺度特征进行建模,考虑到这两个输入分支的特点,作者通过不同的方法将它们引入到Side Block中。

Meta-Global Injection

将HSN输出的多尺度特征作为Query(记作 Q Q Q),使用meta-global token作为key(记作 K K K)和value(记作 V V V),cross-attention表示如下:

( ( Q h s n ) ( K m g ) T ) V m g = A V m g \left(\left(Q_{h s n}\right)\left(K_{m g}\right)^T\right) V_{m g}=A V_{m g} ((Qhsn)(Kmg)T)Vmg=AVmg

上式中 Q h s n ∈ R L × d Q_{h s n} \in \mathbb{R}^{L \times d} QhsnRL×d ( K m g ) T ∈ R d × M \left(K_{m g}\right)^T \in \mathbb{R}^{d \times M} (Kmg)TRd×M V m g ∈ R M × d V_{m g} \in \mathbb{R}^{M \times d} VmgRM×d L L L表示多尺度特征输入序列的长度, M M M表示meta-global token的长度, d d d表示特征维度。

将Meta-Global Injection的输出记作 F ^ h s n i \hat{F}_{h s n}^i F^hsni,可表示如下:

F ^ h s n i = F h s n i + CrossAttention ⁡ ( F h s n i , F m g i ) \hat{\mathcal{F}}_{h s n}^i=\mathcal{F}_{h s n}^i+\operatorname{CrossAttention}\left(\mathcal{F}_{h s n}^i, \mathcal{F}_{m g}^i\right) F^hsni=Fhsni+CrossAttention(Fhsni,Fmgi)

上式中 i i i表示HST和ViT的第 i i i个block。

Fine-Grained Injection

将Meta-Global Injection的输出 F ^ h s n i \hat{F}_{h s n}^i F^hsni F f g i F_{f g}^i Ffgi进行元素相加,然后使用FFN进行建模,表示如下:

F h s n i + 1 = F ^ h s n i + F f g i + FFN ⁡ ( F ^ h s n i + F f g i ) F_{h s n}^{i+1}=\hat{F}_{h s n}^i+F_{f g}^i+\operatorname{FFN}\left(\hat{F}_{h s n}^i+F_{f g}^i\right) Fhsni+1=F^hsni+Ffgi+FFN(F^hsni+Ffgi)

F h s n i + 1 F_{h s n}^{i+1} Fhsni+1作为下一个Side Block的输入。

3.实验

3.1 实验设置

3.2 实验结果

(1)图像分类

(2)目标检测和实例分割

(3)语义分割


更多消融实验及分析请查看原文。

4.总结

作者提出了一种新的参数高效的迁移学习方法Hierarchical Side-Tuning(HST),可训练的side network利用了backbone的中间特征,并生成了用于进行预测的多尺度特性。通过实验表明,HST在不同的数据集和任务中表现优异,显著地减少了在密集预测任务中PETL与完全微调的性能差距。

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

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

相关文章

第六章:路由交换机及操作系统

路由交换机及操作系统 一、路由器与交换机的作用与特点1.路由器1.1 作用1.2 特点 2.交换机2.1 作用2.2 特点 二、H3C路由器与交换机介绍1. 路由器2. 交换机 三、 H3C网络设备操作系统Comware1. 介绍2. 特点![在这里插入图片描述](https://img-blog.csdnimg.cn/2b24103028654878…

玻璃生产过程中的窑内压力高精度恒定控制解决方案

摘要:在玻璃生产中对玻璃窑炉中窑压的要求极高,通常需要控制微正压4.7Pa(表压),偏差控制在0.3Pa,而窑炉压力还会受到众多因素的影响,所以实现高稳定性的熔窑压力控制具有很大难度,为…

Codeforces Round 903 (Div. 3)ABCDE

Codeforces Round 903 (Div. 3)ABCDE 目录 A. Dont Try to Count题目大意思路核心代码 B. Three Threadlets题目大意思路核心代码 C. Perfect Square题目大意思路核心代码 D. Divide and Equalize题目大意思路核心代码 E. Block Sequence题目大意思路核心代码 A. Don’t Try t…

【问题解决】【爬虫】抓包工具charles与pycharm发送https请求冲突问题

问题: 开启charles抓包,运行pycharm发送https请求报以下错误 解决: 修改python代码,发送请求时添加verify false,此时charles也能抓取到pycharm发送的请求 2. 关闭charles抓包,取消勾选window proxy

JVM第六讲:JVM 基础 - Java 内存模型引入

JVM 基础 - Java 内存模型引入 很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文是JVM第六讲,从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系, 为后面JMM详解, JVM 内存结构详解, Java 对象模型详…

uniapp封装loading 的动画动态加载

实现效果 html代码 <view class"loadBox" v-if"loading"><img :src"logo" class"logo"> </view> css代码 .loadBox {width: 180rpx;min-height: 180rpx;border-radius: 50%;display: flex;align-items: center;j…

最新版nacos 2.2.3服务注册与发现版本依赖问题

最新版nacos的注册服务时配置文件写的是对的&#xff0c;但就是在nacos web页面无法看见服务&#xff0c;此时你需要注意你的依赖是否正确 spring: application:name: orderservicecloud:nacos:discovery:server-addr: 122.51.115.127:8848父工程依赖&#xff1a;现在最新的s…

046:mapboxGL加载天地图路网图+标记(wmts方式)

第046个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载天地图路网图+标记(wmts方式)。瓦片中的url地址引用的是天地图的wmts的形式。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共99行)相关AP…

Ceph运维笔记

Ceph运维笔记 一、基本操作 ceph osd tree //查看所有osd情况 ceph -s //查看整体ceph情况 health_ok才是正常的 ceph osd out osd.1 //将osd.1踢出集群 ceph osd in osd.1 //将out的集群重新加入集群二、问题解决 1.执行ceph-deploy mon create-initial出错 e…

【Express】服务端渲染(模板引擎 EJS)

EJS&#xff08;Embedded JavaScript&#xff09;是一款流行的模板引擎&#xff0c;可以用于在Express中创建动态的HTML页面。它允许在HTML模板中嵌入JavaScript代码&#xff0c;并且能够生成基于数据的动态内容。 下面是一个详细的讲解和示例&#xff0c;演示如何在Express中…

第四章:IP基本原理

IP基本原理 一、IP的定义二、IP头部封装格式&#xff08;重点&#xff09;2.1 version 版本2.2 IHL 头部长度2.3 Type of service 服务类型2.4 Total length 数据包总长度2.5 identification 标识符2.6 Flags 标志2.7 Fragment offset 分片偏移2.9 Time to Live 生命周期2.10 P…

第五章:TCP和UDP基本原理

TCP和UDP基本原理 一、TCP/IP传输层的作用二、 端口1.范围2. 服务端3. 客户端4. 常见知名端口号4.1 TCP 80 HTTP4.2 TCP 20 21 FTP4.3 TCP 23 TELNET4.4 TCP 25 SMTP4.5 UDP 53 DNS4.6 TCP 443 HTTPS 三、 TCP原理1. TCP头部封装格式1.1 Source Port 源端口1.2 Destination Por…

LCR 095. 最长公共子序列(C语言+动态规划)

1. 题目 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08…

GTX312L比TSM12更具优势的智能门锁触摸芯片方案

韩国GreenChip&#xff08;绿芯&#xff09;GTX312L是一款高灵敏、超强抗干扰能力具有自动灵敏度校准的12通道电容传感器&#xff0c;电源电压范围为1.8V&#xff5e;5.0V&#xff0c;支持单键/多点触控&#xff1b;采用I2C通信协议&#xff1b;内部控制寄存器可以使用I2C读写接…

SpringMvc源码分析-请求流程(一)

SpringMvc源码分析-从前端到接口请求流程 SpringMvc执行流程 其实SpringMVC请求原理很简单&#xff1a;说白了就是用一个DispatcherServlet 封装了一个Servlet的调度中心&#xff0c; 由调度中心帮我们调用我们的处理方法&#xff1a;在这个过程中调度中心委托给各个组件执行具…

【Nginx32】Nginx学习:随机索引、真实IP处理与来源处理模块

Nginx学习&#xff1a;随机索引、真实IP处理与来源处理模块 完成了代理这个大模块的学习&#xff0c;我们继续其它 Nginx 中 HTTP 相关的模块学习。今天的内容都比较简单&#xff0c;不过最后的来源处理非常有用&#xff0c;可以帮我们解决外链问题。另外两个其实大家了解一下就…

登录中获取验证码的节流

一. 验证码框 <el-input placeholder"请输入验证码" prefix-icon"el-icon-lock" v-model"ruleForm.code"><el-button slot"suffix" :disabled"disabled" type"text" size"mini" click"ch…

树莓派玩转openwrt软路由:5.OpenWrt防火墙配置及SSH连接

1、SSH配置 打开System -> Administration&#xff0c;打开SSH Access将Interface配置成unspecified。 如果选中其他的接口表示仅在给定接口上侦听&#xff0c;如果未指定&#xff0c;则在所有接口上侦听。在未指定下&#xff0c;所有的接口均可通过SSH访问认证。 2、防火…

ideal远程Debug部署在服务器上的服务详解

ideal远程Debug部署在服务器上的服务详解 一 简介二 ideal配置步骤第一步&#xff1a;点击Edit Configurations选项添加远程连接第二步&#xff1a;配置Remote JVM debug参数第三步&#xff1a;服务的启动参数中添加第二步生成的命令并重新启动服务第四步&#xff1a;ideal启动…

联想电脑一键重装系统Win10操作方法

很多用户都会利用重装系统的方法&#xff0c;来解决系统崩溃、病毒感染等问题。但是&#xff0c;很多新手用户不知道联想电脑Win10系统重装的详细方法步骤&#xff0c;下面小编给大家详细介绍关于联想电脑Win10系统重装的操作方法&#xff0c;帮助大家轻松快速地完成系统的重装…