智慧交通day02-车流量检测实现02:多目标追踪

1.多目标跟踪分类

多目标跟踪,即MOT(Multi-Object Tracking),也就是在一段视频中同时跟踪多个目标。MOT主要应用在安防监控和自动驾驶等领域中。 

1.1 初始化方法

多目标跟踪,即MOT(Multi-Object Tracking)问题中并不是所有目标都会在第一帧出现,也并不是所有目标都会出现在每一帧。那如何对出现的目标进行初始化,可以作为跟踪算法的分类表针。常见的初始化方法分为两大类,一个是Detection-Based-Tracking(DBT),一个是Detection-Free-Tracking(DFT)。下图比较形象地说明了两类算法的区别。

  • DBT

    DBT的方式就是典型的tracking-by-detection模式,即先检测目标,然后将目标关联进入跟踪轨迹中。那么就存在两个问题,第一,该跟踪方式非常依赖目标检测器的性能,第二,目标检测的实质是分类和回归,即该跟踪方式只能针对特定的目标类型,如:行人、车辆、动物。DBT则是目前业界研究的主流。

  • DFT

    DFT是单目标跟踪领域的常用初始化方法,即每当新目标出现时,人为告诉算法新目标的位置,这样做的好处是target free,坏处就是过程比较麻烦,存在过多的交互,所以DBT相对来说更受欢迎。

1.2 处理模式

多目标跟踪,即MOT(Multi-Object Tracking)也存在着不同的处理模式,Online和Offline两大类,其主要区别在于是否用到了后续帧的信息。下图形象解释了Online与Offline跟踪的区别。

  • Online Tracking

    Online Tracking是对视频帧逐帧进行处理,当前帧的跟踪仅利用过去的信息。

  • Offline Tracking

    Offline Tracking利用前后视频帧的信息对当前帧进行目标跟踪,这种方式只适用于视频,如果应用于摄像头,则会有滞后效应,通常采用时间窗方式进行处理,以节省内存和加速。

2.运动模型

为了简化多目标跟踪的难度,我们引入运动模型类简化求解过程,运动模型捕捉目标的动态行为,它估计目标在未来帧中的潜在位置,从而减少搜索空间。在大多数情况下,假设目标在现实中是平缓运动的,那么在图像空间也是如此。对于车辆的运动,大致可分为线性和非线性两种运动:

  • 线性运动:线性运动模型是目前最主流的模型,即假设目标的运动属性平稳(速度,加速度,位置);
  • 非线性运动:虽然线性运动模型比较常用,但由于存在它解决不了的问题,非线性运动模型随之诞生。它可以使tracklets间运动相似度计算得更加准确。

3.跟踪方法

多目标跟踪中基于神经网络的算法,端到端的算法并不多,主要还在实验室的刷榜阶段,模型复杂,速度慢,追踪结果也不好,主要给介绍以下两种主流的算法:

3.1 基于Kalman和KM算法的后端优化算法

