当前位置: 首页 > news >正文

网站建设与服务考试/nba赛程排名

网站建设与服务考试,nba赛程排名,wordpress用户注册不通过邮箱验证,node做网站优势今天跟大家分享华南理工大学和阿里巴巴联合提出的将ViT模型用于下游任务的高效微调方法HSN,该方法在迁移学习、目标检测、实例分割、语义分割等多个下游任务中表现优秀,性能接近甚至在某些任务上超越全参数微调。 论文标题:Hierarchical Side…

今天跟大家分享华南理工大学和阿里巴巴联合提出的将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与完全微调的性能差距。

相关文章:

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

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

机器学习的原理是什么?

训过小狗没? 没训过的话总见过吧? 你要能理解怎么训狗,就能非常轻易的理解机器学习的原理. 比如你想教小狗学习动作“坐下”一开始小狗根本不知道你在说什么。但是如果你每次都说坐下”然后帮助它坐下,并给它一块小零食作为奖励,经过多次…...

Java集合框架之ArrayList源码分析

文章目录 简介ArrayList底层数据结构初始化集合操作追加元素插入数据删除数据修改数据查找 扩容操作总结 简介 ArrayList是Java提供的线性集合,本篇笔记将从源码(java SE 17)的角度学习ArrayList: 什么是ArrayList?ArrayList底层数据结构是…...

TensorFlow入门(二十、损失函数)

损失函数 损失函数用真实值与预测值的距离指导模型的收敛方向,是网络学习质量的关键。不管是什么样的网络结构,如果使用的损失函数不正确,最终训练出的模型一定是不正确的。常见的两类损失函数为:①均值平方差②交叉熵 均值平方差 均值平方差(Mean Squared Error,MSE),也称&qu…...

MySQL中死锁

数据库的死锁是指不同的事务在获取资源时相互等待,导致无法继续执行的一种情况。当发生死锁时,数据库会自动中断其中一个事务,以解除死锁。在数据库中,事务可以分为读事务和写事务。读事务只需要获取读锁,而写事务需要…...

【LeetCode刷题(数据结构)】:给定一个链表 每个节点包含一个额外增加的随机指针 该指针可以指向链表中的任何节点或空节点 要求返回这个链表的深度拷贝

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next…...

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…...

Kopler.gl笔记:可视化功能总览

1 添加数据 2 添加图层 打开“数据层”菜单&#xff0c;开始可视化。 层&#xff08;Layers&#xff09;简单来说就是可以相互叠加的数据可视化。 3 添加过滤器 在地图上添加过滤器以限制显示的数据。过滤器必须基于数据集中的列。要创建新的过滤器&#xff0c;打开“过滤器…...

rust学习Cell、RefCell、OnceCell

