Advertisement

Transfomer相关知识点】

阅读量:
  • 数据方便
  1. 数据扩增

  2. 制作更多的数据集。

从模型预测结果中筛选出误判图像,并对这些误判图像的特征进行分析,设计相应的优化算法。

  • 网络结构
  1. 更换更优的backbone

  2. 使用FPN+PAN,提高对小目标的预测能力

  3. 使用更优的loss:ciou等

  4. 使用更优的正负样本选择方法:如SimOTA

Self-Attention

3.2 Q, K, V 的计算

Self-attention的输入以矩阵X的形式呈现,则通过应用线性变换矩阵W_Q、W_K和W_V来获得相应的查询(Query)、键(Key)与值(Value)。具体计算过程如图所示,请注意其中X、Q、K、V每一行分别对应一个词。

3.3 Self-Attention 的输出

我们获得了矩阵 Q, K, V后就能计算出自注意力机制的输出了;计算的具体公式如下:

公式中计算矩阵Q和K每一行向量的内积,为了防止内积过大,因此除以

平方根运算的结果是定义一个标量值对吗?当我们将向量Q与向量K进行转置后再进行相乘时会得到一个方阵该方阵具有相同的行数和列数即均为n×n维度其中n代表输入序列中的单词总数这一操作能够有效捕捉到不同位置之间的重要关联关系如图所示我们可以通过这一过程来计算不同词汇之间的注意力权重从而实现对文本信息的理解

,1234 表示的是句子中的单词。

得到

随后通过Softmax函数估算每个单词与其他单词之间的注意力权重,在该公式中定义的方式是将矩阵中的每一行分别应用Softmax函数使得每行元素之和归一化为1

得到 Softmax 矩阵之后可以和V相乘,得到最终的输出Z。

在图中,Softmax矩阵的第一行用于表示单词1与其他所有单词之间的注意力权重关系。其最终输出结果即为该行所对应的计算结果。

等于所有单词 i 的值

根据 attention 系数的比例加在一起得到,如下图所示:

Swin-Transformer代码解析

预处理PatchEmbed

复制代码
 graph TD

    
 1(N,3,224,224)--conv-3,96,4,4-->N,96,56,56--flaten+transpose-->N,56*56,96-->dropout
    
 2(N,C,H,W)--conv-C,C2,4,4-->N,C2,H/4,W/4--flaten+transpose-->N,H/4*W/4,C2-->dropout
    
    
    
    
    代码解读

stage

每个阶段的输入与输出均为N,HW,C形式,则最终输出结果即为一个特征图,并未与其他backbone产生任何差别。

PatchMerging

就是focus结构,替代池化使用的

以下的N,HW,C等价于上一节的N,H/4W/4,C2

复制代码
 graph TD

    
 N,H*W,C--focus池化-->N,H/2*W/2,4*C--norm+liner-4C,2C-->N,H/2*W/2,2C
    
    
    
    
    代码解读

block

复制代码
 graph TD

    
 N,H*W,C--LN+reshape-->N,H,W,C--W-MSA/SW-MSA-->N,H/2*W/2,C
    
    
    
    
    代码解读

W-MSA

核心机制主要是基于自注意力机制。其实在局部区域上应用更为高效。从而减少了计算开销。这本质上等价于全局信息融合行为。

SW-MSA

参考链接

Swin-Transformer结合代码深度解析

深入掌握 Vision Transformer 原理及代码实现(推荐一篇内容详实丰富的技术综述作为重点章节介绍的同时)

全部评论 (0)

还没有任何评论哟~