Transformer基础及视觉应用

文章目录

  • Transformer基础及视觉应用
    • 注意力机制基础(主要介绍Transformer用到的类型)
    • Transformer的编解码器结构(Encoder and Decoder)
    • Non-local Neural Networks
    • Transformer与大规模图像识别(Image Recognition at Scale)
    • DETR-2020
    • 分割应用

Transformer基础及视觉应用

注意力机制基础(主要介绍Transformer用到的类型)

key-valure attention

在attention的计算中,通过 q q q x x x 来计算 α \alpha α,在用 α \alpha α 加权求和时也是用 x x x, 这两部分 x x x 的功能是不同的,所以拆分为 ( k , v ) (k,v) (k,v)。我们先用 k k k 来和 q u e r y query query 经过打分函数 s ( k i , q ) s(k_i,q) s(ki,q) s o f t m a x softmax softmax 来计算,得到注意力分布 α \alpha α,再加权汇总,相对于传统的,功能分离使key-valure attention更加灵活。

key-value pair attention

Self-Attention(自注意力机制): 它允许模型在编码一个单词时权衡该单词上下文的重要性。换句话说,在编码过程中,它可以根据不同单词的相关性将重点放在这些单词上,从而更有效地理解上下文并处理文本中的长距离依赖关系。

在这里插入图片描述

Cross-Attention 一般用于 Decoder,Transformer最开始被提出是用于做机器翻译的,input和output是原语言和目标语言,在原语言经过Encoder和目标语言经过 Masked Multi-Head Attention 后,它们要做一个Cross Attention,就是用当前的表示去append一下原语言里面的表示。

Multi-Head Attention(多头注意力机制): Transformer使用多组学习到的线性投影(称为 “头”),而不是进行单一的注意力计算。每个 "头 "都能有效地让模型关注不同的位置,捕捉不同方面的信息。

Multi Head Attention

如上图所示,多个注意力头根据不同的 Query ( Q i Q_i Qi) 得到不同的Attention,最后再 concat 起来

多头注意力机制的思想,个人觉得有点像集成学习的思想,最后通过整合(Concat)多个注意力头,以注意到多角度的信息提高性能。

Transformer的编解码器结构(Encoder and Decoder)

Encoder and Decoder

编码器和解码器(Encoder and Decoder): 原始的Transformer模型具有编码器-解码器结构。编码器接收输入数据并生成一连串连续的表示,其中包含整个序列的信息。然后,解码器接收这些表示并生成输出数据,每次生成一个元素,同时以先前生成的元素为条件。其中 Feed Forward 是一个逐位的 FFN 层(每个词向量都会进全连接网络扫一遍,类似一个宽度为 1 的卷积,不同的是这里是两层的全连接层,先升维再降维)。

在Decoder中,Masked Multi-Head Attention 其实是打了个掩码,让注意力机制只能往前看,这是因为Decoder的训练是教师强制的(Teacher forcing) 的,输入的时候是整个序列都输进去的,但生成的时候是自回归的,所以不能让它往后看。

位置编码(Positional Encoding): 由于Transformer并不按顺序处理数据,因此它本身并不了解数据的位置或顺序。为了解决这个问题,位置编码被添加到了输入中(input embeddings),为模型提供了一些关于单词在句子中相对位置的信息。

层归一化和残差连接(Layer Normalization and Residual Connections): 编码器和解码器中的每个子层(自注意(Multi-Head Attention)、前馈(Feed Forward) )后都有一个残差连接,然后进行层归一化,以获得稳定的训练效果。在上图中 “Add & Norm” 包括了层归一化和残差连接(Layer Normalization and Residual Connections),实现是通过 z 1 = L a y e r N o r m ( x + z ) z_1=LayerNorm(x+z) z1=LayerNorm(x+z) 实现的,其中 z z z 是Multi-Head Attention 的输出。

Non-local Neural Networks

Non-local_1

  1. 非局部(Non-local)操作:通过将自注意力转移到非局部(Non-local)块来实现。

  2. 与现有架构的兼容性: CNN + 非局部

  3. 应用:视频识别、分割

  4. 性能:在长距离上下文依赖的任务方面有明显的性能改善。

可参考论文:Non-local Neural Networks, CVPR-2018

Non-local_2

Non-local_3

可参考论文:GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond TPAMI-2020

Transformer与大规模图像识别(Image Recognition at Scale)

ViT

图像表示法(Image Representation): 图像被分割成固定大小的补丁(patches),每个补丁被平铺成一个一维向量,然后由Transformer模型进行处理。

