0%

论文精读 DyGLIP: A Dynamic Graph Model with Link Prediction forAccurate Multi-Camera Multiple Object Tracking

论文精读 DyGLIP: A Dynamic Graph Model with Link Prediction forAccurate Multi-Camera Multiple Object Tracking

DyGLIP: A Dynamic Graph Model With Link Prediction for Accurate Multi-Camera Multiple Object Tracking

作者:Kha Gia Quach, Pha Nguyen, Huu Le
CVPR 2021

任务定义与整体思路

问题背景与任务定义

本研究聚焦于计算机视觉领域中的核心难题——多摄像头多目标跟踪 (Multi-Camera Multiple Object Tracking, MC-MOT) 。该任务的目标是在一个由多个摄像头组成的监控网络中,同时锁定并跟踪所有目标的全局运动轨迹 。在 MC-MOT 的流水线中,尽管单摄像头跟踪已经取得了长足进步,但数据关联 (Data Association) 仍然是最具挑战性的环节,系统面临着极端的环境挑战:

  • 外观一致性破坏: 当目标在不同摄像头之间移动时,光照条件的不一致(如从室内到室外)会导致同一目标的特征向量发生剧烈变化 。
  • 非重叠视域 (Non-overlapping FOVs): 摄像头之间可能存在盲区,导致目标轨迹中断,且无法通过几何重叠直接匹配 。
  • 遮挡与运动模式差异: 目标的运动模式多变,且经常发生轨迹遮挡 。

传统的依赖现成检测器或 ReID 模型提取静态特征向量的方法,在这些复杂场景下往往失效,导致身份(ID)分配错误 。因此,本任务的核心目标是:

  • 设计一种鲁棒的数据关联机制,能够适应动态变化的特征表示,并优雅地解决跨摄像头(无论是否重叠)的目标身份匹配问题。

整体解决思路

DyGLIP 摒弃了传统方法中常用的静态聚类(Clustering)或矩阵分解(Matrix Factorization)思路 ,提出了一种全新的视角:

  • 将数据关联问题重构为动态图上的链路预测问题 (Link Prediction on a Dynamic Graph) 。
    我们分三个主要创新点看待这个视角。

首先是 动态图演化 。系统不再构建一个固定的全局图,而是维护一个随时间 tt 演化的动态图

G(t)=(V(t),E(t))\mathcal{G}^{(t)}=(\mathcal{V}^{(t)},\mathcal{E}^{(t)})

  • 图的顶点 V(t)\mathcal{V}^{(t)} 代表了截至当前时刻所有已知的 Tracklets(短轨迹)。在每一个时间步 tt,单摄像头跟踪器(如 DeepSORT)产生的新 Tracklets 会作为新节点 N(t)\mathcal{N}^{(t)} 加入图中。
  • 任务转化为预测新加入的节点与图中已有节点之间是否存在边(Edge)。如果边存在,则意味着它们属于同一目标 。

其次是 动态图注意力机制 。DyGLIP 认为直接使用原始检测特征进行关联是不可靠的 。该模型引入了一个动态图注意力机制 (Dynamic Graph with Self-Attention),包含两个关键模块:

  • 结构注意力 (Structural Attention): 结合摄像头位置编码,捕捉同一时刻目标在空间拓扑上的关系 。
  • 时序注意力 (Temporal Attention): 捕捉目标特征随时间推移的演变规律。

最后是 统一处理重叠与非重叠视域 。不同于部分前人工作依赖摄像头的重叠区域进行几何匹配 ,DyGLIP 通过学习特征的时空演变,无需显式的视域重叠假设。这使得该模型能够通用于各种摄像头拓扑结构。

技术路线

DyGLIP 的整体架构是一个端到端的流水线,核心在于将单摄像头跟踪产生的数据流,输入到一个动态图神经网络中,通过时空注意力机制重塑特征,最终输出全局 ID 分配结果。

单摄像头局部跟踪

依赖于现有的单摄像头多目标跟踪(Single-Camera MOT)算法,选择了 DeepSORT 作为基础跟踪器。

在时刻 tt,第 cc 个摄像头生成一组局部短轨迹(Tracklets),记为 Lc(t)={Ij(t)}\mathcal{L}_{c}^{(t)}=\{I_{j}^{(t)}\}

每一个 Ij(t)I_{j}^{(t)} 包含一个特征向量(Feature Vector),由检测器或 Re-ID 模型提取。

动态图构建

系统维护一个随时间不断生长的 动态图结构
图的定义是,在时刻 tt,构建图:

G(t)=(V(t),E(t))\mathcal{G}^{(t)}=(\mathcal{V}^{(t)},\mathcal{E}^{(t)})

  • 顶点集 (V\mathcal{V}):代表所有已知的 Tracklets
  • 边集 (E\mathcal{E}):代表 Tracklets 之间的关联关系(即是否为同一人)

与构建固定图不同,DyGLIP 采用增量式更新

V(t)=V(t1)N(t)\mathcal{V^{(t)}}=\mathcal{V}^{(t-1)}\cup\mathcal{N}^{(t)}

  • V(t1)\mathcal{V}^{(t-1)} 是上一时刻已存在的节点
  • N(t)\mathcal{N}^{(t)} 是当前时刻各摄像头新检测到的 Tracklets 集合

此外,在初始化时,每个节点 vv 初始关联一个特征向量 f(v)f(v),这一特征向量通常为 Re-ID 特征。

时空注意力特征增强

为了解决跨摄像头特征不一致的问题,DyGLIP 设计了一个 双层注意力机制结构注意力 (Structural Attention)时序注意力 (Temporal Attention)

结构注意力的核心思想是,节点不应该是孤立的。在某一时刻,一个目标的特征应该与其所处的环境(摄像头位置)以及周围的其他目标特征进行关联。因此,模型引入了摄像头位置编码,学习每个摄像头特有的成像风格(如偏色或畸变),并利用周围邻居节点的分布情况,消除单摄环境带来的系统性偏差,获得更具代表性的局部拓扑特征。

时序注意力的核心思想是,一个人的身份是连续演变的。如果模型知道目标在前一秒的长相,就能更好地预测他在后一秒的长相。因此,模型通过一个时间滑动窗口观察目标在过去几个时刻的特征变化趋势,捕捉目标特征随时间推移的动态演化规律。

结构注意力层 (Structural Attention Layer, SAL)

在进入注意力层之前,每个节点不仅携带外观特征,还融合了空间信息,因此,
对于时刻 tt 的图 G(t)\mathcal{G}^{(t)} 中的每一个节点 vv,输入 eve_v 是外观特征 f(v)f(v)摄像头位置编码 (Camera Positional Encoding) cvc_v 的拼接:

ev={f(v)cv}RDEe_{v}=\{f(v)||c_{v}\}\in\mathbb{R}^{D_{E}}

其中:

  • f(v)RDFf(v) \in \mathbb{R}^{D_F}:原始 ReID 特征向量
  • cvRDCc_v \in \mathbb{R}^{D_C}:摄像头的空间位置编码(Camera Positional Encoding)
  • ||:表示拼接操作(Concatenation)
  • DE=DF+DCD_E = D_F + D_C:拼接后的总维度

为了计算节点 vjv_j 对节点 viv_i 的重要性(即权重 αij\alpha_{ij}),DyGLIP 采用了一种基于邻域的注意力机制。对于第 ll 个注意力头(Head),其系数计算公式为:

αijl=exp(σ(WijT[conv1×1l(evit)conv1×1l(evjt)]))vkV(t)exp(σ(WkjT[conv1×1l(evit)conv1×1l(evkt)]))\alpha_{ij}^{l}=\frac{exp(\sigma(W_{ij}^{T}[conv_{1\times1}^{l}(e_{v_{i}}^{t})||conv_{1\times1}^{l}(e_{v_{j}}^{t})]))}{\sum_{v_{k}\in\mathcal{V}^{(t)}}exp(\sigma(W_{kj}^{T}[conv_{1\times1}^{l}(e_{v_{i}}^{t})||conv_{1\times1}^{l}(e_{v_{k}}^{t})]))}

其中:

  • conv1×1lconv_{1\times1}^{l}:一个 1×11 \times 1 的卷积层(相当于全连接层),用于将高维输入特征 eve_v 映射到当前注意力头 ll 的子空间
  • ||,即 ConcatenationConcatenation:将变换后的源节点 viv_i 和邻居节点 vjv_j 的特征拼接,形成边缘特征
  • WijTW_{ij}^{T}:这是一个可学习的权重向量,将拼接后的特征映射为一个标量(Scalar),即未归一化的注意力分数
  • σ()\sigma(\cdot):非线性激活函数,论文中选用 LeakyReLU
  • Softmax 归一化:分母部分对节点 viv_i 的所有邻居节点 vkv_k 进行求和,确保权重 αij\alpha_{ij} 之和为 1
  • 稀疏性:为了降低计算量,求和仅针对邻接矩阵中定义的邻域 N(vi)\mathcal{N}(v_i) 进行,而非全图

