ByteTrack:通过关联每个检测框实现多目标跟踪
多目标跟踪 (MOT) 旨在估计视频中对象的边界框和身份。大多数方法通过关联得分高于阈值的检测框来获取身份。检测分数低的物体,例如被遮挡的物体,被简单地扔掉,这带来了不可忽略的真实物体缺失和碎片化的轨迹。为了解决这个问题,我们提出了一种简单、有效且通用的关联方法,通过关联几乎每个检测框而不仅仅是高分检测框来进行跟踪。对于低分检测框,我们利用它们与 tracklet 的相似性来恢复真实对象并过滤掉背景检测。当应用于 9 种不同的最先进的跟踪器时,我们的方法在 1 到 10 分的 IDF1 分数上实现了一致的改进。为了展示 MOT 最先进的性能,我们设计了一个简单而强大的跟踪器,名为 ByteTrack。我们首次在 MOT17 的测试集上实现了 80.3 MOTA、77.3 IDF1 和 63.1 HOTA,在单个 V100 GPU 上以 30 FPS 的运行速度。ByteTrack 还在 MOT20、HiEve 和 BDD100K 跟踪基准测试中实现了最先进的性能。源代码、带有 deploy 版本的预训练模型以及应用于其他跟踪器的教程将在 https://github.com/ifzhang/ByteTrack 上发布。
目录
- 介绍
- 安装
- 模型动物园
- 数据集准备
- 引文
介绍
目前主流的“Tracking By Detecting”多目标跟踪 (MOT) 算法主要由检测和嵌入两部分组成。检测旨在检测视频每一帧中的潜在目标。Embedding 将检测到的目标分配并更新到相应的轨道(名为 ReID 任务)。根据这两部分实现的不同,可以分为 SDE 系列和 JDE 系列算法。
- SDE(Separate Detection and Embedding,分离检测和嵌入)是一种将检测和嵌入完全分离的算法。最具代表性的是 DeepSORT 算法。这种设计可以使系统毫无差异地适合任何类型的探测器,并且可以针对每个部分单独进行改进。但是,由于系列过程,速度很慢。耗时长是构建实时 MOT 系统的巨大挑战。
- JDE(Joint Detection and Embedding)是在共享神经网络中同时学习检测和嵌入,并以多任务学习方式设置损失函数。代表性算法是 JDE 和 FairMOT。这种设计可以实现高精度的实时 MOT 性能。
Paddledetection 实现了这两个系列的三种 MOT 算法,它们是 SDE 算法的 DeepSORT,以及 JDE 算法的 JDE,FairMOT。
PP-Tracking 实时 MOT 系统
此外,PaddleDetection 还提供 PP-Tracking 实时多目标跟踪系统。 PP-Tracking 是第一个开源的实时多目标跟踪系统,它基于 PaddlePaddle 深度学习框架。模型丰富,应用广泛,部署效率高。
PP 跟踪支持两种模式:单相机跟踪 (MOT) 和多相机跟踪 (MTMCT)。针对实际业务中的难点和痛点,PP-Tracking 提供了行人跟踪、车辆跟踪、多类跟踪、小物体跟踪、交通统计和多摄像头跟踪等各种 MOT 功能和应用。部署方式支持 API 和 GUI 可视化界面,部署语言支持 Python 和 C++,部署平台环境支持 Linux、NVIDIA Jetson 等。
AI studio 公共项目教程
PP-tracking 提供了 AI Studio 公共项目教程。请参阅此教程。
Python 预测和部署
PP-Tracking 支持 Python 预测和部署。请参阅此文档。
C++ 预测和部署
PP-Tracking 支持 C++ 预测和部署。请参阅此文档。
GUI 预测和部署
PP-Tracking 支持 GUI 预测和部署。请参阅此文档。

