0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

多目标跟踪算法总结归纳

新机器视觉 来源:StevenYu 2024-04-28 09:42 次阅读

导读 多目标跟踪是计算机视觉领域中的一个重要任务,它旨在从视频或图像序列中准确地检测和跟踪多个移动目标。不过在落地部署时,有一些关键点需要解决。本文从快速应用部署的角度,和大家讲解多目标跟踪的实现方式,希望对大家有帮助。 实际应用中,做工程落地所遵从的原则是能够在保证实现功能的情况下,以最快的速度实现,先出一版,后期再不断迭代优化。所以定方案是最重要的,前期的调研工作做的好,对于后续的部署会极为方便,否则会走很多弯路。

回到本文的内容中来,目标检测已产生出很多优秀的算法(这里提的都是基于神经网络的算法,传统的CV检测算法不在考虑范围内),类似的综述性文章很多,无论单阶段式的(ssd/yolo),还是两阶段式的(faster rcnn)在实际工程中都有被应用,哪种框架用的熟练就用哪种框架,目标检测这一块就不过多讨论; 多目标追踪顾名思义就是跟踪视频画面中的多个目标,得到这些目标的运动轨迹;核心在于目标检测和数据关联,即在每一帧进行目标检测,再利用目标检测的结果来进行目标跟踪,后面一步一般称之为数据关联,数据关联更多依赖于手工特征提取(外观特征、运动特征、形状特征)。下面就多目标跟踪算法总结归纳为以下几类:

一、以卡尔曼滤波和匈牙利、KM匹配的后端追踪优化算法(代表性的应用有SORT、DEEP-SORT)

这类算法特点在于能达到实时性,但依赖于检测算法效果要好,特征区分要好(有点互相甩锅的味道,输出最终结果的好坏依赖于较强的检测算法,而基于卡尔曼加匈牙利匹配的追踪算法作用在于能够输出检测目标的id,其次能保证追踪算法的实时性),这样追踪效果会好,id切换少。相关论文和代码如下:

DeepSort: Wojke, Nicolai and Bewley, Alex and Paulus, Dietrich "Simple Online and Realtime Tracking with a Deep Association Metric" [paper] [code] In ICIP 2017

Sort: Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben "Simple Online and Realtime Tracking"[paper] [code] In ICIP 2016.

二、基于多线程的单目标跟踪器的多目标追踪算法(代表性的算法有KCF、LEDS)

这类算法特点是跟踪效果会很好,因为其为每一类物体都单独分配了一个跟踪器。但该算法对目标尺度变化要求较大,参数调试需要合理,同时该算法极耗cpu资源,实时性不高。相关论文和代码如下:

KCF: "High-Speed Tracking with Kernelized Correlation Filters" [paper] [code] In TPAMI 2015

LEDS:"Robust Estimation of Similarity Transformation for Visual Object Tracking" [paper] [code] In AAAI 2019.

三、 基于深度学习端到端的多目标跟踪算法。(代表性的算法有SST)

现阶段end-to-end的算法还不多,大多处于实验室刷榜阶段,有进一步落地应用的及时更新。相关论文和代码如下:

DAN: "Deep Affinity Network for Multiple Object Tracking" [paper] [code] In TPAMI 2019.

MCSA: "Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification" [paper] In CVPR 2019.

(这篇文章没有开源,基于SiameseRPN单目标跟踪器和行人ReID的多目标跟踪算法,解决长期跟踪下的目标漂移问题。利用SiameseRPN获取短期的目标线索,利用ReID特征计算目标间的匹配置信度,基于该置信度构建二分图,求解最小费用流得到长期的跟踪结果)

上述文章参考来源:

github.com/SpyderXu/multi-object-tracking-paper-list

第一类算法原理介绍:

SORT 是一种实用的多目标跟踪算法,引入了线性速度模型与卡尔曼滤波来进行位置预测,在无合适匹配检测框的情况下,使用运动模型来预测物体的位置。匈牙利算法是一种寻找二分图的最大匹配的算法,在多目标跟踪问题中可以简单理解为寻找前后两帧的若干目标的匹配最优解的一种算法。而卡尔曼滤波可以看作是一种运动模型,用来对目标的轨迹进行预测,并且使用确信度较高的跟踪结果进行预测结果的修正。

