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。

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

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

相关文章

【算法训练记录——Day36】

Day36——贪心Ⅳ 1.leetcode_452用最少数量的箭引爆气球2.leetcode_435无重叠区间3.leetcode_763划分字母区间4.leetcode_ 1.leetcode_452用最少数量的箭引爆气球 思路:看了眼题解,局部最优:当气球出现重叠,一起射,所用…

YOLOv5改进 | 注意力机制 | 迈向高质量像素级回归的极化自注意力【全网独家】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录: 《YOLOv5入门 …

高精密机械设备中滚珠导轨的表面处理工艺有哪些?

滚珠导轨是机床传动和定位的传动元件,其表面处理方式对机床性能和使用寿命起着决定性的作用,不同的表面处理方法可以提高导轨的耐磨性、抗腐蚀性和整体性能。那么,滚珠导轨的表面处理方式有哪几种呢? 1、磨削法:磨削技…

AFLNet入门教学——安装(Ubuntu22.04.4)

1、AFLNet简介 AFLNet 是一种专门用于测试网络协议实现的模糊测试工具。模糊测试是一种软件测试技术,通过向目标程序提供大量随机或半随机数据来发现潜在的漏洞和错误。AFLNet 的设计目标是增强 AFL (American Fuzzy Lop) 的功能,以更有效地测试网络协议…

input子系统学习(一)

1、输入子系统框架 2、编写一个简单的设备驱动层代码 #include<linux/module.h> #include<linux/init.h> #include<linux/input.h> #include<linux/time.h>struct input_dev *my_input_dev;static void timer_function(struct timer_list *t); DEFINE…

中医背诵笔记(黄帝内经、伤寒论等)

目录 黄帝内经上古天真论今人和古人之差异&#xff08;精神内守&#xff0c;病安从来&#xff1f;&#xff09;男女每个年龄阶段身体状态至人、圣人、贤人 宣明五气篇五脏所藏 与 五脏所主七情与情绪与气的关系 天干地支天干地支与脏腑经络的关系 伤寒论六种伤寒组合及对应的药…

一款轻量级的通信协议---MQTT (内含Linux环境搭建)

目录 MQTT MQTT的关键特点&#xff1a; 应用场景 Linux环境搭建&#xff1a; 1. 安装mosquitto 2. Linux下客户端进行通信 3. PC端和Linux下进行通信 安装MQTT. fx 4. MQTT.fx的使用 1. 点击连接 ​编辑 2. 连接成功 3. 订阅主题或者给别的主题发送消息 遇到的问…

(项目实战)聚合支付系统开发环境搭建-基于VMware17安装Centos7.9

1 开发环境介绍 dtpay聚合支付系统和ecard预付卡系统&#xff0c;服务端部署在Linux环境。后续的开发环境&#xff0c;生产环境都是基于Linux进行搭建&#xff0c;系统使用到的相关中间件(RocketMQ,Redis&#xff0c;Nginx等)&#xff0c;配置中心Nacos&#xff0c;数据库MySQ…

Emp.dll文件丢失?理解Emp.dll重要性与处理常见问题

在繁多的动态链接库&#xff08;DLL&#xff09;文件中&#xff0c;emp.dll 可能不是最广为人知的&#xff0c;但在特定软件或环境中&#xff0c;它扮演着关键角色。本文旨在深入探讨 emp.dll 的功能、重要性以及面对常见问题时的解决策略。 什么是 emp.dll&#xff1f; Emp.d…

python 第6册 辅助excel 002 批量创建非空白的 Excel 文件

---用教授的方式学习 此案例主要通过使用 while 循环以及 openpyxl. load_workbook()方法和 Workbook 的 save()方法&#xff0c;从而实现在当前目录中根据已经存在的Excel 文件批量创建多个非空白的Excel 文件。当运行此案例的Python 代码&#xff08;A002.py 文件&#xff0…

【STM32】在标准库中使用定时器

