MulT: An End-to-End Multitask Learning Transformer 多任务共享注意力

article/2025/8/21 23:14:33

文章

       同时学习多个高级视觉任务,包括深度估计、语义分割、reshading表面法线估计、2D 关键点检测和边缘检测。

  • 与单个任务Transformer相比,跨任务联合培训的Transformer模型能否提高每个任务的性能?
  • 在基于Transformer的框架中,可以显式地对任务之间的依赖关系进行编码吗?
  • 多任务Transformer可以推广到相似领域吗?

       我们提出了一个端到端的多任务学习转换器框架MulT,用于同时学习多个高级视觉任务,包括深度估计、语义分割、重阴影、表面法线估计、二维关键点检测和边缘检测。基于Swin-transformer模型,我们的框架将输入图像编码为共享表示,并使用特定于任务的基于transformer的解码器头对每个视觉任务进行预测。我们方法的核心是一种共享注意机制,它对任务之间的依赖关系进行建模。我们在多个多任务基准上评估了我们的模型,结果表明我们的MulT框架UT既可以执行最先进的多任务卷积神经网络模型,也可以执行所有相应的单任务转换器模型。我们的实验进一步强调了在所有任务中共享注意力的好处,并证明了我们的MulT模型是健壮的,可以很好地推广到新的领域。

        MulT: An End-to-End Multitask Learning Transformer
       Code:https://github.com/IVRL/MulT

1. ☞ 简介

        在本文中研究了变压器在多任务学习中的使用。(虽然有一些作品研究了如何使用转换器来处理多个输入模式,如图像和文本,但它们通常专注于单个任务,例如视觉问答,但[20]除外,它处理多个语言任务,但只处理一个视觉任务。相比之下,我们的目标是连接涵盖2D、3D和语义域的多个视觉任务。)

       我们引入了MulT,它包括一个基于转换器的编码器,用于将输入图像转换为任务共享的潜在表示,然后具有任务特定头的转换器解码器,用于生成每个任务的最终预测。 贡献总结:
• 我们提出了一种端到端多任务转换器体系结构,它在一个模型中处理多个高级视觉任务。
• 我们在多个任务的transformer解码器之间引入了shared attention(共同关注☺)。这种共享注意力机制进一步提高了每个视觉任务的性能。
• 我们的框架使我们能够了解跨高级愿景任务的相互依赖性。
• 我们表明,与现有的多任务卷积模型相比,我们的模型在不同视觉任务上的平均误差更低,可以推广和适应新的领域【42,54】。

       我们对各种任务进行了详尽的实验和分析,结果表明,我们的MulT模型不仅改善了单任务体系结构的性能,而且在基准上(如Taskonomy[55]、Replica[43]、NYU[32]和CocoDoom[30])也优于最先进的基于CNN的多任务模型(如图1所示)

2. 模型 MulT: A Multitask Transformer

在这里插入图片描述

       对于基于transformer的编码器,我们使用一个名为Swin transformer的金字塔主干,将视觉特征嵌入到包含全局上下文信息的隐藏状态列表(a list of hidden states that incorporates global contextual information)中。然后,我们应用transformer解码器对编码图像中的标记化映射进行逐步解码和上采样。最后,将transformer解码器的表示传递给特定于任务的头部。例如一个简单的两层分类器(在分割的情况下),它输出最终的预测。鉴于MulT的简单性,它可以很容易地扩展到更多的任务。我们的经验表明,我们的模型可以联合学习6个不同的任务,并且可以很好地推广到新的领域。

网络的详细信息

