参考论文: Box-Grained Reranking Matching for Multi-Camera Multi-Target Tracking
文章侧重点
文中的追踪框架由4个模块组成:车辆识别(vehicle detection)、重识别(Re-Identification, ReID)、单摄像头下多目标追踪(Single-Camera Multi-Target tracking, SCMT) 、跨摄像头间关联(Inter-Camera Association, ICA)。
总体结构
车辆识别
文中选择了两阶段的检测器——Cascade-RCNN,再在backbone后使用了特征金字塔网络(FPN)增加特征语义信息。
- 训练阶段:
- 加载了COCO预训练权重,用Ai22Track1的训练和验证数据集进行训练。
- 进行增加分辨率、翻转、裁剪等数据增强方法以便模型能更好地识别被遮挡的、小目标的车辆。
- 测试阶段:
- 采用两种方法处理输入的图片:增加最大的分辨率至2666*1666;将输入的RGB图片拆分为4个patch(patch之间可以重叠),
- 将处理后的图片输入到检测模型中得到两种结果,再合并起来作为最终结果。
重识别
ReID模块中常用HRNet、ResNeXt101、ResNet、Res2Net、ConvNeXt作为backbone,以提取鲁棒的有判别力的特征。此外就是应用交叉熵损失函数 + Triplet loss 使得同一辆车的不同摄像头下的特征距离更近。
来自提取自五个模型的ReID特征直接拼接起来作为最终的ReID特征。
单摄像头下多目标追踪
- 输入是第一步生成的检测框+ReID特征。
- 应用DeepSORT作为baseline,卡尔曼滤波预测目标的运动信息、匈牙利算法匹配关联检测的结果。
- 为了别丢失掉检测出的低置信度的检测框中的潜在目标,实际代码中设置了两个阈值(参照ByteTrack)——一个高分数的阈值和一个低分数的阈值。
- 高分数的检测框进行匹配生成轨迹
- 针对未匹配的低分数的检测框与未匹配的轨迹进行最小化IoU匹配
- 只有未匹配到轨迹的高置信分数的框会初始化为新的轨迹。
对于外观特征匹配,集成的ReID特征用来区分多个目标。轨迹的外观状态用一个指数平均移动数(EMA)方法更新。
从两方面对卡尔曼滤波改进以获取运动信息:
- 原本的卡尔曼滤波基本假设是匀速运动和线性观测模型,但并不适合实际情况。为了减少检测噪声的影响,因此将卡尔曼滤波
跨摄像头间关联
针对跨摄像头出现的如,待匹配轨迹中外观相似车辆、不同摄像头下不同光照情况等问题,文中提出了基于box的匹配方法,大致分为4步。
基于区域的轨迹过滤
根据交通规则、道路的拓扑结构、行驶时间过滤那些不合理的轨迹。
在文中先预设一些区域,将车辆进入摄像头视野的区域称作“in zone”;将车辆离开摄像头视野的区域称作“out zone”,然后将轨迹定义如下:
设置两个约束条件:
其中,
T
o
u
t
T_{out}
Tout、
T
i
n
T_{in}
Tin表示帧的阈值,即视频最大帧的id。
- 公式6表示退出Camera C042轨迹应该满足的条件是,退出时间不能超过退出区域最大帧的帧数,且退出的区域必须是区域4。
- 公式7表示进入Camera C043的轨迹必须满足的条件是,进入时间必须大于进入区域的最小帧帧数,且进入的区域必须是区域1。
构建基于box的距离矩阵与优化
经过上一步会获取一个 T r a j i n Traj_{in} Trajin、 T r a j o u t Traj_{out} Trajout的集合。以往的方法就基于轨迹计算距离矩阵完成匹配,然而这种计算效果受到限制因为轨迹相关的一些噪声特征成为主导特征。为了解决这个问题,本文提出基于box计算距离矩阵。同时考虑两个连通的摄像头区域,C042中的区域4和C043中的区域1。
- 首先计算两个区域中box之间的距离。
Z
o
u
t
Z_{out}
Zout表示退出区域,
Z
i
n
Z_{in}
Zin表示进入区域
Z o u t = [ T 1 , . . . , T n ] Z_{out} = [T_1, ..., T_n] Zout=[T1,...,Tn] 其中, T i = [ B i 1 , . . . , B i h i ] T_i=[B_i^1, ..., B_i^{h_i}] Ti=[Bi1,...,Bihi], B i h B_i^h Bih表示第i个轨迹的第h个box特征。
Z i n = [ T 1 ^ , . . . , T m ] ^ Z_{in} = [\hat{T_1}, ..., \hat{T_m]} Zin=[T1^,...,Tm]^其中, T i = [ B i 1 ^ , . . . , B i h i ^ ] T_i=[\hat{B_i^1}, ..., \hat{B_i^{h_i}}] Ti=[Bi1^,...,Bihi^]。
两个区域的相似度矩阵为:
- 第二步,优化距离矩阵。 参照论文Reranking person re-identification with k-reciprocal encoding,用距离矩阵D重构相似度矩阵S;再依据旅行时间微调距离矩阵(公式9);最后用遮挡率(occlusion rate)生成一个强有力的距离矩阵(公式10)。
基于K-倒数最近邻的轨迹关联
利用上一步生成的距离矩阵 D D D关联轨迹。用k-倒数最近邻匹配算法。
- 首先以
B
i
h
B_i^h
Bih为中心点定义
N
(
B
i
h
,
k
)
N(B_i^h, k)
N(Bih,k)。
- 然后定义在“in zone”中最多出现的与
B
i
h
B_i^h
Bih 临近的那个轨迹为匹配轨迹。
后置操作
- 检查有没有不合理配对,比如“out zone”的时间在"in zone"之后,我们会移除这样的配对。
- 统一id
实验
数据集
使用了AiCity2022提供的CityFlowV2的训练集与验证集。此外使用了VehicleX生成的合成数据。
ReID的训练数据集有2028辆车(666辆真车+1362辆合成车)、229345张图片(27195张真实图像+192150张合成图像)