然而由于现实中目标运动多变且遮挡频繁,该算法的身份转换(Identity Switches)次数较高。于是衍生出带有深度关联特征的DeepSORT 方案,其沿用SORT中的卡尔曼滤波和逐帧数据关联方法并整合外观信息,使得身份转换的数量减少了45%。所提方案为:

l 使用马氏距离和深度特征余弦距离两种度量;

l 采取级联匹配,优先匹配距上次出现间隔短的目标;

l 第一级关联以余弦距离作为成本函数,但设定马氏距离和余弦距离两个阈值约束;

l 第二级关联与 SORT 中相同,尝试关联未确认和年龄为 n=1的不匹配轨迹;

l 同样采用试用期甄别目标,但大幅提高轨迹寿命 Amax=30。

核心:轨迹处理和状态估计、关联问题、级联匹配、特征描述器

748a4c02-04a9-11ef-a297-92fbcf53809c.png

Deepsort处理流程 实现应用:实际工程中存在一些硬性指标,必须考虑硬件平台的资源(车载控制器iecu、Nvidia平台、FPGA),cpu内存大小,是否有gpu,是否支持神经网络(caffe),是否支持部署在硬件端的编程语言(C++verilog)。目前在学术界极受欢迎的pytorch框架,训练模型可以,部署在硬件端不现实,底层调用的接口还是纯正的c代码。现在各类网络模型可以实现的框架很多,举个例子:目标检测网络ssd可以用caffe框架实现,也可以用pytorch框架实现,按正常的想法,两种最后训练出来的模型精度、速度应该类似,实际情况是最后出来的效果是有差别的,部署在硬件端同样有差别。另外用pytorch框架还需要转成支持C++的语言,不过现在pytorch已经出了可以调用libtorch的c++接口,以及支持tensort转换,方便基于pytorch的研究者们将代码部署在硬件端。

多目标追踪一般接在目标检测后。在工业界目标检测采用比较多的是ssd检测网络,单阶段式,速度快,精度不差,修改其backbone,速度会进一步提升,部署在NV的平台帧率可以达到30fps以上。所以要实现目标检测代码和多目标追踪代码集成的任务,需要先将两者的框架统一,若采用C++的目标检测网络(Yolo,ssd均可),多目标追踪也采用C++框架,这里因为都是跟实际工程打交道,就直接考虑C++语言了,训练模型还是可以采用任意框架,最后转成C++可以调用的模型即可。先实现目标检测网络,检测的输出结果主要是将检测框的位置信息输入到多目标追踪算法中。在实验室阶段,看多目标跟踪的效果即可。实际过程中,针对多目标跟踪的输出接口是有需求的,输出的物体类别,对应类别物体的id,以及增加个数对应的id号,持续的帧数等,这些信息都会通过lcm通信的方式传输给智驾融合层。

Deep-Sort视频效果展示

追踪结果分析:淡绿色的检测框为检测的结果,红色框为跟踪后的结果,很明显若检测效果鲁棒的话,对于追踪的效果也会提升。在视频中,远处的检测框会不稳定(这跟检测的距离有关),距离靠近时还存在不太稳定的检测框(如右转的红灯:检测的淡蓝色检测框时而存在时而消失),而代表多目标追踪的红色框能够继续维持,说明多目标跟踪起了维持检测框轨迹的作用,确保其检测框不消失,起到了跟踪的作用。而且基本不耗时,实时性也能达到要求。

内存占用率: 0.4%;

耗时: 40fps;

准确率: 基本取决于检测效果,能起到维持检测框的作用。

第二类算法原理介绍:

多目标追踪本质上是多个目标同时运动的问题,所以有提出将单目标跟踪器引入到多目标追踪的问题,为每一个目标分配一个跟踪器,然后间接地使用匹配算法来修正那些跟踪失败或新出现的目标。代表性的单目标跟踪算法为核相关滤波算法(KCF),它于2014年提出,在精度和速度上能够同时达到很高的水平,是当时单目标跟踪最优秀的算法之一。后来的很多单目标跟踪算法都是基于此做的改进,经典的还是最好的。实际工程不需要刷榜,能快速实现功能,更多的针对具体问题加一些边界条件,约束条件,使得最终结果能够满足实际的需求。