3.1. Encoder Module

       编码器采用SWN-L,它以金字塔的方式将堆叠变压器应用于分辨率逐渐降低的特征,从而产生分层多尺度编码特征,如图2所示。
       特别是,按照ResNet[18]的结构和设计规则,依次定义了四个阶段:每个阶段都包含一个面片嵌入步骤,该步骤降低了空间分辨率并增加了通道尺寸,以及一个变压器块的柱状序列。
       第一阶段中的初始基本贴片嵌入使用大小为pH=pW=4和通道大小为C=192的方形贴片执行,无需添加“类”token;
       所有三个后续阶段中的面片合并采用前一阶段的输出标记,在2D表示中对其进行重塑,并通过按通道串联和线性变换将相邻标记聚集在大小为pH=pW=2的非重叠面片中,从而将产生的通道数减半(从而使通道数相对于输入标记加倍)。
       这种方法将分辨率减半,并在每个中间阶段将通道尺寸加倍,与典型的完全卷积主干的行为相匹配,并生成与大多数以前的视觉任务体系结构兼容的特征金字塔(输出大小为原始分辨率的1/4、1/8、1/16、1/32)。(后边有关swin-transformer窗口划分等设计略去。)

3.2. Decoder Module

(主要描述了跳跃连接的结构)
       受【57】中提出的两个基于CNN的解码器的启发,我们开发了相应的基于变压器的概念相似的版本。一般的想法是用加窗变压器块代替卷积层。具体而言,我们的解码器架构由四个阶段组成,每个阶段包含一个由2个转换器块组成的序列,总共8个。在每个阶段中,两个顺序转换器块允许我们通过交替的规则和移位窗口配置(如编码器中)来利用窗口间连接。在连续的阶段之间,我们使用上采样层将空间分辨率提高一倍,通道尺寸降低一半;因此,我们在第一、第二、第三和第四阶段将注意力头的数量分别调整为48、24、12、6。
       生成的特征映射的空间/通道形状与编码器级的输出相匹配,编码器级的输出通过跳过连接传递到相应的解码器级。这产生了一种沙漏结构,具有镜像编码器-解码器通信:解码器的较低分辨率级由较高级别的较深编码特征引导,解码器的较高分辨率级由较低级别的较浅编码特征引导,允许以从粗到细的方式逐渐恢复信息,并在更相关的地方利用不同的语义级别。注意,解码器的每一级中的第一变换块使用常规窗口分区,而第二变换块使用移位窗口分区;这可以很容易地扩展到使用更长的变压器块序列,只要长度是2的倍数,这就可以在两种配置之间交替。
       为了执行多任务预测,我们在所有任务中共享编码器,并使用具有相同体系结构但参数值不同的特定于任务的解码器。然后,我们只需将特定于任务的头附加到解码器。例如,一个为语义分割和深度预测联合训练的模型将有两个特定于任务的头部:一个预测K通道,然后是用于语义分割的softmax,另一个预测单个通道,然后是用于深度估计的sigmoid。

❊ 3.3. Shared Attention

       计算任务t的自注意的标准方法是仅从它自己的解码器输出xt中获取键、查询和值向量。本文的计算方法如图3所示:

在这里插入图片描述

在这里插入图片描述

项目含义注释
x t x^t xt某次解码器的上采样输出解码器输入
x s a x_{sa} xsa以相同分辨率运行的编码器的输出解码器输入
q s a r q^r_{sa} qsarquerylinear( x s a x_{sa} xsa)
k s a r k^r_{sa} ksarkeylinear( x s a x_{sa} xsa)
x r x^r xr一个特定参考任务r的解码器输出
C r C^r Cr通道个数
B r B^r Brbias
v t v_t vt对于任务t的value
x ^ t = A s a r v t \hat x^t = A^r_{sa}v^t x^t=Asarvt

       得到q,k,v只后进行多头注意力计算:

在这里插入图片描述

项目含义注释
h e a d i t ( x ^ i t , W i t ) = x ^ i t ⋅ W i t head^t_i(\hat x^t_i, W^t_i) =\hat x_i^t\cdot W_i^t headit(x^it,Wit)=x^itWit
$ W_i^t$对于任务t的可学权重
x ^ i t \hat x_i^t x^it x ^ t \hat x^t x^t的第i个通道
W表示多头注意力权重计算 M H A t MHA^t MHAt公式中的W

       从经验来看,参考任务选择为surface normal task 。

       请注意,我们的共同关注不同于之前的工作【8】中引入的共同关注,其中值和键通过编码器层的跳过连接传递。图4显示了在任务中添加共享注意机制的效果,其中,与不使用共享注意的MulT模型相比,使用共享注意机制的MulT改进了所有任务的结果。