视频来源:VisDrone,BDD100K 数据集
安装
安装 MOT 的所有相关依赖项:
<span style="background-color:#e6eaef"><span style="color:#010409"><span style="color:#010409"><span style="background-color:#e6eaef"><code>pip install lap sklearn motmetrics openpyxl cython_bbox
or
pip install -r requirements.txt
</code></span></span></span></span>
笔记:
- 适用于 Windows 的安装: .您可以参考此教程。
cython_bbox
pip install -e git+https://github.com/samson-wang/cython_bbox.git#egg=cython-bbox
- 请确保先安装 ffmpeg,在 Linux(Ubuntu) 平台上,您可以通过以下命令直接安装它:。
apt-get update && apt-get install -y ffmpeg
模型动物园
- 基本模型
- 深度排序
- JDE
- 公平 MOT
- 特征模型
- 行人
- 头
- 车辆
- 多类跟踪
- MCFairMOT
- 多目标多相机跟踪
- MTMCT
数据集准备
MOT 数据集
PaddleDetection 实现了 JDE 和 FairMOT,并使用与它们相同的名为 'MIX' 的训练数据,包括 Caltech Pedestrian、CityPersons、CUHK-SYSU、PRW、ETHZ、MOT17 和 MOT16。前六个作为混合数据集进行训练,MOT16 作为评价数据集。如果您想使用这些数据集,请遵循他们的许可证。
笔记:
- 多目标跟踪 (MOT) 数据集始终用于单类别跟踪。DeepSORT、JDE 和 FairMOT 是单类别 MOT 模型。'MIX' 数据集及其子数据集也是单类行人跟踪数据集。可以认为检测数据集还有其他 ID 地面实况。
- 为了训练更多场景的特征模型,更多的数据集也被加工成与 MIX 数据集相同的格式。PaddleDetection Team 还提供车辆跟踪、头部跟踪和更一般的行人跟踪的特征数据集和模型。用户定义的数据集也可以参考 数据准备文档 来准备。
- 多类别 MOT 模型为 [MCFairMOT] (mcfairmot/readme_cn.md),多类别数据集是 VisDrone 数据集的集成版本。请参考 MCFairMIT 的文档。
- 多目标多相机跟踪 (MTMCT) 模型是 AIC21 MTMCT (CityFlow) 多相机车辆跟踪数据集。数据集和模型可以参考 MTMCT 的文档
数据集目录
首先,使用以下命令下载 image_lists.zip,并将其解压缩到 :PaddleDetection/dataset/mot
<span style="background-color:#e6eaef"><span style="color:#010409"><span style="color:#010409"><span style="background-color:#e6eaef"><code>wget https://dataset.bj.bcebos.com/mot/image_lists.zip
</code></span></span></span></span>
然后,使用以下命令下载 MIX 数据集,并将其解压缩到 :PaddleDetection/dataset/mot
<span style="background-color:#e6eaef"><span style="color:#010409"><span style="color:#010409"><span style="background-color:#e6eaef"><code>wget https://dataset.bj.bcebos.com/mot/MOT17.zip
wget https://dataset.bj.bcebos.com/mot/Caltech.zip
wget https://dataset.bj.bcebos.com/mot/CUHKSYSU.zip
wget https://dataset.bj.bcebos.com/mot/PRW.zip
wget https://dataset.bj.bcebos.com/mot/Cityscapes.zip
wget https://dataset.bj.bcebos.com/mot/ETHZ.zip
wget https://dataset.bj.bcebos.com/mot/MOT16.zip
</code></span></span></span></span>
最终目录为:
<span style="background-color:#e6eaef"><span style="color:#010409"><span style="color:#010409"><span style="background-color:#e6eaef"><code>dataset/mot|——————image_lists|——————caltech.10k.val |——————caltech.all |——————caltech.train |——————caltech.val |——————citypersons.train |——————citypersons.val |——————cuhksysu.train |——————cuhksysu.val |——————eth.train |——————mot16.train |——————mot17.train |——————prw.train |——————prw.val|——————Caltech|——————Cityscapes|——————CUHKSYSU|——————ETHZ|——————MOT16|——————MOT17|——————PRW
</code></span></span></span></span>
数据格式
这几个相关数据集具有以下结构:
<span style="background-color:#e6eaef"><span style="color:#010409"><span style="color:#010409"><span style="background-color:#e6eaef"><code>MOT17|——————images| └——————train| └——————test└——————labels_with_ids└——————train
</code></span></span></span></span>
这些数据集的注释以统一格式提供。每个图像都有相应的注释文本。给定图像路径,可以通过将字符串替换为 来生成注释文本路径。images
labels_with_ids
.jpg
.txt
在注释文本中,每行描述一个边界框,其格式如下:
<span style="background-color:#e6eaef"><span style="color:#010409"><span style="color:#010409"><span style="background-color:#e6eaef"><code>[class] [identity] [x_center] [y_center] [width] [height]
</code></span></span></span></span>
笔记:
class
是类的 ID,支持单类和多类,从 开始,对于单类为 。0
0
identity
是 from to 的整数( 是所有视频或图像 squences 的数据集中对象的实例总数),或者如果此框没有标识注释。1
num_identities
num_identities
-1
[x_center] [y_center] [width] [height]
是中心坐标,宽度和高度,注意它们是按照图片的宽度/高度进行归一化的,所以都是 0 到 1 之间的浮点数。
介绍
PaddleDetection 是基于 PaddlePaddle 的端到端目标检测开发套件,以模块化设计实现多种主流目标检测、实例分割、跟踪和关键点检测算法,具有网络组件、数据增强和丢失等可配置模块,发布多种 SOTA 行业实践模型,集成模型压缩和跨平台高性能部署的能力,旨在为开发者提供全方位的帮助以更快、更好的方式进行端到端开发。
PaddleDetection 提供目标检测、实例分割、多目标跟踪、关键点检测等图像处理能力。

