AIC21-trick3金牌方案- City-scale multi-camera vehicle tracking guided by crossroad zones

AIC21-trick3 金牌方案

原文为
City-scale multi-camera vehicle tracking guided by crossroad zones

C. Liu, Y. Zhang, H. Luo, J. Tang, W. Chen, X. Xu, et al.

Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition 2021

Pages: 4129-4137

MTMCT 通常分为几个子任务:①单相机跟踪 (SCT) ②基于外观的特征重新识别 (ReID) 和轨迹聚类:

(1) 单相机跟踪在圈里中也称为多目标跟踪(MOT),通常遵循逐检测跟踪的方式。 (2) ReID尝试从大型图库集中检索完全相同的实例。 (3) 轨迹聚类旨在将摄像机中的轨迹合并成跨摄像机链接。尽管在目标检测、跟踪和重新识别等单独任务中进行了很好的研究,但对多相机多跟踪框架的优化研发仍然很有前景。

对于车辆MTMCT

(1)车辆经常由于失真或照明条件而错过。在多目标跟踪的场景中,这通常可以通过更好的检测器、更好的数据关联策略甚至单个目标跟踪来缓解。然而,这些方法依赖于大量的训练数据或外部模型。

(2) 车辆外观相似,因此纯重识别模型无法区分这些车辆

(3) 同一个车辆实例可能会有很大的外观变化,因此无法在不同的摄像机中分组。考虑到这些挑战和一些基本的交通规则,我们设法解决这些问题如下。

策略1——Tracklet Filter Strategy(TFS)

用一个低阈值获取较多的目标,然后对这些目标进行筛选。

  1. 存在静止的道路标志等物体被误检为车辆,由于该物体一直是静止不同的,始终存在于相机的视角当中,因此可以筛选掉。
  2. 为了减少搜索空间,一些并不进入主干道的车辆会被剔除。
策略2——Direction Based Temporal Mask (DBTM)

在每个摄像头中设置不同的区域,获得了车辆的移动方向,对于来自不同摄像机的两个轨迹,通过相应的时间戳和移动方向来判断它们是否应该断开连接

从A移动到B和从B移动到A的两辆汽车轨迹不应当被匹配到,因为移动方向冲突。通过简单而有效的时间掩码,搜索空间大大减少,从而减轻了重新识别的压力。

策略3——Sub-clustering in Adjacent Cameras

对于外观变化很大的同一辆车,我们提出了相邻摄像机中的子聚类(SCAC),它试图匹配相邻摄像机中的轨迹。灵感是车辆总是连续地经过摄像头视场,例如,来自 C41 的车辆不应该与没有内部 C42 的 C43 匹配。通过子聚类,首先对相邻摄像机中的轨迹进行分组,然后对这些本地匹配的轨迹进行查询扩展。查询扩展为这些本地匹配的轨迹引入了更多信息,并使它们更有可能与其他摄像机中的潜在轨迹相匹配。

先验知识:得知相机之间是否相邻

相关研究
多目标跟踪

目前,检测跟踪是多目标跟踪的主要方案。对于目标检测,多目标跟踪旨在通过离线跟踪或在线跟踪将它们关联成长轨迹。

  1. 离线跟踪,基于视觉和时空相似性构建图,然后针对解决方案优化图。它通常以更多的计算时间为代价获得更好的性能。

  2. 在线跟踪,旨在在没有未来信息的情况下关联跟踪和检测。目前已经提出了一些简单而有效的方法,包括 SORT 和 Deep-SORT。当只有历史信息时,这些方法依靠准确的外观重新识别模型进行长期跟踪来处理遮挡。近年来,还提出了联合检测与跟踪、单目标跟踪。

目标ReID

对于车辆ReID主题,由于在城市管理和智能交通中的应用,受到了更多的关注。该课题涉及多领域学习、大规模数据集、合成数据等。随着基于transformer的视觉任务的出现,车辆识别得到了极大的改善

轨迹聚类