LOSS

来自transformer解码器模块的特征映射被输入到不同的任务头,以进行后续预测。每个类头包括一个线性层以输出一个H×W×1贴图,其中H,W是输入图像的尺寸。我们采用基于加权和(11)的任务特定损失来联合训练网络,其中损失在每个任务的地面真实值和最终预测之间计算。特别是,我们分别使用交叉熵进行分割,旋转损失用于深度,L1损失用于曲面法线、2D关键点、2D边和重着色。请注意,我们使用这些损失来保持与基线的一致性【42、54、55】。

       

参考与更多

更多
Swin-Unet
End-to-End Multi-Task Learning with Attention
10、31、41 提到了使用变压器解决多个任务的问题,除了使用共享主干之外,这些工作都不旨在编码任务之间的强依赖关系


http://chatgpt.dhexx.cn/article/LGLsk4UG.shtml

相关文章

Paper | Multitask learning

目录 1. MTL的定义2. MTL的机制 2.1. Representation Bias2.2. Uncorrelated Tasks May Help?3. MTL的用途 3.1. Using the Future to Predict the Present3.2. Time Series Prediction3.3. Using Extra Tasks to Focus Attention3.4. Quantization Smoothing3.5. S…

GPT2(Language Models are Unsupervised Multitask Learners)论文阅读

1. 论文阅读 论文地址:Language Models are Unsupervised Multitask Learners 1.1 背景介绍 2019年OpenAI发布的模型,OpenAI在2018年的GPT1中给出了一种半监督的训练方法,在GPT2中针对如下问题做了升级: 以前机器学习训练代价大…

#Paper Reading# Language Models are Unsupervised Multitask Learners

论文题目: Language Models are Unsupervised Multitask Learners 论文地址: https://life-extension.github.io/2020/05/27/GPT技术初探/language-models.pdf 论文发表于: OpenAI 2019 论文所属单位: OpenAI 论文大体内容: 本文主要提出了GPT-2(Gener…

【论文阅读】Multitask Prompted Training Enables Zero-shot Task Generalization

前言 本文源自 ICLR 2022 原文地址:Multitask Prompted Training Enables Zero-shot Task Generalization Discussion 中提到的 FLAN 参考博文 【论文阅读】Finetuned Language Models Are Zero-Shot Learners_长命百岁️的博客-CSDN博客 Abstract 大模型在多种…

MultiTask Learning Survey

目录 一、常见Multi-Task 架构 二、MTL的一些优化方法 三、ExperimentConclusion 原文链接:MultiTask Survey 一、常见Multi-Task 架构 Hard和Soft区分:Hard共享底层参数,在高层提取中相互独立;Soft使用十字绣的形式&#xf…

Multitask Learning

参考 Multitask Learning - 云社区 - 腾讯云 1、单任务学习VS多任务学习 单任务学习:一次只学习一个任务(task),大部分的机器学习任务都属于单任务学习。多任务学习:把多个相关(related)的任务…

Multi-Task 多任务学习, 那些你不知道的事

作者 | 三和厂妹 来源 | 文末『阅读原文』处 概念 当在一个任务中要优化多于一个的目标函数[1] ,就可以叫多任务学习 一些例外 「一个目标函数的多任务」:很多任务中把loss加到一起回传,实质优化的是一个目标函数, 但优化的是多个任务&…

多任务学习综述:推荐系统多任务学习(multitask)的实战总结和常见问题(一)