核相关滤波(Kernelized Correlation Filter,KCF)是相关滤波算法的一种扩展。相关滤波是指在模板的一个邻域内搜索和模板响应值最大的位置,可以视为一种模板匹配的方法,具有很高的实时性。将滤波器表示成一个权值向量,将滤波器和模板的响应值写作权值和特征向量的内积:

749c6fc2-04a9-11ef-a297-92fbcf53809c.png

其中w表示滤波器权重,z表示模板。求解一个最优的滤波器,使得滤波器的权值和模板特征向量的内积和标准响应图的误差最小,可以写作:

74b6a766-04a9-11ef-a297-92fbcf53809c.png

X表示一个循环采样的样本集合。在频域中可求得上式的解为:

74c234aa-04a9-11ef-a297-92fbcf53809c.png

实际应用过程中会为每个目标分配一个KCF跟踪器并采用多线程的方式来组织这些跟踪器。同时因为实际硬件条件的限制,不可能提供强大的计算力资源,会采用检测器与跟踪器交替进行的跟踪策略。

多线程的单目标跟踪方式

实际效果:采用多线程的单目标跟踪器的方法,在该离线视频上检测框的维持效果还是不错的,而且id几乎没有切换,很稳定;但实车测试的时候,将其移植于嵌入式端,由于检测的帧率不高,使得跟踪的维持效果出现滞后或框飘的现象较为严重,实用性不大。

实车验证时严重的框飘现象

内存占用率: 10-20%;

耗时: 18-24fps(物体类别越多,速度越慢);

准确率: 车速较慢时,维持检测框的效果很稳定; 但当车速较快时,这种跟踪方法维持检测框效果较差,会出现框飘的现象。

第三类算法原理介绍:

这篇文章是在目标检测ssd的基础上不断改进迭代的,这里引用一些论文作者的观点,

DAN is an end-to-end deep learning network during train phase, whose purpose is to extract the predetected objects' feature and performs pairing permutations of those features in any two frames to infer object affinities. Besides, DAN also accounts for multiple objects appearing and disappearing between video frames.

DAN网络在训练阶段是一个端到端的神经网络,它的目标是提取预先检测到的对象特征,并在任意两帧执行特征的配对序列,以得到物体的相似度。另外,DAN网络也能很好处理两帧之间出现和消失的多目标。

The network can be divided into two parts: feature extractor and affinity extractor. The feature extractor extracts each detected objects' features. The affinity extractor leverage those features to compute object data association matrix.

网络可以分为两部分:特征提取器和相似度提取器。特征提取器提取每个检测对象的特征。相似度提取器利用这些特征来计算检测对象数据关联矩阵。

74d154c6-04a9-11ef-a297-92fbcf53809c.png

更详细的原理分析可以参考:李元芳:Deep Affinity Network for Multiple Object Tracking

SST的检测效果

实际效果:速度极慢,不适用于部署到嵌入式端,还是刷榜的存在,尝试更换其backbone网络,加快速度。同时可以考虑将检测的特征与追踪所需的特征融合,最终输出一个权重文件。

内存占用率:15%;

耗时:3fps(速度极慢);

准确率:跟踪效果还行,轨迹描绘良好。

74ece6b4-04a9-11ef-a297-92fbcf53809c.png

多目标跟踪算法对比

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4760

    浏览量

    100497
  • 算法
    +关注

    关注

    23

    文章

    4596

    浏览量

    92592
  • 跟踪器
    +关注

    关注

    0

    文章

    131

    浏览量

    20008
  • 卡尔曼滤波
    +关注

    关注

    3

    文章

    162

    浏览量

    24632