有了以上两个基本模块,MTMCT可以看成是一个轨迹聚类问题。许多以前的工作都遵循这种 MTMCT 方案。基于图的方法为不同摄像机中的多个轨迹建立全局图,并针对 MTMCT 解决方案进行优化。时空约束交通规则已嵌入到聚类阶段。有了这些约束,搜索空间大大减少,因此车辆重新识别的准确性大大提高。在测试数据和训练数据的相机分布相同的情况下,方法可以学习每对相邻连接的相机的转换时间分布,而无需手动调整。对于完全不同的测试集中的 MTMCT,在不知道相机分布的情况下,方法遵循一些基本规则来约束匹配场。

本文方法
  1. 首先通过检测头从视频流的每一帧中获取目标的BBox

  2. 通过训练好的一个Re-ID模型从目标BBox中提取出外观特征

  3. 单相机跟踪器使用 BBox 和 Re-ID 功能为每个跟踪目标生成一个单相机轨迹

  4. 最后,根据单摄像机tracklets和 Re-ID 特征,摄像机之间的 ID 同步生成多摄像机轨迹

车辆检测

车辆检测用的是有较好检测表现的YOLOv5x模型进行检测,该模型是在COCO数据集上训练的,没有用到其他额外的数据集。

原始模型输出有80个种类,其中筛选了3种和车辆道路有关的结果——cars, trucks, buses.

车辆Re-ID

具体的损失函数采用了复合的损失:

L r e i d = L c l s + α L t r p L_{reid}=L_{cls}+\alpha L_{trp} Lreid=Lcls+αLtrp
其中, L c l s L_{cls} Lcls表示softmax cross-entropy loss L t r p L_{trp} Ltrp表示triplet loss
L c l s = − log ⁡ e W y i T x i + b y i ∑ j = 1 n e W j T x i + b j L_{cls}=-\log\frac{e^{W_{y_i}^T}\pmb x_i+b_{y_i}}{\sum_{j=1}^ne^{W_j^T\pmb x_i+b_j}} Lcls=logj=1neWjTxxxi+bjeWyiTxxxi+byi
其中, x i \pmb x_i xxxi表示类别为 y i y_i yi的深度为 i i i的特征, W j W_j Wj表示权重 W W W中第 j j j列。这个就是带有偏置项的经过log变化后的softmax函数
L t r p = [ d p − d n + α ] + L_{trp}=[d_p-d_n+\alpha]_+ Ltrp=[dpdn+α]+
这里的 d p d_p dp d n d_n dn是正样本和负样本的距离, α \alpha αmargin [ z ] + [z]_+ [z]+等价于 max ⁡ ( z , 0 ) \max{(z,0)} max(z,0)

单相机多目标跟踪

将视频帧中的检测与对应的tracklet关联起来,实现多车目标的单摄像头跟踪。

使用的是当前最新的FairMOT模型

FairMOT是一个检测和跟踪于一体的统一的模型

多相机轨迹匹配(这里是重点)

1)根据十字路口区域和轨迹生成匹配所需的信息;

2)使用TFS过滤tracklets;Tracklet Filter Strategy

3)计算tracklet之间的相似度矩阵,使用DBTM进行匹配约束;Direction Based Temporal Mask

4)tracklet之间进行SCAC处理,分别进行区域间聚类和凸轮间聚类。Sub-clustering in Adjacent Cameras

第一部分——针对十字交叉区域,根据轨迹进行筛选

因为竞赛强调了主干道的匹配,所以这里对进入到主干道的车辆进行了划分

这里就是一个技巧,是针对这一个竞赛采用的一个技巧,并不具有普适性。
人工划分了哪些路口是进入到主干道的,哪些路口是和主干道相接的,哪些路口是连接到其他相机的。

接下来对进入不同道路的目标进行了标记,到这个阶段时已经获得了单个相机中目标的轨迹,现在需要进行聚类。如果目标只是经过主干道,那么这些车辆并不会被其他相机拍下来,所以通过这种方式减少了搜索空间。并且还有一部分误检的对象,这些误检的对象可能是静止不动的,一直存在于一个相机中,因此也是忽略掉

第二部分——基于目标运动轨迹的方向进行编码

这里的冲突表就是用于目标轨迹方向判断的。

