Transfomer相关知识点】

  • 数据方便

  1. 数据扩增

  1. 制作更多的数据集。

将模型预测错的图片挑出来,然后根据这些预测错误图片的特征进行相应的算法设计。

  • 网络结构

  1. 更换更优的backbone

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

  1. 使用更优的loss:ciou等

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

Self-Attention

3.2 Q, K, V 的计算

Self-Attention 的输入用矩阵X进行表示,则可以使用线性变阵矩阵WQ,WK,WV计算得到Q,K,V。计算如下图所示,注意 X, Q, K, V 的每一行都表示一个单词。

3.3 Self-Attention 的输出

得到矩阵 Q, K, V之后就可以计算出 Self-Attention 的输出了,计算的公式如下:

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

的平方根。Q乘以K的转置后,得到的矩阵行列数都为 n,n 为句子单词数,这个矩阵可以表示单词之间的 attention 强度。下图为Q乘以

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

得到

之后,使用 Softmax 计算每一个单词对于其他单词的 attention 系数,公式中的 Softmax 是对矩阵的每一行进行 Softmax,即每一行的和都变为 1.

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

上图中 Softmax 矩阵的第 1 行表示单词 1 与其他所有单词的 attention 系数,最终单词 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

每个stage的输入和输出都是N,HW,C的形式,因此,最后的输出也相当于是一个特征图,与其他的backbone没有任何区别。

PatchMerging

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

以下的N,H*W,C等价于上一节的N,H/4*W/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

主要核心还是self-attention,只不过是局部使用而已,减少计算量。其实就是nonlocal

SW-MSA

参考链接

Swin-Transformer结合代码深度解析

搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(十六)——介绍的非常详细(主要看这个,也有VIT的讲解)


版权声明:本文为Runnymmede原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>