理解上述的公式,我们需要先理解注意力头是什么,其是多头注意力机制的基本单元。多个注意力头就如同多个对一个目标观察的观测者,每个人关注目标的某一方面,最后将这四个观测者的观察结果拼接在一起,就能得到一个对这个目标非常全面、立体的描述。换成专业的叙述就是:

  • 多头注意力机制(Multi-Head Attention)允许模型在不同的特征子空间(Subspaces)里并行地学习信息,防止只关注某一方面而忽略了其他重要细节

在数学实现上,每一个头 ll 都拥有自己独有的一套投影矩阵(权重参数)WlW^l,第 ll 个头会独立计算出一组注意力系数 αijl\alpha_{ij}^l 和特征 hlh^l,最后通过拼接操作 ConcatConcat 把所有头的结果合成为最终向量。

那每个头计算出来的注意力系数又应该如何理解呢?

  • 注意力系数 (Attention Coefficients) ,即αij\alpha_{ij},可以被理解为模型在处理信息时的判别权重。

想象一下,对于动态图中的节点 viv_i ,它周围连接着很多其他节点 vjv_jαij\alpha_{ij}就意味着 viv_ivjv_j关注度,从论文的公式来看,αij\alpha_{ij} 是通过 Softmax 函数计算出来的,因此对于节点 viv_i 的所有邻居,注意力系数之和必须等于 1(α=1\sum \alpha = 1)。在聚合特征时,αij\alpha_{ij} 实际上是在执行加权求和。

理解完这些,我们回到上面的注意力头系数计算公式:

αijl=exp(σ(WijT[conv1×1l(evit)conv1×1l(evjt)]))vkV(t)exp(σ(WkjT[conv1×1l(evit)conv1×1l(evkt)]))\alpha_{ij}^{l}=\frac{exp(\sigma(W_{ij}^{T}[conv_{1\times1}^{l}(e_{v_{i}}^{t})||conv_{1\times1}^{l}(e_{v_{j}}^{t})]))}{\sum_{v_{k}\in\mathcal{V}^{(t)}}exp(\sigma(W_{kj}^{T}[conv_{1\times1}^{l}(e_{v_{i}}^{t})||conv_{1\times1}^{l}(e_{v_{k}}^{t})]))}

其意图就是,计算:

  • 激活函数处理后的,该注意力头权重矩阵✖️两个轨迹节点特征卷积结果的拼接,的softmax 归一化结果
    获得注意力系数后,通过加权求和更新节点特征。输出 hvith_{v_i}^t 的计算公式为:

hvit=Concatl=1L[σ(vjV(t)αijlconv1×1l(evjt))]h_{v_{i}}^{t}=Concat_{l=1}^{L}[\sigma(\sum_{v_{j}\in V^{(t)}}\alpha_{ij}^{l}conv_{1\times1}^{l}(e_{v_{j}}^{t}))]

  • 加权求和αijl...\sum \alpha_{ij}^{l} ... 表示节点 viv_i 聚合了周围邻居 vjv_j 的信息,权重由 αij\alpha_{ij} 决定。这意味着,与 viv_i 相似度高或空间关系紧密的节点,对其新特征的贡献更大。
  • 多头机制 (ConcatConcat):论文使用了 LL 个独立的注意力头(实验中 L=4L=4)。这允许模型关注不同的子空间信息(例如,一个头关注颜色纹理,另一个头关注摄像头位置关系)。最后将所有头的结果拼接作为 SAL 层的最终输出。

图时序注意力层 (Graph Temporal Attention Layer, TAL)

SAL 层处理了单帧内的空间关系,TAL 层则负责捕捉时间维度上的演化。 它基于 Transformer 的 Self-Attention 架构,但针对动态图进行了因果性改进。

TAL 的输入不仅仅是特征,还需要知道时间点。
对于每个节点 vv,取其在时间窗口 WW 内的一系列 SAL 输出特征,并加上时间戳位置编码 (pvp_v):

xv=[hv1+pv1, hv2+pv2, , hvW+pvW]x_{v}=[h_{v}^{1}+p_{v}^{1}, \ h_{v}^{2}+p_{v}^{2}, \ \cdot\cdot\cdot, \ h_{v}^{W}+p_{v}^{W}]

将这些向量堆叠成一个矩阵 XRW×DHX \in \mathbb{R}^{W \times D_H}

遵循标准 Transformer 范式,通过线性变换生成 Query, Key, Value 矩阵 :

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \quad K = XW_K, \quad V = XW_V

其中 WQ,WK,WVW_Q, W_K, W_V 是可学习的投影矩阵。

