论文阅读笔记5——TransCenter: Transformers with dense queries for MOT

本文介绍了一种名为TransCenter的Transformer架构,专为MOT设计,解决了稠密场景中边界框表示的局限性。它通过密集像素级多尺度查询,双解码器处理,实现了全局关联和目标中心热度图预测。TransCenter在MOT17和MOT20中达到当时最佳性能,尤其关注于减少漏检和拥挤场景的误报问题。

原论文:论文
代码:代码
  \space  
0. Abstract

Transformer自提出以后,在CV领域也得到了大量的应用。但是MOT和transformer还是有某种程度上的不兼容。作者认为边界框和稀疏查询这种标准的表示方式对于transformer并不是最优解。
因此作者提出了TransCenter:它是第一个预测目标热力图的基于transformer的MOT架构。TransCenter利用密集像素级的多尺度查询(densepixel-level multi-scale queries),在一个双decoder的transformer里,能够全局和鲁棒地预测目标中心的热度图并进行关联。

在论文发表时是MOT17和MOT20的state of the art.

  \space  

1. Introduction

MOT的一个困难问题是如何对目标之间的影响进行建模,Transformer这种能关注输入的不同部分间的方法对解决这个问题特别有利,尤其是在拥挤的场景。

对于目标间的影响,之前也有研究解决过这个问题,大多是利用深度学习的方法。例如Sadeghian et al.用RNN学习目标间的影响,Ran et al.定义了interaction affinity,并用LSTM进行学习。

之后作者说了利用边界框表示目标的局限性。尤其是在拥挤的场景下,Ground Truth的边界框经常会相互重叠,这会为学习过程带来额外的负担。因此在这篇文章里,用了密集的基于中心点的目标热力图表示方式,用二维高斯分布表示目标的位置和大小。

但是,直接将已有的工作,也就是用中心点表示和已有的Transformer模型直接套用是不可行的。原因主要有两点:一,已有的Transformer中变长的稀疏查询在拥挤的场景中经常会漏检。提高queries的数目也并没有对跟踪质量进行提升。二,已有的模型是通过在queries中学习不同目标类别的表示,而与作者的目的有根本冲突。作者的目的是:学习一个像素究竟是否包含一个目标。

那么作者是怎么做的呢?提出了像素级多尺度查询,此外,为了利用基于热图的MOT,密集查询的使用克服了与使用稀疏查询查询解码器以预测边界框相关的限制。

总的来说,TransCenter力图:

  • 利用Transformer学习长期变化的能力来解决insufficient(不充分)查询
  • 减轻拥挤场景的边界框重叠问题带来的困扰

疑问:
什么叫insufficient queries?
既然没有用卡尔曼滤波,为什么用二维高斯分布表示目标的位置和大小?是在哪一步用到的表示?

  \space  
2. Related Work

2.1 MOT相关工作

作者从很久远的工作开始介绍,包括第一个使用端到端的模型等等,第一个将Re-ID看做是与检测同等工作等。

值得注意的三点:

1.一个足够好的运动模型可以补偿missing detection。
2.传统利用图论解决问题:将目标的位置视作节点,将时序连接视作边。随着GNN的发展,这种方法的性能提升了。
3.基于锚的表示并不是一个很好的解决方式,因为当目标互相遮挡或受背景噪声影响的时候会出现歧义。

2.2 Transformer应用于视觉

利用Transformer进行跟踪的工作已经有一些(Trackformer,Transtrack),大都是基于DETR。它们将DETR中稀疏查询拓展到追踪任务当中。但近期有些文献指出利用点来进行追踪或许会有更好的效果。这也是这篇文章的动机。

  \space  

3. Transformer Backgrounds

本文工作也是基于DETR的。本节对DETR作了简单的介绍。

DETR由三部分组成:CNN骨架,基于Transformer的Encoder和Decoder和一个目标检测和分类模块。其结构如下图所示:

在这里插入图片描述
  \space  

DETR的工作流程:

1.利用CNN骨干(例如ResNet)提取图片特征 f ∈ R H × W × C f\in \textbf{R}^{H\times W \times C} fRH×W×C
2.为了方便将特征输入到Transformer的Encoder里,需要转为二维向量,因此 f f f的shape变为 ( H W , C ) (HW,C) (HW,C)
3.Encoder吃进feature map以后,产生memory M M M M M M就包含了feature map里各部分的关联的信息。 注意, Q , K , V Q,K,V Q,K,V都是由feature map产生,但是 K , Q K,Q K,Q要加入位置编码。
4.对于Decoder,设计了一组可以学习的queries, 每个query对应一个可能的目标。这些queries经过一个self-attention的block之后,作为 Q Q Q,以及从Encoder输出的 M M M作为 K , V K,V K,V(注意 K K K也要位置编码),被输入到Decoder中。Decoder就尝试学习这些queries和 M M M(也可认为是图像的feature)之间的关系。
5.Decoder的输出经过一个MLP,来预测一个边界框,以及边界框内包含目标的概率。

疑问:如何知道queries的个数?是否有一个默认值,然后删去里面不包含结果(置信度低)的边界框?

  \space  
  \space  

4.Methodology

尽管DETR很有用,但作者质疑将DETR直接转化到MOT当中。理由有两点:
1.查询数量不足将导致严重的漏检,从而导致跟踪中的误报(FN)。
2.查询是高度重叠的,简单地增加非位置相关查询的数量可能会导致跟踪中出现许多错误检测,然后是误报(FPs)

此外,为了减小内存消耗,在Encoder和Decoder中采用的都是deformable transformers。

待查deformable trans.
Zhu et al. Deformable transformers for end-to-end object detection

随后作者再次大概介绍了TransCenter的运作方式。

将MOT分为两个子任务:

  1. 对时刻t的目标进行检测
  2. 对t-1时刻的目标进行关联。

实际上是两个任务并行运行的,利用两个deformable decoder。detection decoder的输出被用来估计目标中心和热度图的size。tracking decoder结合detecttion decoder估计目标的位移(自上一帧)。

  \space  

4.1 TransCenter简述

TransCenter的整体结构如下图所示:

在这里插入图片描述

  \space  

整体工作流程大概是:

  1. t t t t − 1 t-1 t1时刻的RGB图像输入到CNN骨干网络中,产生多尺度特征。多尺度特征可以捕获图像中精细的细节。
  2. 产生的两个特征以孪生(Siamese)的方式送入Encoder中。注意CNN和Encoder都是共享权重的。如前文所述,Encoder采用deformable self-attention transformer Encoder.
    之后产生多尺度的memory feature maps,分别记为 M t − 1 M_{t-1} Mt1 M t M_t Mt.

Siamese网络很早就被用在MOT中。有的工作用Siamese结构去计算两目标的相似度(affinity),或者学习不同目标的差异。

  1. 之后 M t M_t Mt会被送到query学习网络(QLN). QLN由两个全连接层组成,用ReLU激活函数,以及有skip connection结构。(channel维度从256到512再到256)。经过QLN后,输出 D Q t DQ_t DQt,叫做密集多尺度检测查询。
  2. D Q t DQ_t DQt会再次经过一个QLN,这样就产生的 D Q t DQ_t DQt的多尺度feature map,叫做 T Q t TQ_t TQt(这句话说明了 D Q t DQ_t DQt T Q t TQ_t TQt的关系)。
  3. 之后用两个deformable transformer decoder去处理之前得到的东西:deformable detection decoder利用 M t M_t Mt D Q t DQ_t DQt输出多尺度检测特征 D F t DF_t DFt. D F t DF_t DFt后续被用来估计检测框的大小 S t S_t St和中心点热度图 C t C_t Ct
    与此类似,deformable tracking decoder利用 T Q t TQ_t TQt和上一帧的 M t − 1 M_{t-1} Mt1产生多尺度追踪查询 T F t TF_t TFt.
    T F t TF_t TFt D F t DF_t DFt C t − 1 C_{t-1} Ct1后续被用来估计目标的位移 T t T_t Tt.

也就是说, D F t DF_t DFt是综合了图像特征和查询学习网络输出的检测查询的信息,进而学习到检测框大小和中心点heatmap,跟DETR有异曲同工之处。

  \space  

4.2 像素级多尺度密集查询

前文说过,稀疏查询不适用于拥挤场景。强行提高queries的数量会造成相互遮挡,以至于误报增加。怎么办呢,如果基于像素去看的话,就不可能有互相遮挡的问题了,因此作者提出了像素级多尺度密集查询。也就是 D Q t DQ_t DQt T Q t TQ_t TQt