位置嵌入(Positional Embeddings): 由于Transformer模型本身没有对图像的二维结构有任何固有的感知,因此要为每个补丁(patch)添加位置嵌入,以保留位置信息。

自注意力机制(Self Attention): 转换器中的自注意力机制使其在对某个补丁进行编码时,能够关注图像中的不同补丁。这有助于模型识别图像各部分的复杂模式。

性能: ViT 在 ImageNet 等多个基准数据集上取得了一流的性能,超过了 EfficientNet 等现有的基于 CNN 的模型。不过,值得注意的是,在大型数据集上训练的大模型的性能提升更为明显。

ViT 1

优点:

  1. 纯Transformer结构

  2. 同时扩大训练规模和模型规模。

  3. 与 CNN 变体一起使用时性能卓越。

缺点:

  1. 计算成本高。
  2. 数据效率低
  3. 需要更强的训练增强

参考论文:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale, ICLR-2021

DETR-2020

DETR 1

端到端训练(End-to-End Training): 传统的物体检测方法(如 Faster R-CNN 或 YOLO)将任务划分为不同的阶段(如提出区域和对每个提议进行分类),而某些阶段(如非极大值抑制)是不可区分的,这就阻碍了端到端的训练。而 DETR 可以通过简单的架构实现端到端的训练,简化了物体检测过程。

二分图匹配损失(Bipartite Matching Loss): DETR 引入了一种新的损失函数,称为二分图匹配损失。该函数使用一对一匹配过程将预测对象与地面实况对象相匹配,最大限度地降低了反映分类误差和边界框损失的成本**。**

基于集合的预测(Set-Based Prediction): 与其他预测固定数量实例的方法不同,DETR 将物体检测视为一个集合预测问题。这意味着,无论场景中的物体数量有多少,它都会输出一个固定大小的预测集和相应的置信度分数。

Transformer架构(Transformer Architecture): DETR 采用Transformer编码器-解码器架构。编码器处理从应用于输入图像的 CNN 主干网中获得的特征向量列表,而解码器则利用这些信息生成一组预测结果。

性能: 与其他一些最先进的模型相比,DETR 在 COCO 等基准测试中的性能并不出众,但却表现出了很强的竞争力。它在长尾物体检测方面表现尤为突出,因为在长尾物体检测中,某些类别的物体很少出现。

无需锚点框(No Need for Anchor Boxes): 传统的检测器需要预定义的锚点框或感受野来提出物体位置。DETR 不需要这些,从而降低了检测过程的复杂性。

结合分割(Incorporating Segmentation): DETR 框架可通过在解码器输出的顶部添加一个小型卷积头来执行全视角分割,从而展示了这种方法的灵活性。

DETR 2

分割应用

分割应用 1
分割应用 2

上面提到的医学图像相关的建议观看MICCAI会议的papers。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法——双指针前缀和】

例题&#xff1a; 奇偶排序数组&#xff08;与下标对应&#xff09; 奇数偶数个数相等 922. 按奇偶排序数组 II #include<iostream> #include<vector> #include<algorithm> using namespace std;int main() {vector<int>nums { 4,2,5,7 };//指针x…

python进阶函数

目录 函数多返回值函数多种传参方式匿名函数 函数多返回值 问&#xff1a;如果一个函数如些两个return&#xff08;如下所示&#xff09;&#xff0c;程序如何执行&#xff1f; def return_num():return 1return 2result return_num() print(result)答&#xff1a;只执行了第…

【Python学习篇】Python实验小练习——异常处理(十三)

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…

数据同步软件有哪些

数据同步软件有哪些呢&#xff1f;随着企业规模的扩大&#xff0c;企业数据也积累得越来越多&#xff0c;万一发生宕机风险&#xff0c;那么这个损失将不可估量。所以为了容灾备用&#xff0c;我们往往需要将数据同步到另一台备胎服务器上&#xff0c;进行冗余。 那么需要同步的…

GPU配置pytorch环境(links for torch)

一、创建一个新的虚拟环境 二、激活虚拟环境 三、打开或新建一个pycharm项目&#xff0c;把环境选成我们刚刚新建的虚拟环境 四、从links for torch网站下载与自己cuda版本和python版本对应的torch 五、在pycharm的终端pip install 安装torch 直到显示成功安装 六、验证pytorch…

【Matlab函数分析】imread从图形文件读取图像

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

gin 服务端无法使用sse流式nginx配置

我在本地使用 gin 可以流式的将大模型数据传递给前端。但是当我部署到服务器中时&#xff0c;会阻塞一段时间&#xff0c;然后显示一大段文本。 起初我怀疑是gin 没有及时将数据刷到管道中&#xff0c;但是经过测试&#xff0c;还是会阻塞。 c.Writer.(http.Flusher).Flush()最…