该类算法能达到实时性,但依赖于检测算法效果要好,特征区分要好(输出最终结果的好坏依赖于较强的检测算法,而基于卡尔曼加匈牙利匹配的追踪算法作用在于能够输出检测目标的id,其次能保证追踪算法的实时性,这样追踪效果会好,id切换少,其代表性的算法是SORT/DeepSORT

SORT 是一种实用的多目标跟踪算法,引入了线性速度模型与卡尔曼滤波来进行位置预测,在无合适匹配检测框的情况下,使用运动模型来预测物体的位置。

匈牙利算法是一种寻找二分图的最大匹配的算法,在多目标跟踪问题中可以简单理解为寻找前后两帧的若干目标的匹配最优解的一种算法。

卡尔曼滤波可以看作是一种运动模型,用来对目标的轨迹进行预测,并且使用确信度较高的跟踪结果进行预测结果的修正。

多目标追踪一般接在目标检测后。在工业界目标检测采用比较多的是YOLO检测网络,单阶段式,速度快,精度不差,部署在NV的平台帧率可以达到30fps以上。

所以要实现目标检测代码和多目标追踪代码集成的任务,需要先将两者的框架统一。即先实现目标检测网络,检测的输出结果主要是将检测框的位置信息输入到多目标追踪算法中。

3.2 基于多线程的单目标跟踪的多目标跟踪算法

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

多目标追踪本质上是多个目标同时运动的问题,所以有提出将单目标跟踪器引入到多目标追踪的问题,为每一个目标分配一个跟踪器,然后间接地使用匹配算法来修正那些跟踪失败或新出现的目标。代表性的单目标跟踪算法为核相关滤波算法(KCF),在精度和速度上能够同时达到很高的水平,是当时单目标跟踪最优秀的算法之一,后来的很多单目标跟踪算法都是基于此做的改进。

实际应用过程中会为每个目标分配一个KCF跟踪器并采用多线程的方式来组织这些跟踪器。同时因为实际硬件条件的限制,不可能提供强大的计算力资源,会采用检测器与跟踪器交替进行的跟踪策略。由于检测的帧率不高,使得跟踪的维持效果出现滞后或框飘的现象较为严重,实用性不大。


总结:

1.多目标跟踪,即MOT(Multi-Object Tracking),在一段视频中同时跟踪多个目标

  • 基于初始化方法:

    • DBT:基于检测的目标跟踪方法
    • DFT:每当新目标出现时,人为告诉算法新目标的位置
  • 基于处理模型的方法:

    • 离线处理:利用前后视频帧的信息对当前帧进行目标跟踪
    • 在线处理:对视频帧逐帧进行处理,当前帧的跟踪仅利用过去的信息
  • 运动模型

    线性运动(常用)和非线性运动

  • 常用算法:

  • 基于Kalman和KM算法的后端优化算法

  • 和基于多线程的单目标跟踪的多目标跟踪算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIT非常好的整理

初始化配置 C代码 #配置使用git仓库的人员姓名 git config --global user.name "Your Name Comes Here" #配置使用git仓库的人员email git config --global user.email youyourdomain.example.com #配置到缓存 默认15分钟 git config --global cred…

centos虚拟机wifi设置代理服务器,vmware虚拟机centos在宿主机连WIF..._网络编辑_帮考网...

caotongjiang新兵答主12-13TA获得超过6747个赞资料:netmask ip地址 broadcast 子网掩码 gateway 网关 dns DNS服务器vmware三种网络连接上网设置:1.桥接方式(bridge) :默认使用vmnet0将虚拟机的ip设置与主机同网段未使用ip,其余与主机相同:ip地址与主机同段相异,子网…

PHP mysql_real_escape_string() 函数

mysql_real_escape_string (PHP 4 > 4.3.0, PHP 5) mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 Warning 本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换…

ValueError: check_hostname requires server_hostname的解决办法

在用pip安装scikit-image库时报错:ValueError: check_hostname requires server_hostname 报错ValueError: check_hostname requires server_hostname通常是因为版本冲突等原因,查遍网上众多大佬总结的经验后,最终发现是由网络代理导致的问题…

微软笔试题(看到的写答案啊)

int func(int n, int* r) {printf("n%d *r%d\n",n,*r);//加了个打印的东西 return n && (*r n) && func(n-1, r); }int main() {int r 0;func(100, &r);return 0; }&&还具有短路的功能,即如果第一个表达式为false&#xff…

salesforce 零基础学习(五十四)常见异常友好消息提示

异常或者error code汇总:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_concepts_core_data_objects.htm 做项目的时候有很多异常是我们经常遇到的: 1.空指针异常; 2.死锁或者超时; 3.级联删…

datasnap ajax jsonp,有没有办法在Delphi DataSnap REST服务器上使用JSONP?

似乎没有办法使用DataSnap来实现带有Padding的JSONP(JSON)解决方案,但是我想在这里抛出这个问题以防有人解决了这个问题。有没有办法在Delphi DataSnap REST服务器上使用JSONP?背景:JSONP是一种利用HTML脚本元素的跨站点引用功能来克服XmlHtt…

PackagesNotFoundError: The following packages are not available from current channels:

解决方法很简单。 先输入以下命令: conda config --append channels conda-forge 在安装你所需要的包即可。

redis安装与基本配置

获取下载包 wget http://download.redis.io/releases/redis-2.8.24.tar.gz 解压和编译 tar -zxvf redis-2.8.24.tar.gz cd redis-2.8.24/ make #如果报jemalloc的错,就用make MALLOClibc make test make test可能报错说需要tcl 8.5,用yum安装 yum ins…

★Anaconda中创建、切换、删除虚拟环境(指定仓库)

指定仓库安装源文件 pip install 包名 -i http://pypi.douban.com/simple 可以换源列表: 阿里云 https://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ #常用 豆瓣(douban) http://pypi.douban.com/simple/ 清华…

怎样修改t3服务器地址,怎样修改t3服务器地址

怎样修改t3服务器地址 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器…

结构体中.和-的用法

#include"stdio.h" #include"stdlib.h"struct linkwqf{int age;char * name;struct linkwqf* next; }; struct linkwqf linkwww1;/*第一种声明结构体类型变量的方法 这种方法意义不大*/ typedef struct linkwqf linkwww2;/*第一种声明结构体类型变量的方…

外网访问FTP服务,解决只能以POST模式访问Filezilla的问题

在内网可以正常使用PASV,但是在外网不行,导致数据传输慢或者根本连接不了,在FlashFXP中通过日志,找到了解决方法解决方法1.在Filezilla——Edit——Settings——Passive mode Settings 将mode切换为【Use the following IP:】 后面的值跟的是…

智慧交通day02-车流量检测实现03:辅助功能(交并比and候选框的表现形式)

学习目标 能够实现两个目标框的交并比 了解候选框在多目标跟踪中的表达方式及相应转换方法 IOU是交并比(Intersection-over-Union)是目标检测中使用的一个概念是产生的候选框(candidate bound)与原标记框(ground tru…

电脑pro,拒绝等待!七彩虹全新设计师电脑ProMaster H1为创意加速

新年伊始,七彩虹科技正式发布了全新设计师领域整机系列:Colorful ProMaster(专业大师)。并同时公布了旗下第一款设计师电脑整机:Colorful ProMaster H1。其采用全新三面环绕布艺设计要素,搭载NVIDIA GeForce RTX Studio和英特尔傲…

智慧交通day02-车流量检测实现04:卡尔曼滤波器

1、背景介绍 卡尔曼滤波(Kalman)无论是在单目标还是多目标领域都是很常用的一种算法,我们将卡尔曼滤波看做一种运动模型,用来对目标的位置进行预测,并且利用预测结果对跟踪的目标进行修正,属于自动控制理论…

java 简单类继承

class Person {String name;int age;public String talk(){return "我是:"this.name",今年:"this.age"岁";}public Person()/* 无参数的构造函数*/{System.out.println("1.public Person(){}");} } class Stude…

linux下的I2C驱动记录(RK)

现在做的是RK平台的I2C驱动,不是说linux每个外设对应一个设备文件吗?可是找了一下一直没找到,今天特别搞了一下。I2C设备是注册为platform平台驱动的。 下面是我用adb命令查看的 linux的设备文件不一定只在dev/这个目录下面,像sys/ 目录下面也会有一些设备文件的 MID下面…

成功解决 ProxyError: Conda cannot proceed due to an error in your proxy configuration

给win10的ubuntu1804安装anaconda, 执行conda create -n daily python3.7创建虚拟环境时报错 Collecting package metadata (current_repodata.json): failedProxyError: Conda cannot proceed due to an error in your proxy configuration. Check for typos and other confi…

【练习---日志文件的恢复】-----多元化成员中,单个成员丢失

1.查看当前的日志组成员: 09:59:28 SYSORA11GR2>select group#,member from v$logfile;GROUP# MEMBER ---------- --------------------------------------------------3 /u01/app/oracle/oradata/ORA11GR2/redo03.log2 /u01/app/oracle/oradata/ORA11GR2/redo02…