卧槽!出了一个Python实时目标跟踪系统神器!

2023-05-16

在当下自动驾驶、智慧城市、安防等领域对车辆、行人、飞行器等快速移动的物体进行实时跟踪及分析的需求可谓比比皆是, 但单纯的目标检测算法只能输出目标的定位+分类,无法对移动的目标具体的运动行为及特征进行分析,因此在具体的车辆行为分析、交通违章判别、嫌疑犯追踪、飞行器监管等场景,目标追踪发挥着不可替代的作用。

8f7c6ebed345a49884ba5b759dd79d35.gif

视频引用公开数据集[1][2][3][4]

但实际目标追踪的项目落地,往往面临被检目标多、相互遮挡、图像扭曲变形、背景杂乱、视角差异大、目标小且运动速度快等产业实际技术难题。

那如何快速实现高性能的目标跟踪任务呢?一个相对完善的目标跟踪任务实现, 往往需要融合目标检测、行人重识别、轨迹融合等多项技术能力,并对上述产业实际的技术难点,分别进行长时间深度优化,同时考虑跨镜头、多类别、小目标跟踪以及轻量化部署等实际业务诉求。

3d7174271182843f62f20ea897d10c93.gif

难么?别急,近日在GitHub社区发布的一个开源目标跟踪系统—PP-Tracking就能使开发者快速用Python完成一个高性能的目标跟踪任务,并实现服务器侧轻量化上线。

它的具体结构图如下:

789ab04113750f7fd7524b789ff8baca.png

关于详细的结构详解,可以前往具体项目链接查看:

https://github.com/PaddlePaddle/paddledetection

当然,如果你觉得项目确实实用,支持开源最好的方式就是点亮Star星标支持一下

c07f646954b7cca5c18001213539aeb8.png

本文作者也确实详细研究了一下这个项目,总结了它的一些特点,有耐心的老铁可以接着往下看:

1

功能丰富效果佳

PP-Tracking内置DeepSORT[6]、JDE[7]与FairMOT[8]三种主流高精度多目标跟踪模型,并针对产业痛点、结合实际落地场景进行一系列拓展和优化,覆盖多类别跟踪、跨镜跟踪、流量统计等功能与应用,可谓是精度、性能、功能丰富样样俱全~

  • 单镜头跟踪

单镜头下的单类别目标跟踪是指在单个镜头下,对于同一种类别的多个目标进行连续跟踪,是跟踪任务的基础。针对该任务,PP-Tracking基于端到端的One Shot高精模型FairMOT[8],替换为更轻量的骨干网络HRNetV2-W18,采用多种Tricks,如Sync_BN与EMA,保持性能的同时大幅提高了精度,并且扩大训练数据集,减小输入尺寸,最终实现服务端轻量化模型在权威数据集MOT17上精度达到MOTA 65.3,在NVIDIA Jetson NX上速度达到23.3FPS,GPU上速度可达到60FPS!同时,针对对精度要求较高的场景,PP-Tracking还提供了精度高达MOTA75.3的高精版跟踪模型~

61afd9653ef8f902f08fafb5f6c6c2c8.gif

视频引用公开数据集[3]

  • 多类别跟踪

PP-Tracking不仅高性能地实现了单镜头下的单类别目标跟踪,更针对多种不同类别的目标跟踪场景,增强了特征匹配模块以适配不同类别的跟踪任务,实现跟踪类别覆盖人、自行车、小轿车、卡车、公交、三轮车等上十种目标,精准实现多种不同种类物体的同时跟踪。

7cf19706ada4f517cacd1b76952eafad.gif

视频引用公开数据集[2]

  • 跨镜头跟踪

安防场景常常会涉及在多个镜头下对于目标物体的持续跟踪。当目标从一个镜头切换到另一个镜头,往往会出现目标跟丢的情况,这时,一个效果好速度快的跨镜头跟踪算法就必不可少了!PP-Tracking中提供的跨镜头跟踪能力基于DeepSORT[6]算法,采用了百度自研的轻量级模型PP-PicoDet和PP-LCNet分别作为检测模型和ReID模型,配合轨迹融合算法,保持高性能的同时也兼顾了高准确度,实现在多个镜头下紧跟目标,无论镜头如何切换、场景如何变换,也能准确跟踪目标的效果。

db940d84b820036fa66346c3fce7a88f.gif

视频引用公开数据集[2]

  • 流量监测