HTML5的多线程技术:Web Worker API

Web Workers API 是HTML5的一项技术&#xff0c;它允许在浏览器后台独立于主线程运行脚本&#xff0c;即允许进行多线程处理。这对于执行密集型计算任务特别有用&#xff0c;因为它可以防止这些任务阻塞用户界面&#xff0c;从而保持网页的响应性和交互性。Web Workers在自己的…

CAS服务端部署

部署CAS Cas服务端其实就是一个war包。 在资源\cas\source\cas-server-4.0.0-release\cas-server-4.0.0\modules目录下cas-server-webapp-4.0.0.war 将其改名为cas.war放入tomcat目录下的webapps下。启动tomcat自动解压war包。浏览器输入 登录页面 http://localhost:8080/ca…

43 - 部门工资前三高的所有员工(高频 SQL 50 题基础版)

43 - 部门工资前三高的所有员工 # dense_rank 排名selectDepartment,Employee,Salary from(selectd.name as Department,e.name as Employee,e.salary as Salary,(dense_rank() over (partition by d.name order by e.salary desc)) as rankingfrom Employee e left join Depar…

【设计模式】行为型-状态模式

在变幻的时光中&#xff0c;状态如诗篇般细腻流转。 文章目录 一、可调节的灯光二、状态模式三、状态模式的核心组件四、运用状态模式五、状态模式的应用场景六、小结推荐阅读 一、可调节的灯光 场景假设&#xff1a;我们有一个电灯&#xff0c;它可以被打开和关闭。用户可以…

Nvidia jetson Orin/Nano + 智能座舱摄像头实现车载AI视觉

智能座舱系统包括DMS&#xff08;Driver Monitor System&#xff09;驾驶员疲劳监测系统和OMS乘员监测系统&#xff0c;通过在车内安装摄像头感知驾驶员和乘客的行为以及车内状况&#xff1a;DMS摄像头能够实现驾驶员疲劳监测、驾驶员注意力监测、危险驾驶行为监测以及驾驶员身…

【python】python基于tkinter的学生成绩管理系统(源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

如何做到高级Kotlin强化实战?(一)

高级Kotlin强化实战&#xff08;一&#xff09; 第一章 Kotlin 入门教程1.Kotlin 入门介绍2.Kotlin 与 Java 比较 第一章 Kotlin 入门教程 1.Kotlin 入门介绍 Kotlin 概述 Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言。它主要是 JetBrains 开发团队所开发出来的编程…

打靶记录——靶机medium_socnet

靶机下载地址 https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ 打靶过程 由于靶机和我的Kali都处于同一个网段&#xff0c;所以使用arpscan二次发现技术来识别目标主机的IP地址 arpscan -l除了192.168.174.133&#xff0c;其他IP都是我VMware虚拟机正…

算法力扣刷题 二十六【459.重复的子字符串】

前言 字符串篇&#xff0c;继续。 记录 二十六【459.重复的子字符串】 一、题目阅读 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。示例…

在TkinterGUI界面显示WIFI网络(ESP32s3)摄像头画面

本实验结合了之前写过的两篇文章Python调用摄像头&#xff0c;实时显示视频在Tkinter界面以及ESP32 S3搭载OV2640摄像头释放热点&#xff08;AP&#xff09;工作模式–Arduino程序&#xff0c;当然如果手头有其他可以获得网络摄像头的URL即用于访问摄像头视频流的网络地址&…

浅谈Tomcat

文章目录 一、什么是Tomcat&#xff1f;二、Tomcat的下载安装三、使用tomcat访问资源 一、什么是Tomcat&#xff1f; Tomcat 就是一个 HTTP 服务器。 前面我们聊了HTTP服务器&#xff0c;像我们在网页输入URL&#xff0c;其实就是在给人家的HTTP服务器发送请求&#xff0c;既…

计算机网络之数据通信原理(中)

上节内容传送口&#xff1a;数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点&#xff1a; 一个比特时间内可传输一个字符&#xff0c;传输速度快&#xff0c;每个比特传输要求一个单独的信道支持&#xff0c;通信成本高&#xf…

红黑树插入删除流程(流程图)

红黑树插入删除流程&#xff08;流程图&#xff09; 红黑树性质 左根右(二叉树&#xff09;根叶黑&#xff08;根节点是黑色的&#xff09;不红红&#xff08;不存在相邻两个红色节点&#xff09;黑路同&#xff08;对于每个节点&#xff0c;从该节点出发到任一空叶节点所经过…