Transformer单目标跟踪

Transformer Meets Tracker(TrDiMP)

transformer结构应用在分类分支。

第一帧self.init_classifier()

  • self.transformer_label:(15,1,22,22),根据目标在特征图上的位置制定高斯标签。

  • self.transformer_memory:(7260,1,512),其中7260=152222,512的特征图维度,通过transformer encode得到,步骤如下,几点说明:

     	1. 没有位置嵌入
     	2. normalization具体是第3维度除第3维的L2范数,即对每个token单独作normalization
     	3. Query和Key共用W_k
     	4. 没有转换矩阵W_v
     	5. 没有multi-head,n_head=1
     	6. Transformer Encode结构只有1次且没有FFN
    
通过各种reshape,注意reshape顺序至关重要
W_k->normalization->reshape
W_k->normalization->reshape
softmax
Ins.Norm
输入特征: 15,512,22,22
输入特征: 15*22*22token个数,1batch,512dim
Query: 7260,1,512
Key: 7260,1,512
Value: 7260,1,512
Query: 1,7260,128
Key: 1,128,7260
乘1,7260,7260
attention矩阵: 1,7260,7260
乘1,7260,512->7260,1,512
加:7260,1,512
输出transformer encode的template特征self.transformer_memory 7260,1,512
  • 对输入特征(15,512,22,22)遍历第一维度(样本),对每个样本分别通过transformer decode,然后将每隔decode的特征(1,512,22,22)拼接成(15,512,22,22)得到最终的样本特征,再输入DiMP中的分类模型。每个样本特征的transformer decode步骤如下:

     	1. self-attention参数与encode共享
     	2. cross-attention1((query=tgt(484,1,512), key=memory(7260,1,512), value=pos(7260,1,512)):通过self.transformer_label:(15,1,22,22)复制512份,对每个维度的特征施加相同的mask,**mask的作用类似与位置嵌入**)
     	3. cross-attention2:这里输入的value=memory*pos
     	4. 所有attention中Query和Key共用W_k、没有转换矩阵W_v、n_head=1
     	5. Transformer Decode结构只有1次且没有FFN
    
通过各种reshape,注意reshape顺序至关重要
经过与encode相同的过程,而且参数共享
经过与encode相同的过程,而且参数共享
经过与encode相同的过程,而且参数共享
cross-attention1,本质也是self-attention
cross-attention2,本质也是self-attention
Ins.Norm
reshape
输入特征: 1,512,22,22
输入特征: *22*22token个数,1batch,512dim
Query: 484,1,512
Key: 484,1,512
Value: 484,1,512
输出特征:484,1,512
mask:484,1,512
输出特征*mask->Ins.Norm:484,1,512
484,1,512
加->Ins.Norm:484,1,512
输出transformer decode的template特征:1,512,22,22

后续帧self.init_classifier()

主要干两件事

  • 根据跟踪结果判断是否更新self.transformer_memory,以及pos来更新W
  • 将后续帧的特征输入transformer decode得到text_x,再与W卷积得到score map

Transformer Tracker

你可能感兴趣的:(object,tracking,transformer)