与此同时,针对智慧城市中的高频场景—人/车流量监测,PP-Tracking也提供了完整的解决方案,应用服务器端轻量级版FairMOT[8]模型预测得到目标轨迹与ID信息,实现动态人流/车流的实时去重计数,并支持自定义流量统计时间间隔。

为了满足不同业务场景下的需求,如商场进出口人流监测、高速路口车流量监测等,PP-Tracking更是提供了出入口两侧流量统计方式~

2fff819c09720b38c69ce06006375b59.gif

视频引用公开数据集[2]

2

复杂场景覆盖全

  • 行人、车辆跟踪

智慧交通中,行人和车辆的场景尤为广泛,因此PP-Tracking针对行人和车辆,提供对应的预训练模型,大幅降低开发成本,节省训练时间和数据成本,实现业务场景直接推理,算法即应用的效果!不仅如此,PP-Tracking支持显示目标轨迹,更直观地辅助实现高效的路径规划分析。

b99e05e0029269073e9871221302e839.gif

097409d8efe891b16da1782eff7d5969.gif

视频引用公开数据集[2]

  • 人头跟踪

不仅如此,除了在日常跟踪任务中拥有极强的通用性,针对实际业务中常常出现目标遮挡严重等问题,PP-Tracking也进行了一系列优化,提供了基于FairMOT[8]训练的人头跟踪模型,并在Head Tracking 2021数据集榜单位居榜首,助力PP-Tracking灵活适配各类行人场景。

8eddcfd5547c3ee8551dc3bcb3ac8b69.gif

视频引用公开数据集[5]

  • 小目标跟踪

针对小目标出现在大尺幅图像中的产业常见难题场景,PP-Tracking进行了一系列的优化,提供专门针对小目标跟踪的预训练模型,实现在特殊场景,如无人机等航拍场景下,也能达到较为精准的效果~

cb352fad1b0f3b00507ed3e965b5ba41.gif

视频引用公开数据集[2]

3

两种使用模式,训练推理灵活掌握

为了满足不同的开发需求,PP-Tracking支持两种使用方式,无论是想通过代码调用/训练模型,进行快速推理部署,还是想要零代码直接上手使用功能,PP-Tracking通通满足你!

  • API代码调用:API简洁易用,支持模型调用、训练与推理部署,最大程度降低开发成本的前提下,灵活适配各类场景与任务。

5903261ee17e94bf68de6cc47da9ebb8.png

  • 可视化开发界面:支持单镜头下的单、多目标跟踪,并覆盖小目标、人/车流量统计等复杂场景及应用,无需任何开发,即可直接体验功能,便于集成于各类硬件。

f6ac0fba118772199f8ec21b9d4e7062.gif

更贴心的是,PP-Tracking支持Python、C++两种部署语言,同时提供使用飞桨原生推理库Paddle Inference和飞桨服务化推理框架Paddle Serving的保姆级部署教程,真正意义上打通从训练、推理到部署的全流程。

4

产业场景快速融合

这么厉害的实时跟踪系统在实际落地中的表现如何呢?接下来,让我们看看PP-Tracking的实际业务落地效果吧~

以人流量计数为例,在上海音智达公司的实际业务中,使用PP-Tracking中的服务端轻量化版FairMOT[8],结合人流量计数功能,快速实现商圈出入口的实时人流量去重计数。

d5df6f2d8d9a0dce911d13058af221f9.gif

视频引用公开数据集[3]

被应用于自动驾驶、安防、交通、城市等多种领域的目标跟踪你学会了么?想要深入了解案例细节?掌握跟踪的应用?快报名直播课程吧!

深入直播讲解

为了让开发者们更深入的了解PP-Tracking这套多功能的跟踪系统,解决产业应用难点以及掌握产业实践的核心能力,飞桨团队精心准备了为期四天的直播课程!

11月23日-26日19:00-20:00,百度资深高工将深入解读通用目标检测的基础理论与实践、超轻人体关键点模型的理论及应用,并全方位解析实时跟踪系统,对各类痛难点解决方案进行手把手拆解,更有直播现场为大家答疑解惑,还在等什么!抓紧扫码上车吧!

扫码报名直播课,加入技术交流群

8c056545e7b463f4f617dcebc22f4182.png

精彩内容抢先看

c887a82d88bf8fd03a9a2753910aadfc.png

图片数据引用说明