原文标题:多目标追踪算法,项目部署原理及方案汇总

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    视频跟踪目标取差器)-基于DM8168实现的自动视频跟踪

    、外形比例、速度、运动方向等自动获取目标。视频跟踪:内置质心、边缘、多目标、相关、相位相关、场景锁定等多种跟踪算法,支持
    发表于 09-05 11:14

    视频跟踪目标跟踪算法简介(上海凯视力成信息科技有限...

    本帖最后由 shkslc 于 2013-10-10 10:25 编辑 跟踪算法简介AVT21提供了多种跟踪算法:质心跟踪
    发表于 09-29 08:59

    多目标优化算法有哪些

    多目标优化算法有哪些,该文围绕包含柴油发电机、风力发电、光伏发电和铅酸蓄电池的独立微网系统中的容量配置问题,提出了包含微网全寿命周期内的总成本现值、负荷容量缺失率和污染物排放的多目标优化设计模型。该
    发表于 07-12 06:52

    一种适用于空间观测任务的实时多目标识别算法分享

    硬件平台,运用散点聚类、轨迹跟踪、特征提取技术快速识别目标。对算法的功能需求、数据流向、运算流程和处理结果,进行了详细阐述。实践结果表明,该识别算法具有很强的实用性。关键词
    发表于 12-21 07:02

    基于聚类融合的多目标跟踪算法

    多目标跟踪是多传感器数据融合中的一个重要问题。基于模式识别理论,提出了一种通过对传感器测量数据集类,以区分源于不同目标的测量数据集合。对各个类对应的目标状态估计进
    发表于 07-01 08:40 18次下载

    多传感器多目标跟踪的JPDA算法

    文中提出了一种适用于多传感器多目标跟踪的JPDA算法,它以极大似然估计完成对来自多传感器的测量集合进行同源最优分划,然后采用JPDA方法对多目标进行
    发表于 02-03 10:38 47次下载
    多传感器<b class='flag-5'>多目标</b><b class='flag-5'>跟踪</b>的JPDA<b class='flag-5'>算法</b>

    基于传感器网络的多目标跟踪和特征管理方法

    针对传感器网络下多目标跟踪目标数量不断变化这一复杂情况,文中对多目标跟踪和特征管理方法进行了研究。该方法由数据关联、
    发表于 06-07 09:09 0次下载
    基于传感器网络的<b class='flag-5'>多目标</b><b class='flag-5'>跟踪</b>和特征管理方法

    基于演化硬件的多目标进化算法的研究

    基于演化硬件的多目标进化算法的研究
    发表于 01-08 14:47 0次下载

    改进霍夫森林框架的多目标跟踪算法

    针对单目视觉对多个相似的目标跟踪因遮挡等因素影响而失效的问题,提出一种基于改进霍夫森林框架的多目标跟踪算法。在将
    发表于 12-14 17:09 0次下载

    深度学习:多目标跟踪方向调研报告

    导读 本文是一篇多目标跟踪方向的调研报告,从相关方向、核心步骤、评价指标和最新进展等维度出发,对MOT进行了全面的介绍,不仅适合作为入门科普,而且能够帮助大家加深理解。 最近做了一些多目标跟踪
    的头像 发表于 11-05 10:01 3593次阅读
    深度学习:<b class='flag-5'>多目标</b><b class='flag-5'>跟踪</b>方向调研报告

    多目标跟踪过程中的数据关联技术综述

    多目标跟踪,其中单目标跟踪相对简单,除了需要解决与多目标跟踪共性的问题(如遮挡、形变等)外,单
    发表于 05-08 16:27 2次下载

    基于卷积特征的多伯努利视频多目标跟踪算法

    目标漏跟。针对该问题,在多伯努利滤波框架下,深度分析目标的特征信息,引λ抗干扰的卷积特征,提出基于卷积特征的多伯努利视频多目标跟踪算法,并在
    发表于 05-12 15:18 11次下载

    最常见的目标跟踪算法

    对象跟踪问题一直是计算机视觉的热点任务之一,简单的可以分为单目标跟踪多目标跟踪,最常见的目标
    的头像 发表于 09-14 16:20 2674次阅读

    基于MobileNet的多目标跟踪深度学习算法

    针对深度学习算法多目标跟踪中的实时性问题, 提出一种基于MobileNet的多目标跟踪算法.
    的头像 发表于 11-09 10:23 1044次阅读
    基于MobileNet的<b class='flag-5'>多目标</b><b class='flag-5'>跟踪</b>深度学习<b class='flag-5'>算法</b>

    基于机器视觉的典型多目标追踪算法应用实践

    TBD(Tracking-by-Detection)与DFT(Detection-Free Tracking)也即基于检测的多目标跟踪与基于目标外形的先验知识无需检测器的多目标
    的头像 发表于 06-15 17:22 1446次阅读
    基于机器视觉的典型<b class='flag-5'>多目标</b>追踪<b class='flag-5'>算法</b>应用实践