随后,采用掩码缩放点积注意力 (Masked Scaled Dot-Product Attention) ,计算时间步之间的依赖关系:

ze(l)=attn(l)(Q,K,V)=softmax(QKTDZ+M)Vz_{e}^{(l)}=attn^{(l)}(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{D_{Z}}}+M)V

其中:

  • QKTQK^T:计算不同时间步之间的相似度矩阵
  • DZ\sqrt{D_Z}:缩放因子,用于防止点积结果过大导致梯度消失
  • MM (Mask Matrix):这是一个掩码矩阵,用于强制因果性。若 i>ji > j(即时间步 ii 晚于 jj),则 Mij=M_{ij} = -\infty;否则 Mij=0M_{ij} = 0。在 Softmax 后,e0e^{-\infty} \approx 0。这保证了当前时刻 tt 的特征只能聚合 tt 时刻之前的历史信息。

这样看可能不够直观,结合 Transformer 的理念,上述公式,即:

ze(l)=softmax(QKTDZ+M)Vz_{e}^{(l)} = \text{softmax}\left(\frac{QK^{T}}{\sqrt{D_{Z}}} + M\right)V

由以下四个核心组件构成:

  1. Q, K, V (查询、键、值矩阵): 这些是通过对输入特征 XX(节点在不同时间步的特征序列)进行线性投影得到的。
    • QQ (Query): 代表当前时刻的节点正在寻找什么样的历史信息。
    • KK (Key): 代表过去各时刻节点所能“提供”的特征标签。
    • VV (Value): 代表节点实际包含的特征信息内容。
  2. 点积操作 (QKTQK^T): 通过计算查询向量与键向量的点积,衡量当前时刻与过去每一个时刻之间的相关性或相似度。
  3. 缩放因子 (1/DZ1/\sqrt{D_Z}): DZD_Z 是输出特征的维度。在计算点积后,将其除以维度的平方根。
  4. 掩码矩阵 (MM): 这是一个与时间窗口大小相同的矩阵,其元素取值为 00-\infty

缩放的作用是随着特征维度 DZD_Z 的增大,点积结果 QKTQK^T 的量级会变得非常大。这会导致在经过 Softmax 函数处理时,梯度变得极小,通过除以 DZ\sqrt{D_Z},将计算结果重新缩放到一个更合理的范围,能够确保 Softmax 函数能够产生灵敏的梯度。

掩码的作用是确保了每个节点在更新特征时,只能通过回顾历史来学习演化规律,而不会产生由于看到了未来的轨迹,而反向修正当前ID的非因果行为。

多头 TAL 的输出被拼接后,通过一个前馈神经网络进行非线性变换,得到最终的节点嵌入序列:

{e(1),e(2),,e(W)}\{ {e^{\prime}}^{(1)},{e^{\prime}}^{(2)},\cdot\cdot\cdot,{e^{\prime}}^{(W)}\}

这个 ee' 即为最终用于链路预测的特征。

身份关联与模型损失函数定义

在 DyGLIP 中,关联被定义为判断图中两个节点之间是否存在Link

关联概率计算 (Probability Scoring)

给定一对经过增强的节点特征 evie'_{v_i}evje'_{v_j},模型需要计算它们属于同一目标的概率分数 s[0,1]s \in [0, 1],分数越高,表示这两个节点(Tracklets)属于同一个人的可能性越大 。

度量标准与分类器选择 (Metrics and Classifiers)

论文在探讨了两种不同的相似度度量与分类组合(余弦距离 + Sigmoi / 哈达玛积 + Softmax)之后,选择了后者。

即计算两个特征向量的哈达玛积(Hadamard product,即对应元素相乘 evievje_{v_{i}}^{\prime} \odot e_{v_{j}}^{\prime}),随后连接一个全连接层,最后通过 Softmax 层输出分类概率。

消融实验证明方案 B 效果显著优于方案 A 。这是因为哈达玛积保留了元素级别的交互特征,而 Softmax 配合全连接层能学习到更复杂的非线性匹配逻辑。

联合损失函数 (Integrated Loss)

为了让注意力模块和链路分类器协同工作,DyGLIP 采用了一种联合学习的方法。其目标是同时学习能够捕获时空信息的表示,并实现准确的链路预测。

模型的总体目标函数旨在平衡特征聚类分类准确度,可以概括为特征表示学习链路分类学习的耦合:

L(vi)=BCE Loss (Representation)+wgClassifier Loss\mathcal{L}(v_{i}) = \text{BCE Loss (Representation)} + w_g \cdot \text{Classifier Loss}