[1] Yu F, Chen H, Wang X, et al. Bdd100k: A diverse driving dataset for heterogeneous multitask learning[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 2636-2645.

[2] Zhu P, Wen L, Du D, et al. Vision meets drones: Past, present and future[J]. arXiv preprint arXiv:2001.06303, 2020.

[3] Milan A, Leal-Taixé L, Reid I, et al. MOT16: A benchmark for multi-object tracking[J]. arXiv preprint arXiv:1603.00831, 2016.

[4] Bai H, Cheng W, Chu P, et al. GMOT-40: A Benchmark for Generic Multiple Object Tracking[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 6719-6728.

[5] Sundararaman R, De Almeida Braga C, Marchand E, et al. Tracking Pedestrian Heads in Dense Crowd[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 3865-3875.

模型引用说明

[6] DeepSORT: Veeramani B, Raymond J W, Chanda P. DeepSort: deep convolutional networks for sorting haploid maize seeds[J]. BMC bioinformatics, 2018, 19(9): 1-9.

[7] JDE: Wang Z, Zheng L, Liu Y, et al. Towards real-time multi-object tracking[C]//Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part XI 16. Springer International Publishing, 2020: 107-122.

[8] FairMOT: Zhang Y, Wang C, Wang X, et al. Fairmot: On the fairness of detection and re-identification in multiple object tracking[J]. International Journal of Computer Vision, 2021: 1-19.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

卧槽!出了一个Python实时目标跟踪系统神器! 的相关文章

  • realsense ——SR300 相机使用小记

    环境搭建相关的参考资料挺多的 xff0c 这里就不多说了 这里记一些相关的api 算了 xff0c 还是给出自己的配置记录吧https blog csdn net hehehetanchaow article details 1057958
  • kubeadm安装部署Kubernetes(k8s)与部署 Dashboard web_UI(附Kubernetes安装脚本)

    前言 Kubernetes作为容器编排工具 xff0c 简化容器管理 xff0c 提升工作效率而颇受青睐 很多新手部署Kubernetes由于 科学上网 问题举步维艰 xff0c 本文以实战经验详解kubeadm不用 科学上网 部署Kube
  • 开源飞控资料

    四轴开源资料 http merafour blog 163 com blog m 61 0 amp t 61 1 amp c 61 fks 08406908208008307008408308409508608708806608408408
  • 深度学习视频数据集(动作识别):UCF-101

    UCF 101 官网 xff1a https www crcv ucf edu research data sets ucf101 网盘 xff1a 链接 xff1a https pan baidu com s 1RsJuykWyUlQ4
  • 视频分析模型(行为识别):C3D

    C3D 文章目录 C3D1 简介1 1 背景1 2 C3D特点1 3 视频描述符1 4 C3D的结果 2 架构2 1 工作流程2 2 网络结构2 3 3D卷积和池化2 4 kernel 的时间深度 3 可视化3 1 特征图3 2 特征嵌入
  • OpenCV下车牌定位算法实现代码 (二)

    前面介绍了用OpenCV的squares实例定位车牌的算法 xff0c 效果不是很理想 车牌定位的方法有很多种 xff0c 这里我们从汽车图像的纹理特征入手 xff0c 找出车牌不同于背景的特征是车牌定位的关键 观察多幅汽车图片我们会发现车
  • 旷视张祥雨:神经网络架构设计新思路

    点击上方 CVer xff0c 选择加 34 星标 34 置顶 重磅干货 xff0c 第一时间送达 本文转载自 xff1a AI科技评论 作者 蒋宝尚 编辑 青暮 深度学习模型在很多任务上都取得了不错的效果 xff0c 但调参却是一项非常痛
  • 发现三本不错的讲解数据存储的书

    研究数据存储 xff0c 没有很多现成的东西 xff0c 但是可以参考数据库系统的存储实现的内容 xff0c 发现三本书 xff0c 觉得值得一读 数据库系统全书 http www china pub com computers commo
  • Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, 4

    处理Failed to get convolution algorithm This is probably because cuDNN failed to initialize so try looking to see if a war
  • 字符型设备驱动程序--gpio 驱动实例

    概述 xff1a 字符设备驱动程序 xff1a 是按照字符设备要求完成的由操作系统调用的代码 重点理解以下内容 1 驱动是写给操作系统的代码 xff0c 它不是直接给用户层程序调用的 xff0c 而是给系统调用的 2 所以驱动要向系统注册
  • 协议栈

    协议栈 协议栈是指网络中各层协议的总和 xff0c 其形象的反映了一个网络中数据传输的过程 xff1a 由上层协议到底层协议 xff0c 再由底层协议到上层协议 使用最广泛的是英特网协议栈 xff0c 由上到下的协议分别是 xff1a 应用
  • 再见2011,你好,2012。

    不会写文章 xff0c 这个算是对自己的一个总结吧 xff0c 毕业一年半了 xff0c 从事嵌入式也有一年半了 xff0c 总觉得自己连入门都谈不上 xff0c 整天都看上去很忙 xff0c 有时候确实有一大堆的事情要做 xff0c 但是
  • matlab读取realsense bag文件数据

    代码参考 xff1a https dev intelrealsense com docs matlab wrapper 本示例的功能 xff1a matlab代码 xff1a 给出bag文件路径 xff0c 显示realsense相机型号
  • vncserver:command not found

    Question Solution 1 使用root用户登录 xff0c 运行 yum install tigervnc server 2 使用其他用户 eg opuser 登录 xff0c 启动vncserver xff0c 设置pass
  • CKF MCSCKF UKF EKF滤波性能对比

    CKF MCSCKF UKF EKF滤波性能对比 在非线性滤波中 比较了CKF MCSCKF UKF EKF 几种非线性滤波的性能 用MATLAB进行仿真 八维非线性滤波中 CKF MCSCKF 比较稳定 EKF UKF 表现不好 MATL
  • 自制串口调试助手

    span class token keyword using span span class token namespace System span span class token punctuation span span class
  • 文件描述符和套接字

    文件描述符 xff1a 文件描述符在形式上是一个非负整数 实际上 xff0c 它是一个索引值 xff0c 指向内核为每一个进程所维护的该进程打开文件的记录表 当程序打开一个现有文件或者创建一个新文件时 xff0c 内核向进程返回一个文件描述
  • Papers with Code 2020 全年回顾(顶流论文+顶流代码+Benchmarks)

    点击上方 CVer xff0c 选择加 34 星标 34 置顶 重磅干货 xff0c 第一时间送达 本文转载自 xff1a AI公园 作者 xff1a Ross Taylor 编译 xff1a ronghuaiyang 导读 2020年Pa
  • Nginx 多进程模型是如何实现高并发的?

    进程数与并发数不存在很直接的关系 这取决取server采用的工作方式 如果一个server采用一个进程负责一个request的方式 xff0c 那么进程数就是并发数 那么显而易见的 xff0c 就是会有很多进程在等待中 等什么 xff1f
  • 剑指offer 矩阵中的路径

    题目描述 请设计一个函数 xff0c 用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径 路径可以从矩阵中的任意一个格子开始 xff0c 每一步可以在矩阵中向左 xff0c 向右 xff0c 向上 xff0c 向下移动一个格子 如果

随机推荐

  • QGC二次开发---自定义MAVLink消息

    MAVLink库下载 下载网站https github com mavlink mavlink 可以通过git工具 xff0c 在存放文件夹下打开git工具 xff0c 输入命令 xff1a git clone https github c
  • 视差图(Disparity)三维重投影得到特征点的三维空间坐标的2种方法

    文章目录 前提方法1 perspectiveTransform 方法2 reprojectimageto3d PS参考 前提 1 使用BM或者SGBM算法计算得到了双目图像的合适左右视差图 xff1b 2 使用立体校正函数stereoRec
  • ubuntu查看内存使用情况

    ubuntu下单独查看内存使用情况 free m free默认输出的单位是kb xff0c m表示以M为单位 查看CPU内存使用情况 top 查看GPU内存使用情况 nvidia smi
  • QT 如何调节Windows系统音量大小

    在平时日常工作中 xff0c 我们切换输入法的方式一般会通过键盘组合按键来进行切换的 xff0c 那么作为程序员 xff0c 当然可以通过发送键盘消息事件来实现输入法的切换 同样的道理 xff0c 我们也可以通过发送键盘事件实现麦克风音量或
  • QT 九宫格绘图(QSS方式)

    什么是九宫格方式绘图 xff1f 顾名思义 xff0c 就是把一个方块分割成 9 个部分 xff0c 如图所示 xff1a 九宫格绘图的原理就是把背景图分割成 9 个部分 xff0c 绘制时 xff1a 四个角 xff08 1 3 7 9
  • QT QTimeLine 用法小结

    QTimeLine简述 它最常用于通过周期性调用槽来动画化GUI控件 您可以通过将时间线的持续时间 xff08 以毫秒为单位 xff09 传递给QTimeLine的构造函数来构造时间线 时间线的持续时间描述动画将运行多长时间 然后通过调用s
  • QT 秒/毫秒 转 时分秒

    在日常开发时 xff0c 经常会遇到计算剩余进度或者剩余时间的问题 xff0c 比如计算剩余下载时间等等 本篇文章旨在提供几个常用的转换方式供各位参考 1 秒转时分秒 xff08 方法壹 xff09 QString span class t
  • QT 如何实现 半透明的 圆角 矩形 窗口

    在日常使用的软件里面 xff0c 有些软件提示用户时 xff0c 经常会发现有些提示窗口是半透明的 那么如何实现一个可拖动的 半透明 圆角矩形窗口呢 xff1f 整体思路 xff1a 将窗口本身设置为透明 xff0c 然后通过qss或者绘图
  • 小哥质疑谷歌顶会CV论文有错!并且拿出了复现代码来证明

    点击上方 CVer xff0c 选择加 34 星标 34 置顶 重磅干货 xff0c 第一时间送达 萧箫 发自 凹非寺 来源 xff1a 量子位 xff08 QbitAI xff09 景色很好看 xff0c 可是手机相机分辨率太低 xff0
  • QT 如何只允许打开一个 chm 文档

    chm文档 xff0c 大家都不会陌生 xff0c 很多软件的帮助文档就是chm格式的 我们自己在开发程序的时候 xff0c 也需要对外提供帮助文档 xff0c 为了方便用户 xff0c 经常在软件中就可以打开帮助文档 xff0c 那么如何
  • QT 如何把外部程序嵌入到QT界面

    一个奇怪但又合乎现实需要的需求 xff0c 就是把外部程序嵌入到本窗口内 xff0c 实现外部程序在本窗口的显示 可能外部程序是由其他人开发的 xff0c 但是想 拿来 作为内部使用 xff0c 于是乎想把外部程序嵌入到本程序窗口内 xff
  • QT 如何去除QListView选中item后的虚线框

    在使用QListView或者QListWidget时 xff0c 如果选中其item xff0c 会发现边框会出现虚线框 xff0c 这并不美观 xff01 所以 xff0c 我们需要去掉选中后的虚线框 在查阅各路大神的实现方式后 xff0
  • QT QCompleter 用法小结

    1 有何用处 QCompleter类提供基于项模型的补全功能 您可以使用QCompleter在任何Qt小部件 xff08 如QLineEdit和QComboBox xff09 中提供自动补全 当用户开始键入单词时 xff0c QComple
  • QT 关于全屏 与 退出全屏

    在某些场景 xff08 比如说 xff1a 车机系统 医疗仪器等 xff09 可能需要确保软件的全屏显示 xff0c 本次探讨的是如何实现全屏与退出全屏 实现全屏的几种方式 span class token operator lt span
  • QT 如何设置 QCompleter 样式

    在使用QCompleter xff0c 一般都会面临两个问题 xff1a 1 如何设置Completer的行高 xff1b 2 如何设置Completer的样式 本文将一次为你解答 xff0c 顺便讲讲ComboBox设置Completer
  • QT 如何知道用户点击 QTextBrowser 中的具体链接地址

    在通过鼠标点击 QTextBrowser 中的链接地址时 xff0c 如果是希望使用外部浏览器打开链接地址 xff0c 只需要添加一行代码 ui gt textBrowser gt setOpenExternalLinks true 但如果
  • QT 常用控件类型命名参考

    规范的定义 规范 xff0c 有名词 动词 代词等词性 意指符合逻辑 xff0c 客观 真实 全面 完整 准确 及时 xff0c 达标 明文规定或约定俗成的标准 如 xff1a 道德规范 技术规范等 或是指按照既定标准 规范的要求进行操作
  • C++ 如何让代码在main()函数之前或者之后执行

    程序最早执行的函数其实并不是main xff0c 在main函数之前会有一系列初始化的操作 xff08 通常是由链接器等完成的 xff09 比如在windows中 xff0c 这个函数是mainCRTStartup xff0c 这个函数是链
  • QT 如何提高 Qt Creator 的编译速度

    如何提高编译速度 xff0c 貌似是一个老生常谈的话题 对于Qter而言 xff0c 如何提高QT Creator 的编辑速度是一直都是大家所期盼的 本文也是查阅了各路大神的方法后整理出来的 xff0c 希望对各位有所帮助 1 在 pro文
  • 卧槽!出了一个Python实时目标跟踪系统神器!

    在当下自动驾驶 智慧城市 安防等领域对车辆 行人 飞行器等快速移动的物体进行实时跟踪及分析的需求可谓比比皆是 xff0c 但单纯的目标检测算法只能输出目标的定位 43 分类 xff0c 无法对移动的目标具体的运动行为及特征进行分析 xff0