12/31

news2024/11/29 0:42:10

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • Abstract
  • 文献阅读:用于密集预测的多路径视觉Transformer
    • 1、研究背景
    • 2、方法提出
    • 3、相关方法
      • 3.1、Vision Transformers for dense predictions
      • 3.2、Comparison to Concurrent work
    • 4、Multi-Path Vision Transformer 结构实现
      • 4.1、Multi-Scale Patch Embedding
      • 4.2、Multi-path Transformer
    • 5、实验测试
    • 6、文章贡献
  • Transformer 复习
    • 1、什么是Transformer
    • 2、Transformer模型的框架
    • 3、Encoder
      • 3.1、Encoder的作用
      • 3.2、Encoder中Block的详细实现
    • 4、Decoder
      • 4.1、Decoder的作用
      • 4.2、可能性序列的产生过程
    • 5、Encoder和Decoder之间的连接
    • Encoder和Decoder之间的连接主要集中在Cross attention当中,其主要两个输入由Encoder输入,另外一个由Decoder输入,这些输入都是通过各自的Self-attention(Mask)处理后输入到Cross attention进行下一步处理,这样便完成了两个结构之间的连接。 ![请添加图片描述](https://img-blog.csdnimg.cn/a41d7caad0fb4c48b6bdedfdb0a9578f.png)


摘要

本周主要阅读了2022CVPR的文章,用于密集预测的多路径视觉Transformer,在文章中讲解了当前Transformer对于多尺度的密集预测的困难之处,并提出了一种方法多路径视觉Transformer方法来解决,其主要思路就是通过嵌入CNN对多路径的物体进行特征提取,最后将特征重新聚合得到一种多路径的视觉密集预测的方法。在最终测试下,都取得比较好的成绩。另外我还对Transformer的相关知识进行了复习。

Abstract

This week I mainly read articles from CVPR 2022, focusing on the multi-path visual Transformer for dense prediction. In the article, the difficulties of current Transformer for dense prediction at multiple scales are explained, and a method, the multi-path visual Transformer method, is proposed to solve them. The main idea is to extract features from multiple paths of objects through embedding CNN, and finally re-aggregate the features to obtain a method for dense prediction of multiple paths of vision. In the final test, good results were achieved. In addition, I also reviewed the related knowledge of Transformer.


文献阅读:用于密集预测的多路径视觉Transformer

Title: MPViT: Multi-Path Vision Transformer for Dense Prediction
Author:Youngwan Lee, Jonghee Kim, Jeff Willette, Sung Ju Hwang
From:2022 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

1、研究背景

⾃推出以来,Transformer 对⾃然语⾔处理(NLP)产⽣了巨⼤影响。同样Vision Transformer (ViT) 的出现推动了计算机视觉社区的发展。因此,最近基于 Transformer 的视觉⼯作出现了爆炸式增⻓,涵盖静态图像分类等任务,物体检测和语义分割到视频分类等时间任务和对象跟踪 。对于诸如对象检测和分割之类的密集预测任务来说,表示关重要多尺度特征⽤于区分不同⼤⼩的物体或区域。现代 CNN 主⼲在密集预测⽅⾯表现出更好的性能,在卷积核级别利⽤多个尺度,或特征级别。初始⽹络 或 VoVNet 在同⼀特征级别利⽤多粒度卷积核,产⽣不同的感受野,进⽽提⾼检测性能。⼈⼒资源⽹通过同时聚合整个卷积层的精细和粗略特征来表⽰多尺度特征。尽管 CNN 模型被⼴泛⽤作密集预测的特征提取器,CNN的性能已经被ViT超越。ViT 变体重点关注如何解决应⽤于⾼分辨率密集预测时⾃注意⼒的⼆次复杂度,他们较少关注构建有效的多尺度表⽰。

2、方法提出

作者以不同于现有Transformer的视角,探索多尺度path embedding与multi-path结构,提出了Multi-path Vision Transformer(MPViT)。通过使用 overlapping convolutional patch embedding,MPViT同时嵌入相同大小的patch特征。然后,将不同尺度的Token通过多条路径独立地输入Transformer encoders,并对生成的特征进行聚合,从而在同一特征级别上实现精细和粗糙的特征表示。在特征聚合步骤中,引入了一个global-to-local feature interaction(GLI)过程,该过程将卷积局部特征与Transformer的全局特征连接起来,同时利用了卷积的局部连通性和Transformer的全局上下文。

3、相关方法

3.1、Vision Transformers for dense predictions

密集的计算机视觉任务,如目标检测和分割,需要有效的多尺度特征表示,以检测或分类不同大小的物体或区域。Vision Transformer(ViT)构建了一个简单的多阶段结构(即精细到粗糙),用于使用单尺度patch的多尺度表示。然而ViT的变体专注于降低自注意的二次复杂度,较少关注构建有效的多尺度表示。CoaT通过使用一种co-scale机制,同时表示精细和粗糙的特征,允许并行地跨层注意,从而提高了检测性能。然而,co-scale机制需要大量的计算和内存开销,因为它为基础模型增加了额外的跨层关注(例如,CoaT-Lite)。因此,对于ViT体系结构的多尺度特征表示仍有改进的空间。

3.2、Comparison to Concurrent work

CrossViT利用了不同的patch大小和单级结构中的双路径,如ViT和XCiT。然而,CrossViT的分支之间的相互作用只通过[CLS]token发生,而MPViT允许所有不同规模的patch相互作用。此外,与CrossViT(仅限分类)不同的是,MPViT更普遍地探索更大的路径维度(例如,超过两个维度),并采用多阶段结构进行密集预测。

4、Multi-Path Vision Transformer 结构实现

在这里插入图片描述

4.1、Multi-Scale Patch Embedding

请添加图片描述
通过改变stride和padding来调整token的序列长度。也就是说,可以输出具有不同patch大小的相同大小(即分辨率)的特征。因此,这样就能并行地形成了几个具有不同卷积核大小的卷积patch embedding层。例如,如上图的Multi-Scale Patch Embedding 结构种,可以生成相同序列长度的不同大小的vision token,patch大小分别为3×3,5×5,7×7。
由于具有相同通道和滤波器大小的连续卷积操作扩大了接受域,并且需要更少的参数,在实践中选择了连续的3×3卷积层。为了减少参数量,在实践中选择了两个连续的3×3卷积层代替5×5卷积。对于triple-path结构,使用三个连续的3×3卷积,通道大小为C’,padding为1,步幅为s,其中s在降低空间分辨率时为2,否则为1。因此通过该层可以得到相同大小的特征F3x3(Xi)、F5x5(Xi)、F7x7(Xi)

  • 注意:为了减少模型参数和计算开销,采用3×3深度可分离卷积,包括3×3深度卷积和1×1点卷积。每个卷积之后都是Batch Normalization 和一个Hardswish激活函数。接着,不同大小的token embedding features 分别输入到Multi-path transformer Block 中的 encoder 中。

4.2、Multi-path Transformer

  • Convolutional Local Feature 和 Transformer Encoder
    Transformer中的self-attention可以捕获长期依赖关系(即全局上下文),但它很可能会忽略每个patch中的结构性信息和局部关系。相反,cnn可以利用平移不变性中的局部连通性,使得CNN在对视觉对象进行分类时,对纹理有更强的依赖性,而不是形状。因此,MPViT以一种互补的方式将CNN与Transformer结合起来。其中为了表示局部特征,其采用了一个 depthwise residual bottleneck block,包括1×1卷积、3×3深度卷积和1×1卷积和残差连接。
  • Global-to-Local Feature Interaction
    请添加图片描述

5、实验测试

使用upernet作为分割方法,并将ImageNet-1k预训练的MPViTs集成到supernet中。接下来,为了公平比较,训练模型160k次迭代,批大小为16,使用AdamW[38]优化器,学习率为6e-5,权重衰减为0.01。使用标准的单尺度协议报告性能。使用mmseg[11]库实现mpvit。与其他Swin-T、Focal-T和XCiT-S12/16相比,mpvits的性能(48.3%)更高,分别为+3.8%、+2.5%和+2.4%。有趣的是,mpvit也超过了更大的型号,如Swin-S/B, XCiT-S24/16, -M24/16, -S24/8和Focal-S。此外,mpvitb性能优于最近(和更大的)SOTA变压器Focal-B[67]。这些结果表明,MPViT的多尺度嵌入和多路径结构使其具有多样化的特征表示能力。
在这里插入图片描述

6、文章贡献

  • 通过多路径并行设计实现了对多尺度信息的利用
  • 通过深度卷积操作实现了全局上下文的利用(Mask2Former也有一摸一样的结构)
  • 通过对照试验探究了多尺度多路径模型在不同尺度及路径数量下的效果

Transformer 复习

1、什么是Transformer

Transformer其实是一个sequence-to-sequence的模型,而Seq2seq模型是一个输入是sequence以及输出也是一个sequence的模型,其中需要注意的是输出有几种可能,和输入一样长、更短以及更长,当然还有让机器自己决定输出多长的情况。

2、Transformer模型的框架

Transformer模型,即Sequence-to-sequence模型,主要分为两个部分Encoder以及Decoder。输入的sequence经过Encoder进行编码处理,输出处理好的数据向量,之后将该数据向量输入到Decoder进行解码处理,这样最后就能得到想要的最后的输出Sequence结果。

3、Encoder

3.1、Encoder的作用

Sequence-to-sequence模型的Encoder主要作用就是处理一个向量,输出另外一个向量。当然其他模型也能够完成同样的任务,就比如RNN和CNN等模型。然后Encoder处理单元里面,包含了多重的Block,每一层的Block中会经过Self-attention处理。然后再通过Fully Connection进行连接,给下一层的block输出向量。

3.2、Encoder中Block的详细实现

Encoder的每一个Block输出都要经过如下图的步骤,首先原向量要经过self-attention处理得到一个预处理向量,预处理向量再与原向量进行Residual处理,紧接着是进行norm处理,norm处理是为了防止向量值出现过大的偏差,实现方式就是原向量与mean标准值的差,再除以偏离值。norm处理后的向量,会进行fully connection处理,得到新的fc处理向量,与原向量进行residual处理,最后再经过norm处理得到最后的结果。
请添加图片描述

4、Decoder

4.1、Decoder的作用

Sequence-to-sequence模型的Decoder主要作用就是把Encoder输出的向量。经过一系列的处理,最后输出一个可能性序列。如下图所示,将Encoder的输出向量,经过处理,输出成“机器学习”这样的一个序列,就好像机器识别到“机”这个字以后会判断出下一个字是“器”,整个序列是一个可能性序列,是经过softmax处理得到的。
请添加图片描述

4.2、可能性序列的产生过程

由上面的学习可以知道,Decoder会输出一个可能性序列,这个可能性序列实现的方式主要是根据前面的字符影响后面输出的字符,不断重复的影响及输出,就能够输出这样的可能性序列。这样的重复影响就能够联想到self-attention,但是self-attention是所有输出都彼此影响,是无法实现我们所说的可能性序列。因为只需要前者对后者的影响,而不需要后者对前者的影响。所以需要对self attention进行改进,变成masked self attention。如下图所示,它只会让前者影响后者,而不会导致后者影响前者的情况。向量内容的输入顺序是逐个输入,而不是同时输入,这是一个比较大的区别。
请添加图片描述

5、Encoder和Decoder之间的连接

Encoder和Decoder之间的连接主要集中在Cross attention当中,其主要两个输入由Encoder输入,另外一个由Decoder输入,这些输入都是通过各自的Self-attention(Mask)处理后输入到Cross attention进行下一步处理,这样便完成了两个结构之间的连接。
请添加图片描述

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

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

相关文章

「网络编程」其他重要的协议或技术_ DNS协议 | ICMP协议 | NAT技术

「前言」文章内容是DNS协议、ICMP协议、NAT技术的讲解。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、DNS协议1.1 背景1.2 域名简介1.3 域名解析的过程 二、ICMP协议2.1 ICMP简介2.2 ping命令2.3 traceroute命令 三、NAT技术3.1 NAT技术背景3.2 …

小型企业网设计-课设实验-爆款实验

可以按照我的配置依次配置&#xff0c;成品打包文件&#xff0c;请&#xff1a;Ensp888 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]un in en Info: Information center is disabled. [Huawei]# [Huawei]sysname SW5 [SW5]# [SW5]vlan batch…

(C++) 拷贝构造函数

目录 一、基本介绍 二、为什么需要拷贝构造函数 三、拷贝构造函数 四、传参时的问题 五、完整代码 一、基本介绍 拷贝构造函数是C中一个特殊的构造函数&#xff0c;用于创建一个类的对象作为另一个同类对象的副本。当一个对象以值的形式被传递给函数、从函数返回&#xff0…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈

深入浅出图解C#堆与栈 C# HeapingVS Stacking第一节 理解堆与栈 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.csdn.n…

Avalonia学习(十六)-Mapsui

今天开始继续Avalonia练习。 本节&#xff1a;Mapsui 1.引入 Mapsui.Avalonia 2.项目引入 前台代码 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm"using:MapsuiAvalonia.Vi…

C语言之分支与循环【附6个练习】

文章目录 前言一、什么是语句&#xff1f;1.1 表达式语句1.2 函数调用语句1.3 控制语句1.4 复合语句1.5 空语句 二、分支语句&#xff08;选择结构&#xff09;2.1 if语句2.1.1 悬空else2.1.2 练习&#xff08;1. 判断一个数是否为奇数 2. 输出1-100之间的奇数&#xff09; 2.2…

postman win7 低版本 postman7.0.9win64 postman7.0.9win32

百度网盘&#xff1a; postman7.0.9win64&#xff1a; 链接: https://pan.baidu.com/s/18ck9tI0r9Pqoz36MOwwnnQ 提取码: rkf7 postman7.0.9win32&#xff1a; 链接: https://pan.baidu.com/s/1HrpGPrgvVzyAcjdHuwVOpA 提取码: ke5k win7系统安装postman&#xff0c;可能会…

侯捷C++ 2.0 新特性

关键字 nullptr and std::nullptr_t auto 一致性初始化&#xff1a;Uniform Initialization 11之前&#xff0c;初始化方法包括&#xff1a;小括号、大括号、赋值号&#xff0c;这让人困惑。基于这个原因&#xff0c;给他来个统一&#xff0c;即&#xff0c;任何初始化都能够…

实验六——cache模拟器实验

前言 本次实验的主要目的是熟悉cache的原理。加深对cache的映像规则、替换方法、cache命中与缺失的理解。通过实验对比分析映像规则对cache性能的影响。 实验内容一&#xff1a;熟悉模拟程序 阅读给出的cache模拟程序&#xff08;cachesimulator.cpp&#xff09;&#xff0c;…

空间域图像增强之直方图均衡的python代码实现——冈萨雷斯数字图像处理

原理 直方图&#xff1a; 图像的直方图是一个图像中像素强度值分布的图表。 对于灰度图像&#xff0c;直方图展示了每个灰度级出现的频率。 直方图均衡步骤&#xff1a; 计算累积分布函数&#xff08;CDF&#xff09;&#xff1a;首先&#xff0c;计算图像的直方图&#xff0…

oracle物化视图

物化视图定义 视图是一个虚拟表&#xff08;也可以认为是一条语句&#xff09;&#xff0c;基于它创建时指定的查询语句返回的结果集&#xff0c;每次访问它都会导致这个查询语句被执行一次&#xff0c;为了避免每次访问都执行这个查询&#xff0c;可以将这个查询结果集存储到…

C语言与人生:数组交换和二分查找

少年们&#xff0c;大家好。我是博主那一脸阳光&#xff0c;今天和分享数组交换和二分查找。 前言&#xff1a;探索C语言中的数组交换操作与二分查找算法 在计算机编程领域&#xff0c;特别是以C语言为代表的低级编程语言中&#xff0c;对数据结构的理解和熟练运用是至关重要的…

C# 如何读取Excel文件

当处理Excel文件时&#xff0c;从中读取数据是一个常见的需求。通过读取Excel数据&#xff0c;可以获取电子表格中包含的信息&#xff0c;并在其他应用程序或编程环境中使用这些数据进行进一步的处理和分析。本文将分享一个使用免费库来实现C#中读取Excel数据的方法。具体如下&…

Android 跨进程之间通信(IPC)方式之BroadcastReceiver

Android 跨进程之间通信 Android 跨进程之间通信(IPC)方式之BroadcastReceiverAndroid 跨进程之间通信(IPC)方式之ContentProvider 文章目录 Android 跨进程之间通信前言一、关于系统广播二、如何利用BroadcastReceiver跨进程通信1.创建广播接收器2.清单文件中声明注册3.发送广…

08-接口文档管理工具-项目集成knife4j__ev

2、knife4j快速入门 2.1 knife4j介绍 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍! gitee地址&#xff1a;knife4j: Knife4j是一个集Swagger2 和 OpenAPI3为一体的增…

目标检测-Two Stage-Mask RCNN

文章目录 前言一、Mask RCNN的网络结构和流程二、Mask RCNN的创新点总结 前言 前文目标检测-Two Stage-Faster RCNN提到了Faster RCNN主要缺点是&#xff1a; ROI Pooling有两次量化操作&#xff0c;会引入误差影响精度 Mask RCNN针对这一缺点做了改进&#xff0c;此外Mask …

功能真强大!5个令人惊叹的 Jupyter 黑科技

Jupyter 是一种功能强大的交互式计算环境&#xff0c;被广泛应用于数据分析、机器学习、科学计算等领域。 除了常见的基本功能外&#xff0c;Jupyter还隐藏着许多令人惊叹的黑科技&#xff0c;这些功能可以帮助用户更高效地完成工作&#xff0c;提升工作体验。 在本文中&…

.NET Core中灵活使用反射

前言 前段时间有朋友问道一个这样的问题&#xff0c;.NET Core中如何通过Attribute的元数据信息来调用标记的对应方法。我第一时间想到的就是通过C#反射获取带有Custom Attribute标记的类&#xff0c;然后通过依赖注入&#xff08;DI&#xff09;的方式获取对应服务的方法并通…

Elasticsearch8集群部署

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 本文记录在3台服务器上离线搭建es8.7.1版本集群。 1. 修改系统配置 1.1 hosts配置 在三台es节点服务器加入hostname解析&…

电脑系统报错msvcr100.dll丢失的解决方法

本文将详细介绍msvcr100.dll的作用、丢失原因以及解决方法。 一、msvcr100.dll是什么文件&#xff1f; msvcr100.dll是Microsoft Visual C 2010 Redistributable Package的一部分&#xff0c;它是运行许多Windows应用程序所必需的动态链接库文件。它包含了C运行时库&#xff…