请添加图片描述

这里的轨迹并不复杂,其实就是一个向量。标识了始末区域的向量 [ z s , z e ] [z_s,z_e] [zs,ze]和标识了始末时间的向量 [ t s , t e ] [t_s,t_e] [ts,te]

举个例子,两个轨迹,现在要在相机 i i i 的Zero3进行匹配,

轨迹 i i i的属性为:属于相机 c i c^i ci,时间向量为 [ t s i , t e i ] [t_s^i,t_e^i] [tsi,tei]
轨迹 j j j的属性为:属于相机 c j c^j cj,时间向量为 [ t s j , t e j ] [t_s^j,t_e^j] [tsj,tej]

如果相机 c j c^j cj是相机 c i c^i ci的上一个路口(这里应当理解为是3号路口连接的十字路口节点)的相机,那么轨迹 j j j t e j t_e^j tej应当小于轨迹 i i i t s i t_s^i tsi,或者轨迹 j j j t s j t_s^j tsj应当大于轨迹 i i i t e i t_e^i tei,因为车辆是从上一个相机开往这个相机的Zero3或者从这个相机的Zero3开往上一个相机的。

其实就是个很简单的数学建模问题,而且是人工建立的图结构

最终得到了一个矩阵,由 m m m端轨迹两两首位呼应构成的稀疏图结构。

请添加图片描述

但这里还没有进行匹配,因为符合首尾呼应的轨迹很多,而轨迹的匹配是一对一的,因此接下来通过计算轨迹的相似性进行匹配。

每一条轨迹都有一个由其所有帧构成的2048维平均特征,轨迹的相似性通过余弦距离来计算

计算出对应的相似度距离矩阵
请添加图片描述

到这里还不够,论文提到因为光照和视图变化等原因,只用相似度距离矩阵进行匹配是不够完善的。

这里一个值得学习的方法就是去掉相机引起的偏差。

从每个 tracklet 特征中减去同一相机下特征的平均值。然后使用最近的邻居更新 tracklet 特征。还使用 k相互近邻 方法来细化更新后的相似度矩阵。 k相互近邻效果很好,从而生成更强的相似度矩阵 S ^ \hat{S} S^

k相互近邻k-reciprocal nearest neighbor) 这个算法的思路就是:如果两张图片A,B相似,那么B应该会在A的前K个近邻里面,反过来,A也会在B的前K个近邻里面。但如果两张图C,D不相似,即使C在D的前K个近邻里面,D也不会在C的前K个近邻里面。

总结:相比于K临近算法,多了个相互的要求

第三部分——临近相机的子聚类

判断了首尾呼应的轨迹,再将轨迹特征减去同一相机下的特征平均值后,利用k相互近邻算法计算出一个更好的相似度矩阵,这样得到的一个称为DBTM的相似度矩阵 S ^ \hat{S} S^,再接下来就是需要匹配了。

常用的方法是根据DBTM相似度矩阵 S S S对所有轨迹进行层次聚类。这种方法对所有摄像机进行大范围的聚类,很难聚集到正确的车辆一起。同时,它可能会与错误的车辆聚集并导致错误的集群。根据数据集场景的特点,我们提出了相邻相机中的子聚类(SCAC)。这是一种基于层次聚类的局部聚类方法。

主要分为①区域间聚类和②相机间聚类两个过程。

这里还是用了相机之间的相互关系组队进行聚类而已。

对于区域间聚类:

在数据集中,当前相机区域4连接到上一个相机的区域3,当前相机区域3连接到下一个相机的区域4。因此,首先对连通区域中的轨迹进行层次聚类,以确保高置信度的车辆聚类并确保聚类的正确性。

对于相机间聚类

用于在区域间聚类的基础上对摄像机中的所有轨迹进行聚类,以保证Crossroad Zones无法描述的轨迹与类的广度相匹配。

通过这两种聚类方法,可以匹配尽可能多的轨迹,同时仍然保证准确性。然后获得最终的摄像机间轨迹匹配结果并将其合并为完整的轨迹。

实验

这里论文里写了,不做赘述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值