论文地址: FGAGT: Flow-Guided Adaptive Graph Tracking
FGAGT阅读心得
- 一、 摘要
- 二、 简要介绍
-
- 2.1 光流
- 2.1 图神经网络(GNN)
- 三、 FGAGT网络结构
-
- 3.1 自适应图神经网络模型
- 3.2 平衡MSE Loss
- 3.3 推理
-
- 3.3.1. 匹配关联和新目标的出现
- 3.3.2. 目标消失
- 四、 总结
一、 摘要
本文提出的FGAGT追踪器,不同于FairMoT,使用Lucas金字塔光流方法预测当前帧中的历史目标位置信息,同时利用ROI Pooling和全连通层提取历史对象在当前帧特征图上的外观特征向量。然后将他们和新目标的特征向量输入进自适应图神经网络来更新特征向量,自适应图神经网络可以通过组合全局历史位置和外貌信息来更新目标的特征向量。因为历史信息的保留,他可以重新识别被遮挡的目标。训练阶段,提出了平衡MSE损失来平衡采样分布。推理阶段,使用匈牙利算法进行数据关联。FGAGT坚信匹配目标的时候,位置信息和外貌特征必须全部使用才能获得一个好的追踪结果,这也是这算法的核心。
创新点:
- 使用光流预测历史目标的在当前帧的位置,并且提取特征。相较于其他的利用过去帧的特征图来提取特征向量,我们的方法避免了从不同特征图上提取特征,这样新检测的目标特征和提取的目标历史特征会保持一致。
- 使用自适应的图网络来整合时空外貌位置信息,并且来更新特征和识别遮挡目标(加权学习特征)。
- 提出了平衡MSE损失来平衡不同的采样分布。
二、 简要介绍
多目标追踪需要根据目标的历史轨迹匹配当前帧中检测到的多个目标,同样的目标需要分配同样的id,并且形成新的轨迹,新出现的目标需要分配一个新的id而消失的目标需要删除轨迹,且无法被匹配。
问题:尽管很多方法使用了光流方法预测位置信息,但是在特征匹配过程中,历史目标和新检测的目标的特征是从不同的特征图上获得的,这会导致同样的目标特征向量总会不同,甚至相差很远。这样一个目标因为遮挡而消失,当再次出现在视野时,如何匹配上历史轨迹成为一个问题。并且过去的目标能够唯一匹配当前帧的一个目标,长时间历史目标一多,历史目标很有可能会匹配上新出现目标(错误匹配),从而导致会出现很少的新目标。
解决:提出了FGAGT追踪器,使用Lucas金字塔算法计算当前帧历史目标的中心位置。
然后当前帧通过卷积神经网络进行下采样获得特征图,使用ROI Pooling和全连接层提取历史目标和新检测到的目标(当前帧中的目标)的初始外貌特征向量,将他们输入自适应图网络,历史目标和新检测目标被视为二分图,初始外貌特征的距离和IOU被认为是边的权重,组合全局时空位置和外貌信息,输入进图网络,来更新特征向量。
图网络中,每个维度的整合特征会被乘上一个自适应的权重,用以强化学习目标中最能解决遮挡和重识别问题的特征。图网络最终输出是一个相似性矩阵。训练阶段,提出了一个MSE Loss,具体来说就是分别在连续正,连续负,新和消失目标的损失函数前乘以一个和样本数负相关的一个系数,有利于解决不平衡样本数量分布的问题,从而让图网络学到我们想要的特征向量。
2.1 光流
光流:它指的是视频中一帧中表示同一对象到下一帧的像素移动量,由一个二维向量表示。根据是否选择图像像素稀疏的点用于光流评估,可以将光流评估分为稀疏光流评估和密集光流评估。稀疏光流选择明显的特征(梯度大的)用于光流评估和追踪。密集光流描述的是图像中的所有像素点到下一帧的运动,使用颜色作为光流的方向,亮度表示光流大小。
LK (Lucas-Kanade)算法有三个假设:1.亮度恒定,2.目标运动小,3.邻域光流一致。
所有假设成立都满足的条件下,可以构造所选像素从当前帧到下一帧的光流微分方程:
考虑第一帧的像素亮度强度 I ( x , y , t ) I\left(x,\ y,\ t\right) I(x, y, t)(t代表时间维度,(x,y)代表位置),到下一帧,这个像素运动了 ( d x , d y ) \left(dx,\ dy\right) (dx, dy)的距离,花费了 d t dt dt的时间。因为是同样的像素,且根据第一个假设像素运动前后亮度恒定,即:
I ( x , y , t ) = I ( x + d x , y + d y , t + d t ) (1) I(x, y, t)=\mathrm{I}(\mathrm{x}+\mathrm{d} \mathrm{x}, \mathrm{y}+\mathrm{d} \mathrm{y}, \mathrm{t}+\mathrm{dt}) \tag1 I(x,y,t)=I(x+dx,y+dy,t+dt)(1)
右边泰勒展开得:
I ( x , y , t ) = I ( x , y , t ) + ∂ I ∂ x d x + ∂ I ∂ y d y + ∂ I ∂ t d t + ε (2) I(x, y, t)=\mathrm{I}(\mathrm{x}, \mathrm{y}, \mathrm{t})+\frac{\partial I}{\partial x} d x+\frac{\partial I}{\partial y} d y+\frac{\partial I}{\partial t} d t+\varepsilon \tag2 I(x,y,t)=I(x,y,t)+∂x∂Idx+∂y∂Idy+∂t∂Idt+ε(2)
ε \varepsilon ε是二阶无穷小,可以忽略。然后将公式(2)带入公式(1),同时除以 d t dt dt获得:
∂ I ∂ x d x d t + ∂ I ∂ y d y d t + ∂ I ∂ t d t d t ≈ 0 (3) \frac{\partial I}{\partial x} \frac{d x}{d t}+\frac{\partial I}{\partial y} \frac{d y}{d t}+\frac{\partial I}{\partial t} \frac{d t}{d t} \approx 0 \tag3 ∂x∂Idtdx+∂y∂Idtdy+∂t∂Idtdt≈0(3)
假设u,v分别为x轴和y轴的速度矢量: u = d x d t , v = d y d t (4) \mathrm{u}=\frac{d x}{d t}, v=\frac{d y}{d t}\tag4 u=dtdx,v=dtdy(4)
I x = ∂ I ∂ x I_x=\frac{\partial I}{\partial x} Ix=∂x∂I, I y = ∂ I ∂ y I_y=\frac{\partial I}{\partial y} Iy=∂y∂I, I t = ∂ I ∂ t I_t=\frac{\partial I}{\partial t} It=∂t∂I代表图片沿着X轴,Y轴,t轴方向的像素灰度值的偏导数。则(3)可以描述为: I x u + I y v + I t ≈ 0 (5) I_{x} u+I_{y} v+I_{t} \approx 0\tag5 Ixu+Iyv+It≈0(5)
其中 I x , I y , I t I_x,\ I_y,I_t Ix, Iy,It都可以通过有限差分(一种求偏微分(或常微分)方程和方程组定解问题的数值解的方法)得到, ( u , v ) \left(u,\ v\right) (u, v)是所需的光流向量。由(5)估计一个目标函数:
min ∑ ( x , y ∈ Ω ) W 2 ( X ) ( I x u + I y v + I t ) 2 (6) \min \sum_{(x, y \in \Omega)} W^{2}(X)\left(I_{x} u+I_{y} v+I_{t}\right)^{2}\tag6 min(x,y∈Ω)∑W2(X)(Ixu+Iyv+It)2(6)
上式中 W 2 ( X ) W^2\left(X\right) W2(X)是一个权重函数,离邻域中心越远,权重越小。让
V = ( d x d t , d y d t ) = ( u , v ) T , ∇ I ( X ) = ( ∂ I ∂ x , ∂ I ∂ y ) = ( I x , I y ) T V=\left(\frac{dx}{dt},\frac{dy}{dt}\right)=(u,v)^T,\nabla I(X)=(\frac{\partial I}{\partial x},\frac{\partial I}{\partial y}){=\left(I_x,I_y\right)}^T V=(dtdx,dtdy)=(u,v)T,∇I(X)=(∂x∂I,∂y∂I)=(Ix,Iy)T
A = ( ∇ I ( X 1 ) , … , ∇ I ( X n ) ) T A=\left(\nabla I\left(X_1\right),\ldots,\nabla I\left(X_n\right)\right)^T A=(∇I(X1),…,∇I(Xn))T
W = d i a g ( W ( X 1 ) , … W ( X n ) ) W=diag{\left(W\left(X_1\right),\ldots W\left(X_n\right)\right)} W=diag(W(X1),…W(Xn))
b = − ( ∂ I ( X 1 ) ∂ t , … , ∂ I ( X n ) ∂ t ) T b=-\left(\frac{\partial I\left(X_1\right)}{\partial t},\ldots,\frac{\partial I\left(X_n\right)}{\partial t}\right)^T b=−(∂t∂I(X1),…,∂t∂I(Xn))T
n表示邻域像素的个数。然后用最小二乘法求出式(6)的解:
V = ( A T W 2 A ) − 1 A T W 2 b (7) \mathrm{V}=\left(A^{T} W^{2} A\right)^{-1} A^{T} W^{2} b\tag7 V=(ATW2A)−1ATW2b(7)
最后可以使用Newton-Raphson方法获得更加精确的值。
金字塔LK算法
由于LK算法要求位移必须足够的小,所以Pyramid-LK算法解决了这个缺点:
逐层向上减少图片大小,形成一个图片金字塔,其中图片的缩放大小为底层的宽高的一半。这会将大的位移转换为小的位移,然后使用LK算法从顶层开始计算光流,在每一层进行光流的矫正,知道最底层获得最终的光流。
金 字 塔 L K 算 法 示 意 图 金字塔LK算法示意图 金字塔LK算法示意图
2.1 图神经网络(GNN)
早期的图网络多用于分子结构分类问题,事实上,欧式空间(例如图片)或者序列(例如text文本)等常见的场景也可以转变为图,然后利用图神经网络技术进行处理。
直到2013年,Bruna基于图信号处理提出了基于谱域和空域的图卷积神经网络,自此GNN开始不断展示其强大的能力。
对于一张图 G G G,每个节点v有自己的特征向量 X v X_v Xv。每条边连接两个节点,并且对于连接的结点 v , u v,u v,u,这条边也有自己的特征向量 X ( v , u ) X_{\left(v,u\right)} X(v,u)。GNN的目标是获得每个节点的图形感知 h v h_v hv的隐藏状态,对于每个节点,他的隐藏状态包含从邻节点获得的信息。图上通过迭代更新所有节点的隐藏状态来实现GNN。在 c + 1 c\ +\ 1 c + 1层,节点 v v v的更新状态为: h v c + 1 = f ( x v , x c o [ v ] , h n e c [ v ] , x n e [ v ] ) (8) \mathbf{h}_{v}^{c+1}=f\left(\mathbf{x}_{v}, \mathbf{x}_{c o}[v], \mathbf{h}_{n e}^{c}[v], \mathbf{x}_{n e}[v]\right)\tag8 hvc+1=f(xv,xco[v],hnec[v],xne[v])(8)
上式中的 f f f是隐藏状态的状态更新函数,我们使用神经网络代替。 x c o [ v ] \mathbf{x}_{co}\left[v\right] xco[v]代表为节点 v v v的相邻边对应的特征向量, x n e [ v ] \mathbf{x}_{ne}\left[v\right] xne[v]代表节点 v v v的相邻节点的特征向量, h n e c [ v ] \mathbf{h}_{ne}^c\left[v\right] hnec[v]代表在