当前位置: 首页 > news >正文

DETR论文,基于transformer的目标检测网络 DETR:End-to-End Object Detection with Transformers

transformer的基本结构:

  • encoder-decoder的基本流程为:

1)对于输入,首先进行embedding操作,即将输入映射为向量的形式,包含两部分操作,第一部分是input embedding:例如,在NLP领域,称为token embedding,即将输入序列中的token(如单词或字符)映射为连续的向量表示;在CV领域,可以是将每个像素或者每个patch块映射为向量形式,例如,patch embedding层
2)另一个embedding操作为positional encoding:即位置编码,即一组与输入经过embedding操作后的向量相同维度的向量(例如都为[N, HW, C]),用于提供位置信息。位置编码与input embedding相加得到transformer 编码器的输入。
3)transformer encoder:是由多个编码模块组成的编码器层,每个编码模块由多头自注意力机制+残差add+层归一化LayerNorm+前馈网络FFN+残差add+层归一化LayerNorm组成

多头自注意力机制:核心部分,例如,在CV领域,经过embedding层后的输入为[N, HW, C],N为Batch num,HW为像素个数,每个像素映射为一个维度为C的向量;然后通过QKV的自注意力机制和划分为多头的方式,得到输出为[N, HW, C]:

要除以​\sqrt{d_{k}^{}}的原因:查询(Query)与键(Key)之间的点积,然后将这个点积除以一个缩放因子,最后应用softmax函数来获得注意力权重。如果不进行缩放,当键的维度dk很大时,点积的结果可能会非常大,这会导致softmax函数的梯度非常小,从而引起梯度消失问题。通过除以根号dk,提高训练的稳定性。

add+LayerNorm:经过多头自注意力机制后再与输入相加,并经过层归一化LayerNorm,即在最后一个维度C上做归一化,详见https://blog.csdn.net/m0_48086806/article/details/132153059
前馈网络FFN:是由两个全连接层+ReLu激活函数组成

4)transformer decoder:是由多个解码模块组成的解码器层,每个解码模块由Masked多头自注意力机制+残差add&层归一化LayerNorm+多头cross attention机制+add&LayerNorm+前馈网络FFN+add&LayerNorm。
5)此外需要注意的是,第一个解码模块的输入为output(可以初始化为0或者随机初始化)经过embedding操作后的结果,之后各个解码模块的输入就变为前一个解码模块的输出了;第二个cross attention机制的QKV输入分别为:KV键值对都是等于编码器最终的输出;Query为Masked多头自注意力的输出

Masked多头自注意力机制:一个通俗解释为:一个词序列中,每个词只能被它前面的词所影响,所以这个词后面的所有位置都需要被忽略,所以在计算Attention的时候,该词向量和它后面的词向量的相关性为0。因此为Mask

6)最后通过Linear层+Softmax得到最终的输出

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 面向对象编程-继承
  • 谷歌发布会现场尴尬瞬间:AI助手Gemini展示挑战苹果
  • 图数据库在社交网络分析中的应用
  • X-Recon:一款针对Web安全的XSS安全扫描检测工具
  • opencv基础的图像操作
  • 再见Figma!!新的设计,代码协作神器!【送源码】
  • C#单例模式
  • HTML5+JavaScript绘制彩虹和云朵
  • GNU/Linux - copy_{to,from}_user: 用户和内核空间的内存互拷贝
  • C++中的IO流
  • oracle使用sql生成表结构文档
  • 虚拟人实时主持创意互动方案:赋能峰会论坛会议等活动科技互动感
  • 011 | efinance分析豆一主连期货
  • 电脑开机后出现bootmgr is missing原因及解决方法
  • Microsoft VBA Excel VBA函数学习笔记——数据切分熟练度+1
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android 架构优化~MVP 架构改造
  • IDEA 插件开发入门教程
  • Lsb图片隐写
  • 彻底搞懂浏览器Event-loop
  • 程序员最讨厌的9句话,你可有补充?
  • 飞驰在Mesos的涡轮引擎上
  • 工作中总结前端开发流程--vue项目
  • 悄悄地说一个bug
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 移动端 h5开发相关内容总结(三)
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​油烟净化器电源安全,保障健康餐饮生活
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #、%和$符号在OGNL表达式中经常出现
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #pragma once
  • #QT(智能家居界面-界面切换)
  • #单片机(TB6600驱动42步进电机)
  • #数据结构 笔记一
  • $(selector).each()和$.each()的区别
  • (1)(1.13) SiK无线电高级配置(五)
  • (2)(2.10) LTM telemetry
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (LLM) 很笨
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (六)Hibernate的二级缓存
  • (面试必看!)锁策略
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)Travel Information Center
  • (一)UDP基本编程步骤