特征
-
丰富的模型PaddleDetection 提供了丰富的模型,包括 100+ 预训练模型,如目标检测、实例分割、人脸检测等。它涵盖了各种全球竞赛冠军计划。
-
高度灵活:组件设计为模块化。模型架构以及数据预处理管道和优化策略可以通过简单的配置更改轻松定制。
-
生产就绪:从数据增强、构建模型、训练、压缩、分布式、端到端,到对云和边缘设备的多架构、多设备部署的全面支持。
-
高性能:基于 PaddlePaddle 的高性能核心,训练速度和内存占用优势明显。还支持 FP16 训练和多机训练。
套件结构概述
架构 | 骨干 | 组件 | 数据增强 |
|
|
|
|
模型性能概述
各服务器端架构和骨干网的代表性模型在 Tesla V100 上 COCO mAP 和 FPS 的关系。
注意:
-
CBResNet stands
for ,它在 COCO 上的 mAP 最高,为 53.3%Cascade-Faster-RCNN-CBResNet200vd-FPN
-
Cascade-Faster-RCNN
代表 ,当 COCO mAP 在 PaddleDetection 模型中为 47.8% 时,它已优化为 20 FPS 推理速度Cascade-Faster-RCNN-ResNet50vd-DCN
-
PP-YOLO
在 COCO 上实现 45.9% 的 mAP,在 Tesla V100 上实现 72.9FPS。精度和速度均超过 YOLOv4 -
PP-YOLO v2
是其优化版本,在特斯拉 V49.5 上具有 68.9% 的 mAP 和 100FPSPP-YOLO
-
所有这些模型都可以在 Model Zoo 中获得
COCO mAP 与 Qualcomm Snapdragon 865 上 FPS 的关系
注意:
- 所有数据均在 Qualcomm Snapdragon 865(4*A77 + 4*A55) 处理器上测试,批处理大小为 1,CPU 线程数为 4,并在测试中使用 NCNN 库,基准测试脚本在 MobileDetBenchmark 上公布
- PP-PicoDet 和 PP-YOLO-Tiny 由 PaddleDetection 开发发布,其他型号未在 PaddleDetection 中提供。
教程
开始使用
- 安装指南
- 准备数据集
- PaddleDetection 快速入门
高级教程
-
参数配置
- RCNN 模型的参数配置
- PP-YOLO 模型的参数配置
-
模型压缩(基于 PaddleSlim)
- 修剪/定量/蒸馏
-
推理和部署
- 导出模型进行推理
- Paddle 推理
- Python 推理
- C++ 推理
- Paddle-Lite 桨
- 桨服务
- 导出 ONNX 模型
- 推理基准测试
-
高级开发
- 新的数据增强
- 新的检测算法
模型动物园
- 通用对象检测
- 模型库和基线
- PP-YOLO 系列
- PP-PicoDet 系列
- 增强的无锚模型 -- TTFNet
- 移动模型
- 676 类对象检测
- 两阶段实践 PSS-Det
- SSLD 预训练模型
- 通用实例分段
- 独奏 v2
- 旋转对象检测
- S2ANet
- 关键点检测
- PP-TinyPose (PP 小姿势)
- HigherHRNet
- HRNet
- LiteHRNet
- 多目标跟踪
- PP 跟踪
- 深度排序
- JDE
- 公平 MOT
- 垂直领域
- 人脸检测
- 行人检测
- 车辆检测
- 比赛计划
- Objects365 2019 年挑战赛冠军模型
- 2019 年 Open Images 最佳单一模型 - 对象检测
应用
- 圣诞肖像自动生成工具
- Android Fitness 演示
多目标跟踪 (MOT) 旨在估计视频中对象的边界框和身份。大多数方法通过关联得分高于阈值的检测框来获取身份。检测分数低的物体,例如被遮挡的物体,被简单地扔掉,这带来了不可忽略的真实物体缺失和碎片化的轨迹。为了解决这个问题,我们提出了一种简单、有效且通用的关联方法,通过关联几乎每个检测框而不仅仅是高分检测框来进行跟踪。对于低分检测框,我们利用它们与 tracklet 的相似性来恢复真实对象并过滤掉背景检测。当应用于 9 种不同的最先进的跟踪器时,我们的方法在 1 到 10 分的 IDF1 分数上实现了一致的改进。为了展示 MOT 最先进的性能,我们设计了一个简单而强大的跟踪器,名为 ByteTrack。我们首次在 MOT17 的测试集上实现了 80.3 MOTA、77.3 IDF1 和 63.1 HOTA,在单个 V100 GPU 上以 30 FPS 的运行速度。ByteTrack 还在 MOT20、HiEve 和 BDD100K 跟踪基准测试中实现了最先进的性能。源代码、带有 deploy 版本的预训练模型以及应用于其他跟踪器的教程将在 https://github.com/ifzhang/ByteTrack 上发布。
下载链接:
https://docs.voxel51.com/user_guide/dataset_zoo/datasets.html#bdd100k
https://github.com/takaniwa/DSNet/blob/main/datasets/bdd10k.py