展开为:

L(vi)=tT(vjNb(t)(vi)log(σ(evi,evj))正样本特征拉近+wgvkNg(t)(vi)log(1σ(evi,evk))负样本特征推开+vjNa(t)(vi)Lc(vi,vj)链路预测分类损失)\mathcal{L}(v_{i})=\sum_{t}^{T} \left( \underbrace{\sum_{v_{j}\in \mathcal{N}_{b}^{(t)}(v_{i})}-log(\sigma(\langle e_{v_{i}}^{\prime}, e_{v_{j}}^{\prime} \rangle))}_{\text{正样本特征拉近}} + \underbrace{w_g \sum_{v_{k}\in\mathcal{N}_{g}^{(t)}(v_{i})}log(1-\sigma(\langle e_{v_{i}}^{\prime}, e_{v_{k}}^{\prime} \rangle))}_{\text{负样本特征推开}} + \underbrace{\sum_{v_{j}\in \mathcal{N}_{a}^{(t)}(v_{i})}\mathcal{L}_{c}(v_{i}, v_{j})}_{\text{链路预测分类损失}} \right)

我们可以将这个复杂的公式拆分为三个核心功能模块:

  1. 正样本表示学习 (Positive Samples)

vjNb(t)(vi)log(σ(evi,evj))\sum_{v_{j}\in \mathcal{N}_{b}^{(t)}(v_{i})}-log(\sigma(\langle e_{v_{i}}^{\prime}, e_{v_{j}}^{\prime} \rangle))

这里 Nb(t)\mathcal{N}_{b}^{(t)} 是通过固定长度随机游走确定的邻居节点集合。 ,\langle \cdot, \cdot \rangle 是两个特征向量的内积。通过最小化这个负对数似然,模型在强制让同一ID的节点特征在嵌入空间中靠得更近。

  1. 负样本表示学习 (Negative Samples)

wgvkNg(t)(vi)log(1σ(evi,evk))w_g \sum_{v_{k}\in\mathcal{N}_{g}^{(t)}(v_{i})}log(1-\sigma(\langle e_{v_{i}}^{\prime}, e_{v_{k}}^{\prime} \rangle))

Ng(t)\mathcal{N}_{g}^{(t)} 是随机抽取的负样本节点。超参数 wgw_g负采样比例 (Negative Sampling Ratio),用于平衡正负样本的权重。这一项负责将不同 ID 的节点在特征空间中推开。

  1. 分类器损失 (Classifier Loss)

vjNa(t)(vi)Lc(vi,vj)\sum_{v_{j}\in \mathcal{N}_{a}^{(t)}(v_{i})}\mathcal{L}_{c}(v_{i}, v_{j})

Lc\mathcal{L}_c 是链路分类器的损失 10。Na(t)\mathcal{N}_{a}^{(t)} 是正负样本的并集。这一项直接监督最终的分类结果,确保了经过注意力机制增强后的特征 ee' 能够直接服务于最后的 ID 匹配任务。

模型训练

我们先凝练一下前两章做了什么。

  • 时空注意力特征增强该节通过串联结构注意力(SAL)与时序注意力(TAL),实现了对原始特征的深度提纯。SAL 结合摄像头位置编码,在空间维度聚合邻域信息以捕捉相机间的拓扑关系;TAL 则在时间维度利用带掩码的自注意力机制,建模目标特征随时间演变的动态规律并确保在线跟踪的因果性。两者协同将不稳定的视觉快照转化为具备时空鲁棒性的高维节点嵌入 ee'

  • 身份关联与模型损失函数定义该节将数据关联任务重构为动态图上的链路预测问题 ,利用节点嵌入的哈达玛积配合 Softmax 分类器计算关联概率 。为驱动模型演进,定义了耦合“表示学习”与“分类精度”的联合损失函数 ,通过正样本拉近、负样本推开及分类误差监督三重约束。

最后是训练部分,模型的核心在于联合学习(Joint Learning),即同时训练自注意力模块和链路分类器。

模型将数据切分为大小为 3 的时空块(Chunks),模拟过去-现在的时间跨度进行预测训练。每一个时空块实际上是一个微缩的动态图演化序列:模型利用前两个时间步(t2t-2t1t-1)已建立的图结构和节点特征作为历史上下文,来预测当前步(tt)新加入节点的身份分配。

最终的模型,是一个以 2层SAL + 2层TAL + 1层全连接分类器 为核心的动态图神经网络。它是以 DeepSORT 产生的局部轨迹为输入,在 Tensorflow 环境下利用 Adam 优化器完成最终训练的。