• 两种Deformable Attention的区别


    先分别写一下流程

    Deformable DETR(2020)的Deformable Attention

    请添加图片描述
    解释:
    Deformable Attention如下图所示K=3, M=3K是指每个zq会和K个offset算attention,M是指M个head, z q z_q zq有N=HW个:

    参考点:reference points,各个特征层上的点,(0.5,0.5)x 4,(0.5,1.5)x 4,…(H-0.5,W-0.5)x 4 ,再除以H或W进行归一化;
    偏移量:offsets,网络自己学习的偏移量;
    采样点:reference points + offsets,每个特征点都会学习得到4个采样点,然后只计算这个特征点和这四个采样点的相似度即可,不需要学习和所有特征点的相似度;
    reference point确定方法为用了torch.meshgrid方法,调用函数(get_reference_points)。 对于每一层feature map初始化每个参考点中心横纵坐标,加减0.5是确保每个初始点是在每个pixel的中心,例如[0.5,1.5,2.5, …]
    在Decoder中,参考点的获取方法为object queries通过一个nn.Linear得到每个对应的reference point。
    初始的采样点位置相当于会分布在参考点3x3、5x5、7x7、9x9方形邻域

    • Z Z Z :输入特征 ,[HW,C]
    • z q z_q zq :query ,N个[1,C]
    • p q p_q pq :参考点Reference Point,就是zq在特征图x上的坐标,是2d向量( P q x , P q y Pqx,Pqy PqxPqy(0和1之间)
    • ▲ P m q k ▲Pmqk Pmqk :offsets,由每个 query z q z_q zq经过一个Linear得到,每个head会生成K个offset,一共M个head,即,在每个head中采样K个位置
    • W ′ m x W'm_x Wmx :Transformation Matrix,就是过一个Linear
    • (query z q z_q zq送进通道数为3MK的Linear,前2MK个通道编码 ▲ P m q k ▲Pmqk Pmqk,剩下的MK过softmax得到对应的 A m q k Amqk Amqk
    • Values : p q p_q pq+ ▲ P m q k ▲Pmqk Pmqk获取在特征图上的值,通常是小数,因此从特征图上索引特征时采用双线性插值的方式,之后乘上 W ′ m x W'm_x Wmx
    • A m q k Amqk Amqk :Attention Weights,也一样,直接由query
    • z q z_q zq经过linear和softmax得到,也是每个head生成K个Attention weight,和(因此,在DeformableDETR的Deformable Attention里,没有真的key query乘积计算,更像DCN)

    DAT(2022)的的Deformable Attention

    请添加图片描述
    文章可视化画的是针对最重要的key,我现在见过对attention map,query做可视化的,想怎么解释就怎么解释

    流程:

    1. 特征图 x x x [H,W,C]
    2. 根据feature map生成参考点reference point,这里不是网格中心而是网格的交接点(整){(0, 0), . . . , (HG − 1, WG − 1)}
    3. 将reference point norm到(-1,1)之间,坐标(-1,-1)代表左上角,坐标(1,1)代表右下角
    4. Δ P ΔP ΔP由以query为输入的offset Network得到,并将得到的 Δ P ΔP ΔP与reference points的坐标相加,从而得到偏移后位置信息。 Δ P ΔP ΔP幅度受超参数s控制防止过大。
    5. 对变形后的reference points使用双线性插值方法进行采样从而得到x:sampled features
    6. 过两个线性层分别得到v和k
    7. bias offset:我们计算归一化范围[−1,+1]中的相对位移,然后通过连续相对位移在参数化偏置表ˆB∈R(2H−1)×(2W−1)中插值φ(ˆB;R),以覆盖所有可能的偏移值。
      8.多头输出:在这里插入图片描述

    总的来说在小地方进行了修改,offset network这么设计只说了要和transformer保持相同大小的感受野,但至少证明了deformable attention 是通用的。

    为什么DAT要在stage3 stage4才使用deformable attention?

    因为stage1 和 stage2 基本上是在提取局部信息,deformable attention 效果不如swin attention。而且前两个stage中,key和value对太多了,会大大增大因为点积和双线性插值带来的计算复杂度。
    在这里插入图片描述

  • 相关阅读:
    【PMTU】TCP的MTU探测
    用form表单以post的方式提交数据跳转地址
    面试题 02.01. 移除重复节点
    excel打开csv中文乱码
    零代码数字化管理工具——Workless
    面试突击72:输入URL之后会执行什么流程?
    linux系统服务管理systemctl 和systemd
    GBase 8d的特性-标准化
    SQL注入之宽字节注入、堆叠注入、二次注入
    (附源码)springboot码头作业管理系统 毕业设计 341654
  • 原文地址:https://blog.csdn.net/qq_52038588/article/details/134527289