目标跟踪方法包括生成类方法和判别类方法。与生成类方法最大的区别是,判别类方法分类器采用机器学习,训练中用到了背景信息,这样分类器就能专注区分前景和背景,所以判别类方法普遍都比生成类好。本方法基于图论进行数据关联并求解问题。
在了解该方法前,需要有图论的基本知识,包括图的结构,最短路径求解(Bellman-Ford算法,Dijkstra算法),最小损耗流问题求解等知识。
模型建立
对于对象数据关联即可理解为最大化检测到对象的轨迹预测正确率,公式表达:
其中
但该公式难以被直接优化,通过一系列转换(详见论文 Global data association for multi-object tracking using network flows),公式1等价转换为公式2:
其中:
而公式2可以直接转换为最小损耗流问题,模型便如下图:
SSP及其优化算法
该节内容主要为论文FollowMe: Efficient Online Min-Cost Flow Tracking with Bounded Memory and Computation翻译并加入自己的理解,用以求解最小损耗流问题,最后求取最优轨迹。
SSP算法
SSP算法先使用Bellman-Ford算法找到最短路径(如图(d)),并进行转换(如图转换方法),使所有路径的损耗为非负,以保证接下来求最短路径可以使用Dijkstra算法,接着对最短路径边缘反向,获取残差图,使用Dijkstra算法求最短路径,再反向获取残差图,通过循环,当找不到最短路径或最短路径非负时算法结束,通过图(g)(h)(i)将找到的最短路径转换为最优的轨迹。(图(g)中绿色轨迹表示最短路径,将其反向变为图(h),所有反向的节点边便代表该图的最优轨迹)
仍然不是很了解的朋友们,可以再看看下面的SSP算法的求解步骤图,但要注意基于跟踪的图每条边可通过的流最大也只有1。下图只是帮助大家更好理解SSP算法。
dSSP算法
在SSP中第一次找到最短路径后,使用Dijkstra算法在残差图寻找最短路径时,需要重新遍历所有节点。而SSP在第一次寻找最短路径的过程中遍历了所有的节点,而转换后的残差图的部分节点的前驱节点与转换前的图的节点完全一致,这就导致了计算量的重复。dSSP(动态规划SSP算法)只更新残差图中前驱节点中含有最短路径中边翻转的节点,再对这行节点进行松弛操作更新,最后找到新的最短路径。
mbodSSP算法
mbodSSP针对在线且内存有限处理的情况。对于在线算法,我们所面对的情况是新的观测对象到来(在t帧时检测到的一系列对象),我们需要重新使用直到t-1帧为止的最短路径和轨迹算法获得的计算。新的网络包括之前的网络和当前帧所转换的新增加的一些边和节点,因此它也有可能会重新优化轨迹而与之前帧所优化的原有轨迹不一致,图(a)-(g)描述了在线算法的过程。
当算法处理在线视频时,针对目标长轨迹,它需要使用很多帧前的数据去做优化。同时对于一些时间序列极长的视频需要存储数据的内存空间是无止境的,因此必须要对算法进行优化。优化算法mbodSSP的核心思想是给予系统有限的计算和存储空间,忽略较早时间帧的信息,只保留临近几帧的数据。
实验结果
对于相邻两帧图像特征选择了检测回归框的大小、内部颜色、位置、IOU、相似度 ,然后将特征相似度加权平均,作为节点间消耗f(i,j),其中f(en),f(ex),f(i)都为设定值。
结果如下:
将原图坐标进行透视变换可以获取鸟瞰图视角下的轨迹并可粗略估计行人相对车辆运动速度。
本篇文章源自本人毕业设计内容且未发表,因此部分内容讲解没有很详细。如需转载,请联系本人!!!