GLID: Pre-training a Generalist Encoder-Decoder Vision Model

news2024/12/22 18:56:33

1 研究目的

现在存在的问题是:

目前,尽管自监督预训练方法(如Masked Autoencoder)在迁移学习中取得了成功,但对于不同的下游任务,仍需要附加任务特定的子架构,这些特定于任务的子架构很复杂,需要在下游任务上从头开始训练,这使得大规模预训练的好处无法得到充分利用,制了预训练模型的通用性和效率。

为了解决这个问题,论文提出了:

GLID预训练方法,该方法通过统一预训练和微调阶段的架构,使得预训练模型能够更好地适应各种下游任务。

具体来说,GLID将预训练前置任务和其他下游任务都建模为“查询-回答”问题,每个查询都与一个掩码补丁位置相关联,并将其设置为其位置嵌入。每个查询的“答案”或学习目标是相应掩码补丁的像素值。从而实现了任务无关的编码器-解码器的预训练。

微调阶段,GLID保持预训练的编码器-解码器和查询不变,只需对最顶层的线性变换层进行替换,以输出每个任务的所需目标。这样,所提出的GLID尽可能地保持预先训练的权重,这最小化了预训练与微调之间的架构不一致性,并使预训练模型能够更好地适应下游任务。

特别是,编码器和解码器可以通过重建前置任务联合训练。

2 方法

 自监督预训练方法MAE(Masked Autoencoder) 仅主干预训练与 GLID 预训练。

GLID 预训练允许预训练的编码器-解码器在各种视觉任务上进行微调,而无需特定于任务的解码器设计,并且优于仅 MAE 主干的预训练。

  • 掩模图像建模(MIM)是一种流行的视觉表示学习的前置任务,旨在从损坏的输入中重建被屏蔽的标记。
  • MAE方法提出了一种非对称编码器-解码器架构,并使用编码器处理部分可见的标记,并使用轻量级解码器在掩码位置预测相应的像素值。

2.1 通用编码器-解码器预训练

  1. 给定一个输入掩码图像imagex∈RH×W ×3,其中H, W为图像的高度和宽度,将其划分为图像块并将其转换为图像标记,并应用随机掩码 M 来屏蔽一部分输入标记。
  2. 图像编码器Enc用于提取视觉特征,视觉编码器来生成多尺度特征图,视觉编码器遵循MAE,仅用于处理可见标记。Bi-FPN用于更好的使不同特征图尺度之间的交互
  3. 基于查询Q的变压器解码器Dec解码最终特征(将多个尺度特征图输入到L个交叉注意力和自注意力块的解码器中产生最终预测)

针对第3步:

引入了许多掩码标记 [M] 作为解码器的输入查询,这些查询被添加到不同的位置嵌入中,以表示唯一的掩码位置。

此外,在第 0 个位置附加一个额外的 [CLS] 标记查询,它与特定的掩码位置无关,但用于捕获全局表示。所以在预训练期间,我们可以将 Q 表示为 Q = [CLS, M1, M2,..., MN] 其中 N 表示掩码标记的数量。

     4.通过最顶层的线性变换层替换,以输出每个任务的所需目标,在掩码位置使用像素值 P t 作             为重建目标。

     5.对于下游任务的微调,将预训练的最顶层的线性变换层替换为特定于任务的线性层,通过这             种方式最小化了预训练-微调差距,并使预训练的架构更好的适应下游任务

     6.使用不同的 Q-P 对在不同的任务之间切换

  • 在预训练期间,通过掩码图像建模(MIM)预训练与任务无关的编码器-解码器转换器架构。
  • 对于下游任务的微调,将最顶层的线性变换层替换为特定于任务的线性头。通过这种方式,所提出的 GLID 最小化了预训练-微调差距,并使预训练的架构能够更好地适应下游任务。
  • 将解码器架构与下游任务中使用的解码器对齐,将MIM前置任务重新表述为“查询到答案”问题,并使用基于查询的变压器解码器 解码 掩码标记 进行预训练。