背景 Rust 内存安全基于以下规则:给定一个对象 T,它只能具有以下之一: 对对象有多个不可变引用 (&T)(也称为别名 aliasing)对对象有一个可变引用 (&mut T)(也称为可变性 mutability)这是由 Rust 编译器强制执行的。然而,在某些情况下,该规则不够灵活(this r…...

基于SSM的摄影约拍系统

基于SSM的摄影约拍系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisJSP工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 前台系统&#xff1a;首页拍摄作品展示、摄影师展示、模特展示、文章信息、交流论…...

分析智能平台VMware Greenplum 7 正式发布!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

动态规划算法(3)--0-1背包、石子合并、数字三角形

目录 一、0-1背包 1、概述 2、暴力枚举法 3、动态规划 二、石子合并问题 1、概述 2、动态规划 3、环形石子怎么办&#xff1f; 三、数字三角形问题 1、概述 2、递归 3、线性规划 四、租用游艇问题 一、0-1背包 1、概述 0-1背包&#xff1a;给定多种物品和一个固定…...

Linux C/C++ 嗅探数据包并显示流量统计信息

嗅探数据包并显示流量统计信息是网络分析中的一种重要技术&#xff0c;常用于网络故障诊断、网络安全监控等方面。具体来说&#xff0c;嗅探器是一种可以捕获网络上传输的数据包&#xff0c;并将其展示给分析人员的软件工具。在嗅探器中&#xff0c;使用pcap库是一种常见的方法…...

Vitis导入自制IP导致无法构建Platform

怎么还有这种问题&#xff08; 解决Vitis导入自制IP导致无法构建Platform – TaterLi 个人博客 Vitis报错&#xff1a;fatal error: xxx.h: No such file or directory._ly2lj的博客-CSDN博客 在指定位置黏入以上代码即可&#xff1a; INCLUDEFILES$(wildcard *.h) LIBSOUR…...

SQLAlchemy 使用封装实例

类封装 database.py #! /usr/bin/env python # -*- coding: utf-8 -*-import sys import json import logging from datetime import datetimefrom core.utils import classlock, parse_bool from core.config import (MYSQL_HOST,MYSQL_PORT,MYSQL_USER,MYSQL_PASS,MYSQL_DA…...

Android Framework通信:Binder

文章目录 前言一、Linux传统跨进程通信原理二、Android Binder跨进程通信原理1、动态内核可加载模块2、内存映射3、Binder IPC 实现原理 三、Android Binder IPC 通信模型1、Client/Server/ServiceManager/驱动Binder与路由器之间的角色关系 2、Binder通信过程3、Binder通信中的…...

如何用精准测试来搞垮团队?

测试行业每年会冒出来一些新鲜词&#xff1a;混沌工程、精准测试、AI测试…… 这些新概念、新技术让我们感到很焦虑&#xff0c;逼着自己去学习和了解这些新玩意&#xff0c;担心哪一天被淘汰掉。 以至于给我这样的错觉&#xff0c;当「回归测试」、「精准测试」这两个词摆在一…...

暴力递归转动态规划(十)

题目 给定一个二维数组matrix[][]&#xff0c;一个人必须从左上角出发&#xff0c;最终到达右下角&#xff0c;沿途只可以向下或者向右走&#xff0c;沿途的数字都累加就是距离累加和。返回最小距离累加和。 这道题中会采用压缩数组的算法来进行优化 暴力递归 暴力递归方法的整…...

深度学习-房价预测案例

1. 实现几个函数方便下载数据 import hashlib import os import tarfile import zipfile import requests#save DATA_HUB dict() DATA_URL http://d2l-data.s3-accelerate.amazonaws.com/def download(name, cache_diros.path.join(.., data)): #save"""下载…...

【26】c++设计模式——>命令模式

c命令模式 C的命令模式是一种行为模式&#xff0c;通过将请求封装成对象&#xff0c;以实现请求发送者和接受者的解耦。 在命令模式中&#xff0c;命令被封装成一个包含特定操作的对象&#xff0c;这个对象包含的执行该操作的方法&#xff0c;以及一些必要的参数。命令对象可以…...

ElasticSearch容器化从0到1实践(一)

背景 通过kubernetes集群聚合多个Elasticsearch集群碎片资源&#xff0c;提高运维效率。 介绍 Kubernetes Operator 是一种特定的应用控制器&#xff0c;通过 CRD&#xff08;Custom Resource Definitions&#xff0c;自定义资源定义&#xff09;扩展 Kubernetes API 的功能…...

【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;Vue项目中有封装过axios…...

旅游票务商城小程序的作用是什么

随着环境放开&#xff0c;旅游行业恢复了以往的规模&#xff0c;本地游、外地游成为众多用户选择&#xff0c;而在旅游时&#xff0c;不少人会报名旅行团前往各风景热点游玩&#xff0c;对旅游票务经营者而言&#xff0c;市场高需求的同时也面临一些难题。 对旅游票务经营商家…...

LabVIEW在安装了其它的NI软件之后崩溃了

LabVIEW在安装了其它的NI软件之后崩溃了 在安装了其它的NI软件之后&#xff0c;一些原本安装好的或者新安装的软件由于缺少必要的DLL而崩溃掉了。例如&#xff0c;在这种情况下&#xff0c;Teststand可能会报下面的错误&#xff1a; RetrievingCOM class factory for compone…...

基于Java的个人健康管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

nginx https的配置方法

文章目录 安装证书工具安装根证书生成域名证书配置转发 ssl的请求到http请求 安装证书工具 curl ‘http://pan.itshine.cn:5080/?explorer/share/fileOut&shareID64h6PiQQ&path%7BshareItemLink%3A64h6PiQQ%7D%2F%E5%B7%A5%E5%85%B7%2Fmkcert’ > ‘./mkcert’ c…...

使用WebDriver采样器将JMeter与Selenium集成

目录 第一步&#xff1a;在JMeter中添加Selenium / WebDriver插件 第二步&#xff1a;创建一条测试计划--添加线程组 第三步&#xff1a;下载 chromedriver.exe 第四步&#xff1a;在Web Driver 采样器中添加测试脚本 第五步&#xff1a;运行并且验证 注意&#xff1a; 第…...

flink教程

文章目录 来自于尚硅谷教程1. Flink概述1.1 特点1.2 与SparkStreaming对比 2. Flink部署2.1 集群角色2.2 部署模式2.3 Standalone运行模式2.3.1 本地会话模式部署2.3.2 应用模式 2.4 YARN运行模式2.4.1 会话模式部署2.4.2 应用模式部署 2.5 历史服务 3. 系统架构3.1 并行度3.2 …...

视频监控系统/安防视频平台EasyCVR广场视频细节优化

安防视频监控系统/视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频汇聚平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;可实现视频监控直播、视频轮播、…...

电脑上播放4K视频需要具备哪些条件?

在电视上播放 4K&#xff08; 4096 2160 像素&#xff09;视频是很简单的&#xff0c;但在电脑设备上播放 4K 视频并不容易。相反&#xff0c;它们有自己必须满足的硬件要求。 如果不满足要求&#xff0c;在电脑上打开 4K 分辨率文件或大型视频文件会导致卡顿、音频滞后以及更…...