多任务学习算法系列的主要内容是回顾和总结自己2019-2021间在深度学习多任务学习算法(multitask)的工业实践和遇到的常见问题,欢迎更多同学讨论和指正,同时也宣传一波我们组在推荐方向的工作成果——大规模推荐算法库PaddleRec(https://githu…

VS2012下载和安装

1.下载链接 https://pan.baidu.com/s/1YR7Xk9Zlv7zQWCsERdVgIQ 提取码:stvi 2.鼠标右击【Visual Studio2012】压缩包选择【解压到Visual Studio2012】。 3.打开解压后的文件夹,鼠标右击【vs_ultimate】选择【以管理员身份运行】。 4.点击【…】可更改安…

Visual Studio 2013 详细安装教程(安装+注册)

转载自:安装注册:https://jingyan.baidu.com/article/09ea3ede3b2496c0afde3944.html IE10报错解决办法:https://jingyan.baidu.com/article/ff42efa92f79cac19e2202cd.html 1.还是老样子,首先要下载安装文件,这里提供…

使用cubemx工具的STM32对外部flash(W25Q64)的简单编程

SPI SPI简介 SPI通信原理 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为…

stm32 W25QXX系列驱动 W25Q80 W25Q16 W25Q32 W25Q64 W25Q128 W25Q256

头文件 #ifndef W25QXX__H #define W25QXX__H #include "sys.h"#define W25Q80 0XEF13 #define W25Q16 0XEF14 #define W25Q32 0XEF15 #define W25Q64 0XEF16 #define W25Q128 0XEF17 #define W25Q256 0XEF18#define W25QXX_CS PAout(4)//指令表 #define W25X…

SPI专题(二)——STM32驱动FLASH(W25Q64)

前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。 github:my github 注:博客所涉及的关于 st…

STM32系列(HAL库)——F103C8T6通过SPI方式读写W25Q64—(Flash存储模块)

1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件准备 (1)W25Q64模块 (2)F1的板子,本例使用经典F103C8T6 (3)ST-link 下载器 (4)USB-TTL模块 (5)杜邦线若干 3.模块资料 (1)模块简介: W25Q64(64M-bit)&#xff0c…

SPI协议学习Cubmx——读写Flash W25Q64

这是最好的时代,这是最坏的时代; 这是智慧的时代,这是愚蠢的时代; 这是信仰的时期,这是怀疑的时期; 这是光明的季节,这是黑暗的季节; 这是希望之春,这是失望之冬&#xf…

STM32使用QUADSPI读写外部Nor Flash(以W25Q64为例)

使用QUADSPI读写W25Q64 QUADSPI介绍硬件连接双闪存模式禁止双闪存模式使能 QUADSPI命令序列指令阶段地址阶段交替字节阶段空指令周期阶段数据阶段 QUADSPI主要信号接口协议模式单线SPI模式双线SPI模式四线SPI模式 使用QUADSPI操作W25Q64发送命令函数状态轮询函数读ID函数QUADSP…

W25Q64内部结构

和STM32片上一样 我们分析 函数接口: 擦除1个扇区 【参数必须是4096的倍数】 void SPI_FLASH_SectorErase(uint32_t SectorAddr) 擦除芯片全部 void SPI_FLASH_BulkErase(void) 写入一页【数据比256小】 pBuffer:待写入数据的指针 WriteAddr&#xff…

基于STM32F401RET6字库烧录(SPIW25Q64驱动)

目录 一、SPI&W25Q64 1-SPI介绍 2-初始化SPI 3-SPI数据接收和发送函数 4-验证SPI是否配置正确(读W25Q64的ID) 二、W25Q64简介与API函数 1 - W25Q64芯片介绍 2- W25Q64芯片管脚说明 3- W25Q64芯片工作原理 4- W25Q64芯片操作时序 三、字库烧…

STM32CubeMx开发之路—13使用SPI读写W25Q64

!!! 本文已同步到码云 - 点击此链接获取最新 - 可进入码云提交修改 !!! 附件 源码已放到码云 ! ! ! ( 请点击文首链接进入仓库 ) 运行环境 Windows10STM32CubeMX Version 5.2.0Keil5(MDK5) Version 5.28.0.0 简介 本例程主要讲解如何使用硬件IIC读写24C02 STM32CubeMx基本配…

STM32CubeMX系列08——SPI通信(W25Q64、NRF24L01无线模块)

文章目录 1. 准备工作1.1. 所用硬件1.2. SPI 简介1.3. 生成工程1.3.1. 创建工程选择主控1.3.2. 系统配置1.3.3. 配置工程目录 2. 读写EEPROM实验(W25Q64)2.1. W25Q64 简介2.2. 代码实现 3. NRF24L01无线模块通信3.1. 模块简介3.2. SPI 配置3.2.1. SPI1 配…