上图中编码器中的Backbone和BiFPN是什么意思?

  • Backbone:在计算机视觉任务中,Backbone通常指的是预训练的基础网络模型,用于提取输入图像的基本特征。这些特征随后可以被用于各种下游任务,如目标检测、图像分割等。Backbone网络结构多样,常见的包括ResNet、VGG等。
  • BiFPN:BiFPN是Bidirectional Feature Pyramid Network的缩写,是一种用于目标检测等任务的特征融合方法。它旨在融合不同尺度的特征信息,以提高目标检测的精度。通过自顶向下和自底向上的方式,BiFPN能够有效地融合低层次和高层次特征,使得网络能够同时捕获到细节信息和全局信息。

上图为GLID预训练的流程

2.2 下游任务的微调

基于通用设计,可以将预训练的GLID模型应用于各种下游任务,包括目标检测、图像分割、姿态估计和深度估计。

所有这些任务也被建模为新的“查询-答案”问题,可以通过用特定于任务的线性层替换预训练中使用的最顶层线性层并将不同的学习目标分配给查询-答案对来无缝地将GLID微调到这些任务。

2.2.1 目标检测

对于目标检测任务,每个查询都用于表示对象实例,基于DETR。使用两个线性层将解码的隐藏特征分别转换为边界框和类概率

2.2.2 图像分割

用 Mask2Former 的方法,每个查询用于预测  C-维度 掩码嵌入及其类别。因此,我们可以通过掩码嵌入和主干的 1/4 尺度特征图之间的点积来获得二进制掩码预测,然后是 sigmoid 激活

2.2.3 深度估计

用 AdaBins 和 BinsFormer 的方法,深度回归任务被表述为“分类回归”问题,其中连续预测是通过 bin 中心的线性组合获得的。具体来说,查询的隐藏特征通过深度头转换为 bin 长度和 bin 嵌入, 然后我们可以通过 bin 嵌入和主干的 1/4 尺度特征图之间的点积来获得概率分布图 ,然后是 softmax 函数

2.2.4 姿态估计

利用基于热图的ViTPose姿态估计方法。特别是,每个查询都用于输出关键点的热图。采用位姿预测头将查询特征转换为c维特征向量,表示不同关键点的热图P,位姿热图就可以得到。

      综上,在获得查询的预测后,遵循现有技术使用预测和基本事实之间的任务损失进行微调。特别是,计算对象检测和图像分割任务的二部匹配损失,对于这两个任务,预测的数量通常大于基本事实的数量。对于深度估计和姿态估计任务,分别使用尺度不变(SI)回归损失和平滑L1损失。在微调 GLID 时,继承了大多数预训练的架构权重,以充分利用大规模数据集上的自我监督预训练。

3 评估

3.1 定量评估

该表显示了作者的方法与其他特定和通用方法的比较。作者的通用方法可以通过最少的架构修改来解决所研究的任务,并在这些任务上取得了强大的性能。

将预训练的编码器-解码器微调到各种下游任务,包括

  • COCO上的目标检测/姿态估计
  • ADE20K上的语义/实例/全景分割
  • NYUDepth-v2上的深度估计
  • 在文献中提到的APbox、mIoU、mAP、PQ、REL、RMSE和APkp都是用于评估不同计算机视觉任务性能的指标。这些指标通常用于衡量模型在特定数据集上的表现,帮助研究者了解模型的性能并进行优化。

其中的对应的各个指标:

  • AP^{kp}Average Precision for Keypoints,即关键点的平均精度。这个指标在关键点检测或人体姿态估计任务中使用,用于衡量模型对关键点位置的预测准确性。AP^{kp}越高,说明模型在关键点检测任务中的性能越好。

  • AP^{box}:Average Precision for Bounding Boxes,即边界框的平均精度。这个指标通常用于目标检测任务中,衡量模型对目标物体位置预测的准确程度。AP^{box}越高,说明模型在定位目标物体时的性能越好。

  • mIoU:Mean Intersection over Union,即平均交并比。这是语义分割任务中常用的一个指标,用于衡量模型预测出的分割区域与真实分割区域之间的重叠程度。mIoU越高,说明模型的分割性能越好。

  • mAP:Mean Average Precision,即平均精度均值。这个指标在目标检测任务中广泛使用,用于衡量模型在不同召回率下的平均精度。mAP越高,说明模型在检测目标物体时的性能越稳定且准确。

  • PQ:Panoptic Quality,即全景质量。这个指标用于全景分割任务,综合衡量了分割的准确性和完整性。PQ越高,说明模型在全景分割任务中的性能越好。

  • REL:这是一个相对误差的指标,可能因任务而异。在某些任务中,它可能用于衡量模型预测值与真实值之间的相对误差大小。REL越低,通常表示模型的预测更为准确。

  • RMSE:Root Mean Square Error,即均方根误差。这个指标用于衡量模型预测值与真实值之间的偏差大小。RMSE越小,说明模型的预测值与真实值越接近,性能越好。

  • “数据”表示预训练数据。
  • “w/ Labels”预训练阶段不仅利用了无标签数据进行自监督学习,还结合了带标签的数据进行有监督学习。
  • \bigstar”表示模型可以执行此类任务,但没有报告结果。
  • “-”表示模型无法执行此类任务。
  • † 表示我们使用官方代码的实现。