采用像素级密集多尺度查询有几个好处。首先,queries可以是多尺度的,并利用encoder的多重解析(Multi-resolution)结构,允许非常小的目标被捕获。第二,密集查询可以让网络更加灵活,因为可以不用重新设置参数而根据任意大小的图像自动调整。第三,采用像素级的queries也不需要用匈牙利算法这种费时的方式。

而且,QLN的使用避免了预先手工调整queries大小和设置最大检测数量的参数。

  \space  

4.3 全可变型的双Decoder

这一段又再次更详细地说明了一下两个Decoder是如何工作的。

两个Decoder都是并行工作的,分为两个子任务:检测和跟踪,这两个子任务也是同时进行的。

在检测Decoder利用 D Q t DQ_t DQt M t M_t Mt进行检测的同时,跟踪Decoder结合 T Q t TQ_t TQt和上一帧的 M t − 1 M_{t-1} Mt1来取代上一帧的已经检测的目标的位置。

具体地,跟踪Decoder在 M t − 1 M_{t-1} Mt1上寻找目标,并将其和第 t t t帧上的目标进行关联。为了做到这一点,跟踪Decoder采用多头可变注意力模型,寻找第 i i i帧的 T Q t TQ_t TQt和上一帧的 M t − 1 M_{t-1} Mt1之间的关系,并且输出 T F t TF_t TFt. T F t TF_t TFt就包含了时域信息,被tracking branch来估计位移。

  \space  

4.4 中心branch、尺寸branch和跟踪branch

注意到经过Encoder和Decoder计算出的多尺度特征后,还要经过三个branch进行预测(不知道branch怎么翻译,结构类似于树枝、枝干):

在这里插入图片描述

  \space  
先看中心branch的结构。

在这里插入图片描述

  \space  
经过检测Decoder输出的多尺度特征 D F t DF_t DFt包含四种分辨率:1/64, 1/32, 1/16,1/8的图像大小。为了将不同尺寸的feature结合起来,用可变型卷积和双线性插值。最终输出一个1/4图像大小的feature map C t ∈ [ 0 , 1 ] H / 4 × W / 4 C_t \in [0,1]^{H/4\times W/4 } Ct[0,1]H/4×W/4. 其中 H , W H,W H,W是原图尺寸。

疑问:为什么是01之间?是经过激活函数的结果吗?

对于size branch,完全一样,只不过输出维度变为 S t ∈ R H / 4 × W / 4 × 2 S_t \in \textbf{R}^{H/4\times W/4 \times 2 } StRH/4×W/4×2,2表示对于每一个坐标都有宽和高两个尺寸。

对于tracking branch,吃进三个输入,其中 T F t TF_t TFt D F t DF_t DFt经过上述一样的过程(参数不同),得到两个feature map,尺寸也是原图的1/4。之后将这两个feature map和上一帧的热度图 C t − 1 C_{t-1} Ct1拼接,经过卷积网络后输出对于位移的预测 T t ∈ R H / 4 × W / 4 × 2 T_t \in \textbf{R}^{H/4\times W/4 \times 2} TtRH/4×W/4×2. 其中两个通道表示水平和竖直方向的位移。

  \space  

4.5 训练过程中的loss

这一节讲了训练三个branch的loss。

Center branch

为了训练Center branch,首先应该建立GT。依据的原则跟CenterTrack(Zhou et al. Tracking objects
as points. ECCV)中的类似,采用高斯核函数,计算每 K ( K > 0 ) K(K>0) K(K>0)个中心点的最大函数值。公式如下:

C x y ∗ = max ⁡ k = 1 , 2 , . . . , K G ( ( x , y ) , ( x k , y k ) ; σ ) \textbf{C}^*_{xy}=\max_{k=1,2,...,K}G((x,y),(x_k,y_k);\sigma) Cxy=k=1,2,...,KmaxG((x,y),(xk,yk);σ)

其中 x , y x,y x,y表示坐标, ( x k , y k ) (x_k,y_k) (xk,yk)表示第 k k k个GT中心点坐标, G ( ⋅ , ⋅ , σ ) G(·,·,\sigma) G(,,σ)表示高斯核函数,表达式为:

G ( a , b ; σ ) = e − ∣ ∣ a − b ∣ ∣ 2 2 σ 2 G(a,b;\sigma)=e^{-\frac{||a-b||^2}{2 \sigma^2}} G(a,b;σ)=e2σ2ab2

参数 σ \sigma σ根据目标的大小选取。

所以,热力图GT的构建实际上是每K个中心点周围计算了某种距离。在这里核函数的最大值是1,也就是坐标和某个中心点重合的时候。因此 C x y ∗ = 1 \textbf{C}^*_{xy}=1 Cxy=1的时候就意味着坐标和某个中心点重合。

有了GT之后,center branch的loss L C L_C LC按下式计算:

在这里插入图片描述
作者选取了 α = 2 , β = 4 \alpha=2,\beta=4 α=2,β=4.

Size and tracking branch:

用了稀疏回归损失计算这两个branch的loss。

在这里插入图片描述
上式表明,只有目标中心点匹配上的时候才有意义。

tracking的loss L T L_T LT与此类似。为了保证 L T L_T LT L S L_S LS的稀疏性(为什么?),提出了边界框损失 L R L_R LR,其是根据预测的size和GT的中心点计算的,但是边界框损失的重要性并不高。

最终整体的loss表示为:

在这里插入图片描述
  \space  
  \space  
5. Experiments

作者在COCO数据集上进行了预训练,在一些MOT数据集上进行微调。

Encoder和Decoder选用了6层,multi-head的头的数目是8,CNN的骨干选用ResNet50,训练时loss的权重分配为 λ S = 0.1 , λ T = 0.5 , λ R = 1 \lambda_S=0.1,\lambda_T=0.5,\lambda_R=1 λS=0.1,λT=0.5,λR=1,优化器选择AdamW,开始的学习率选择的非常低,epoch也很低,只有50,batch size选了2,用了俩nbGPU。

感想:夸!这篇真的很有逻辑性,讲得也很清楚,读起来比MOTR好.有精力再想想它和MOTR的比较。

### 关于Vision Transformers用于密集预测的研究 近年来,Vision Transformers (ViTs) 已经成为计算机视觉领域的重要研究方向之一。相比于传统的卷积神经网络(CNNs),ViTs通过自注意力机制能够更好地捕捉全局特征[^1]。 #### Unifying Top-down and Bottom-up Scanpath Prediction Using Transformers 一篇重要的工作是《Unifying Top-down and Bottom-up Scanpath Prediction Using Transformers》,它探讨了如何结合自上而下和自下而上的扫描路径预测方法来提升模型的表现力。虽然这篇论文主要关注的是注视点预测问题,但它展示了Transformer架构在处理复杂空间关系方面的潜力。 #### Multi-scale Vision LongFormer 另一篇值得关注的文章是由Pengchuan Zhang等人提出的《Multi-scale Vision LongFormer: A New Vision Transformer for High-resolution Image Encoding》[^2]。这篇文章介绍了一种新的多尺度长距离注意机制,使得Vision Transformer能够在高分辨率图像编码任务中取得优异成绩。这种设计特别适合需要精细局部信息的任务,比如语义分割或目标检测。 #### Pyramid Vision Transformer 此外,《Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction Without Convolutions》[^3] 提出了金字塔结构的Vision Transformer作为通用背景网络应用于多种下游任务,包括但不限于分类、检测以及像素级预测等场景。此框架摒弃了传统基于卷积的操作方式,在保持竞争力的同时简化了计算流程并降低了参数量需求。 #### Dense Visual Transformer Architecture 最后,《Dense Visual Transformer Architecture》[^4] 描述了一个全新的密集型视觉转换器设计方案。该方案将不同层次下的token重新排列形成类似于图片形式的数据表达,并借助卷积解码层逐步恢复至原始尺寸完成最终输出。实验证明这种方法可以在存在充足训练样本的情况下显著改善各类密集型预测作业的效果;特别是在单一视角深度估计方面达到了超越当前最优水平约28% 的相对增益。 综上所述,上述提到的几项研究成果均围绕着如何有效利用Transformers解决实际应用中的稠密预测挑战展开讨论,并各自提出了创新性的解决方案和技术思路。 ```python # 示例代码展示如何加载预训练好的Vision Transformer模型 from transformers import ViTModel model = ViTModel.from_pretrained('google/vit-base-patch16-224') print(model) ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值