1.TIM简介 STM32F407系列控制器有2个高级控制定时器、10个通用定时器和2个基本定时器。通常情况下&#xff0c;先看定时器挂在哪个总线上APB1或者APB2&#xff0c;然后定时器时钟需要在此基础上乘以2。 2.标准库实现定时中断 #ifndef __BSP_TIMER_H #define __BSP_TIMER_H#if…

2.1 大语言模型的训练过程 —— 《带你自学大语言模型》系列

《带你自学大语言模型》系列部分目录及计划&#xff0c;完整版目录见&#xff1a; 带你自学大语言模型系列 —— 前言 第一部分 走进大语言模型&#xff08;科普向&#xff09; 第一章 走进大语言模型1.1 从图灵机到GPT&#xff0c;人工智能经历了什么&#xff1f;1.2 如何让…

基于MDEV的PCI设备虚拟化DEMO实现

利用周末时间做了一个MDEV虚拟化PCI设备的小试验&#xff0c;简单记录一下&#xff1a; DEMO架构&#xff0c;此图参考了内核文档&#xff1a;Documentation/driver-api/vfio-mediated-device.rst host kernel watchdog pci driver: #include <linux/init.h> #include …

【网络架构】keepalive

目录 一、keepalive基础 1.1 作用 1.2 原理 1.3 功能 二、keepalive安装 2.1 yum安装 2.2 编译安装 三、配置文件 3.1 keepalived相关文件 3.2 主配置的组成 3.2.1 全局配置 3.2.2 配置虚拟路由器 四、实际操作 4.1 lvskeepalived高可用群集 4.2 keepalivedngi…

AI视界引擎 | ​基于 YOLOv8 和计算机视觉 CV 的实时识别系统!

本文来源公众号“AI视界引擎”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;​基于 YOLOv8 和计算机视觉 CV 的实时识别系统&#xff01; 技术进步和创新正在尽可能地推进作者的日常生活&#xff0c;但仍有很大一部分社会群体因为…

自研Eclipse插件的生成及安装和使用

说明&#xff1a; 本处是使用个人自研的Eclipse插件为例&#xff0c;创建了一个菜单式的插件组&#xff0c;插件组下&#xff0c;有一个生成右击Jakarta EE服务端点类后&#xff0c;生成端点对应的Restful客户端。有什么问题&#xff0c;欢迎大家交流&#xff01;&#xff01;…

cython 笔记

数据类型 # bool 类型 // bool_type_ptactice.pyx cdef bint a 123 # 非0 为 真 &#xff0c; 0 为假 cdef bint b -123 cdef bint c 0 py_a a # cdef 定义的内容没法直接在python中直接引用 py_b b py_c c// main.py import pyximport pyximport.install(language_le…

教您设置打开IDM下载浮动条的快捷键 全网最强下载神器idm怎么使用教程 idm浮动条不显示怎么办

很多人都知道Internet Download Manager(以下简称IDM)是一款非常优秀的下载提速软件。它功能强大&#xff0c;几乎能下载网页中的所有数据&#xff08;包括视频、音频、图片等&#xff09;&#xff0c;且适用于现在市面上几乎所有的浏览器&#xff0c;非常受大家欢迎。 在使用I…

面向对象和面向过程编程的区别

引言 小伙伴们&#xff0c;当你们看到这章的时候&#xff0c;显然你们已经跨过了来自指针给你们带来的麻烦&#xff0c;唔~真棒呢&#xff0c;但是我们只学会一些基础的C语法并不能帮我们解决问题&#xff0c;甚至是稍微难一些的题目我们都没办法解决&#xff0c;那怎么办呢&am…

多机调度问题

#include<iostream> #include<string> using namespace std; struct work {int time;int number; }; int setwork0(int m,int n,int a[],struct work w[]) {int maxtime0;for(int i1; i<m; i){cout<<i<<"号设备处理作业"<<w[i].num…