Swin-B、Swin-L代表的是Swin Transformer的不同版本或大小

  • Swin-B通常代表较小的模型版本,适用于资源有限或需要快速推理的场景。
  • Swin-L则代表较大的模型版本,通常具有更多的参数和更强的性能,适用于需要更高精度的任务或场景。

该表将作者的预训练方法 GLID 与之前的预训练方法进行比较,以证明其在各种视觉任务上的有效性,使用相同架构的预训练主干,在研究的下游任务上微调它们。

3.2 消融实验

表3的内容:

  • 除了在各种任务上单独微调预训练模型外,作者还探索了多任务微调。
  • ADE20K 上的多任务与单任务微调,因为它的注释可用于三种类型的分割任务。我们在具有不同任务组合的数据集上微调预训练的 Swin-B。
  • 发现多任务模型不如单任务模型(训练语义、训练实例、全景任务

表4的内容:

  • 为了性能比较,加载部分预训练权重的消融。对于未加载的架构,用随机权重初始化它。
  • 然后,在两个下游任务上微调模型,并将它们与完整的预训练模型进行了比较。第 1 行的结果是从头开始训练的。随着加载更多预训练的权重,性能会逐渐提高。
  • 此外,加载 BiFPN 部分也可以优于仅加载主干权重的选择。所有结果证明了通才编码器-解码器预训练的重要性。

表5,为了研究解码器深度对我们的模型的影响,测试了改变模型中解码器层的数量。

       具体来说,使用 3、6 和 9 个解码器层预训练模型,并在下游任务上微调它们。请注意,对预训练和微调使用相同的解码器层数。如表中所示,使用更多的解码器层并不能带来显着的性能提升,而是引入了额外的计算成本。

表6,为了研究预训练 epoch 的数量对模型的性能的影响,改变了预训练 epoch 的数量。

        使用不同数量的 epoch 进行预训练,并在下游任务上微调预训练模型。

        发现如果预训练 900 个 epoch,性能逐渐饱和并且没有太大改善。

表7,掩码策略和掩码比率。研究了掩码策略和掩码比率的影响

发现使用随机掩码在其他掩码策略中表现最好。此外,使用较大的掩码比率,即 0.75,会导致最佳结果。

表8,使用有限数据进行微调,研究了有限数据在微调期间的影响。

主要原因是对于有监督的预训练方法,需要在下游任务中从头开始训练特定于任务的解码器,相比之下,GLID统一预训练方法可以同时预训练并保持预训练的编码器-解码器即使在没有太多特定于任务的数据的情况下也实现了强大的性能。

3.3 定性评估

查询在不同任务上的交叉注意映射。每列显示特定任务上的三个尺度注意力图。特定于任务的查询用于可视化。

观察到查询可以专注于不同任务的不同语义部分。

  • 对于预训练前置任务,查询学习关注局部区域进行重建。
  • 对于目标检测和姿态估计任务,查询关注一些极值点,例如对象的边界或特定的关键点位置。
  • 对于分割或深度估计任务,注意图对不同的语义区域有明显的分离。

比较了部分加载预先训练的权重在语义分割和深度估计任务上的收敛曲线,和表4是一样的

4优点

  1. 通用性强:GLID方法通过设计一种通用的编码器-解码器结构,使得预训练模型能够处理多种不同的下游计算机视觉任务,而不需要为每一个任务都设计特定的子架构。这种通用性使得GLID在多种任务上都能取得良好的性能。

  2. 适应性好:GLID预训练方案将预训练任务和下游任务都建模为“查询-回答”问题,这种设计使得预训练模型能够更好地适应不同的任务需求。在微调阶段,GLID仅替换最顶层的线性变换层为任务特定的线性头,从而最小化了预训练与微调阶段架构的不一致性,使得预训练模型能够更好地适应下游任务。

  3. 性能优越:GLID在多种视觉任务上展现出竞争性的性能,包括目标检测、图像分割、姿态估计和深度估计等。与专业的模型如Mask2Former、DETR、ViTPose和BinsFormer相比,GLID要么性能更好,要么性能相当。

5 限制

  1. 可能受限于预训练任务:虽然GLID设计了一个通用的编码器-解码器结构,但预训练任务的设计对于模型性能仍然至关重要。如果预训练任务不能很好地涵盖下游任务的需求,那么模型在下游任务上的性能可能会受到影响。

  2. 计算资源需求大:由于GLID方法涉及到大规模的预训练,因此可能需要大量的计算资源和时间。这对于资源有限的研究机构或个人来说可能是一个挑战。

  3. 任务特定头的设计:虽然GLID在微调阶段只需要替换顶层的线性变换层,但对于某些复杂的任务,可能还需要更精细的任务特定头设计,以进一步提高性能。这增加了在特定任务上应用GLID的复杂性。

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

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

相关文章

关于C++STL的总结(基础使用和底层原理)

STL是什么? STL即(Standard Template Library)标准模板库,提供了常见的数据结构和算法函数等,其下共包含六大组件: 容器算法迭代器仿函数适配器空间配置器 本篇重点介绍容器的使用和简单的底层实现原理&…

不容忽视的听力“杀手”

音乐与短视频已成为现代生活的重要组成部分,许多人在繁忙的日常中依赖耳机来获得片刻的宁静或激情。然而,我们也需要警惕,不当的耳机使用可能对我们的听力造成风险。长时间以高音量使用耳机,无疑会对听力构成挑战。 *图片源于网络…

贪吃蛇项目实战——学习详解

前言:贪吃蛇是一个经典的游戏, 本节将使用c语言实现一个简易的的贪吃蛇小游戏。 本节内容适合已经学完c语言还有数据结构链表的友友们。 我们要实现的贪吃蛇是在控制台进行游戏的。 它运行起来是这样的: 贪吃蛇 那么, 为了实现这个小游戏。 我…

图解KMP算法——字符串搜索

原文:最初发布地址 一、问题描述 来源:Leetcode 难度:中等 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 hays…

2024年最新版云开发cms开通步骤,开始开发微信小程序前的准备工作,认真看完奥!

小程序官方有改版了,搞得石头哥不得不紧急的再新出一版,教大家开通最新版的cms网页管理后台 一,技术选型和技术点 1,小程序前端 wxml css JavaScript MINA原生小程序框架 2,数据库 云开发 云数据库 云…

SOTAX溶出测试系统PC触摸屏维修三部曲

SOTAX溶出测试系统作为一款广泛应用于制药行业的知名品牌,具有高精度、操作简便、稳定性好等特点。它适用于各种类型的药品研发和生产环节,为科研人员提供可靠的数据支持。瑞士SOTAX溶出仪是实验室中常用的设备,其触摸屏是用户交互的重要界面…

程序员读的经典著作有哪些?

一、程序员读的经典著作有哪些? 在编程的世界里,阅读经典著作不仅能够帮助我们深入理解编程的本质,也能为我们提供解决问题的新思路和方法。以下是几本被广大程序员推崇的经典著作,每本书都有其独特的价值和深远的影响。 1. 《代…

【C++】双指针算法:快乐数

1.题目 题目中一定要理解快乐数的含义,否则题目难度直逼困难。 在示例1中n19,经过几步操作后结果变成1。 那么示例2中n2是什么情况呢: 2->4->16->37->58->89->145->42->20->4(与前面的4形成闭环) 在计算机中in…

苍穹外卖day11 Apache ECharts 数据统计-图形报表

文章目录 前言一、Apache ECharts二、营业额统计1. 业务规则2. 接口设计3. 代码实现 三、用户统计1. 业务规则2. 接口设计3. 代码实现 四、订单统计1. 业务规则2. 接口设计3. 代码实现 五、销量排名Top101. 业务规则2. 接口设计3. 代码实现 前言 作为后端开发人员使用Echarts&…

【C++】类和对象④(类的默认成员函数:取地址及const取地址重载 | 再谈构造函数:初始化列表,隐式类型转换,缺省值)

🔥个人主页:Forcible Bug Maker 🔥专栏:C 目录 前言 取地址及const取地址操作符重载 再谈构造函数 初始化列表 隐式类型转换 explicit关键字 成员变量缺省值 结语 前言 本篇主要内容:类的六个默认成员函数中…

算法训练营day15

一、层序遍历 参考链接7.2 二叉树遍历 - Hello 算法 (hello-algo.com) 层序遍历本质上属于广度优先遍历,也称广度优先搜索, BFS通常借助队列的先入先出的特性实现 参考链接102. 二叉树的层序遍历 - 力扣(LeetCode) 像这种较为…

Go语言并发控制

channel // cancelFn 数据通道关闭通知退出 func cancelFn(dataChan chan int) {for {select {case val, ok : <-dataChan:// 关闭data通道时&#xff0c;通知退出// 一个可选是判断data指定值时退出if !ok {fmt.Printf("Channel closed &#xff01;&#xff01;&…

前端页面助手 (vue)

快速开发页面&#xff08;图形化开发页面&#xff09; 自主编辑 然后自己也可以修改属性 最后导出页面即可 github地址 ;https://github.com/opentiny/tiny-engine

蚓链数字化营销系统与数字资产的关系

蚓链数字化营销系统是一种利用数字技术来实现营销目标的系统。它集成了多种数字营销工具和渠道&#xff0c;以收集、分析和利用客户数据&#xff0c;优化营销活动&#xff0c;并提高营销效果。 数字资产是一种新型的资产类别&#xff0c;它们以电子数据的形式存在&#xff0c;可…

前端开发攻略---实现发送手机验证码60s倒计时效果(手机号验证+按钮文字自定义显示+Vue2写法+Vue3写法)

1、演示 2、说明 1、为了便于演示&#xff0c;本示例将在3秒后就再次发送。您可以根据需要自定义此时间间隔。 2、采用最少的变量以满足需求&#xff0c;以减少内存占用。 3、不仅仅局限于按钮情况&#xff0c;也可应用于不禁用按钮的情况&#xff0c;以实现更多的扩展性。 4、…

02 VMware下载安装银河麒麟(Kylin)系统

02 VMware下载&安装银河麒麟&#xff08;Kylin&#xff09;系统 一、官网1、官网地址 二、下载1、官网下载&#xff08;1&#xff09;服务器操作系统&#xff08;2&#xff09;申请试用&#xff08;3&#xff09;产品试用申请&#xff08;4&#xff09;点击下载连接即可 2、…

Redis篇:缓存穿透以及解决方案

1.何为缓存穿透 缓存穿透 &#xff1a;缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。 比如查询一个id 0的数据&#xff0c;这是在redis和数据库中肯定不存在的&#xff0c;这样就属于缓存穿…

vue2+vxe-table实现表格增删改查+虚拟滚动

vue2vxe-table实现表格增删改查虚拟滚动 使用的vxe-table版本&#xff1a;v3.x (vue 2.6 长期维护版) 完整代码 <template><div><vxe-toolbar ref"xToolbar" export :refresh"{query: findList}"><template #buttons><vxe-b…

【网络安全】在网络中如何对报文和发送实体进行鉴别?

目录 1、报文鉴别 &#xff08;1&#xff09;使用数字签名进行鉴别 &#xff08;2&#xff09;密码散列函数 &#xff08;3&#xff09;报文鉴别码 2、实体鉴别 鉴别(authentication) 是网络安全中一个很重要的问题。 一是要鉴别发信者&#xff0c;即验证通信的对方的确是…

富唯智能:打造未来机器人教育新标杆

随着科技的飞速发展&#xff0c;机器人教育正逐渐成为培养未来人才的重要领域。富唯智能&#xff0c;作为业内领先的机器人技术提供商&#xff0c;近日推出了一款全新的机器人教育实践平台系统&#xff0c;旨在为学生提供更加丰富、更具挑战性的学习体验。 该平台系统以AUBO-i5…