Intro
本文是笔者对DeepSORT算法学习的阶段性总结,基于笔者接触到的所有开源学习资料,辅以个人理解进行重新编排而成,力求清晰,使非专业的读者也能迅速对该算法原理有较为透彻的理解,便于后续代码学习。
笔者本人为非cs相关专业,论述不当之处欢迎指出。文中引用的博客均已在第0章中列出,在此致谢。如涉侵权敬请作者联系笔者删除。
0、参考博客
0.1 整体算法
博客1,MOT综述、算法流程,强烈推荐:https://zhuanlan.zhihu.com/p/97449724
博客2,带使用的函数的算法流程:https://zhuanlan.zhihu.com/p/80764724
博客3,源码讲解:https://zhuanlan.zhihu.com/p/90835266
博客4,流程图:人脸跟踪:deepsort代码解读_BigCowPeking-CSDN博客_deepsort源码
0.2 卡尔曼滤波
博客1:推荐您从一个小故事开始:如何通俗并尽可能详细地解释卡尔曼滤波? - 知乎
博客2:几个视频值得一看:如何通俗并尽可能详细地解释卡尔曼滤波? - 知乎
博客3:某位活菩萨翻译的外网博文:如何通俗并尽可能详细地解释卡尔曼滤波? - 知乎
1、多目标跟踪(MOT)综述
1.1 目标跟踪的任务分类
目标跟踪(Object Tracking)是计算机视觉领域的重要问题。按任务类型划分有如下几类。对于做交叉学科研究接触到这一领域的外行而言,最重要的是先搞明白自己的课题需求归属哪种任务场景。笔者的课题任务为MOT任务。
单目标跟踪(VOT/SOT):给定一个目标,追踪这个目标的位置。
多目标跟踪(Multiple Object Tracking,MOT):追踪多个目标的位置。
行人重识别(Person Re-ID):行人重识别是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个图像检索的子问题,即给定一个监控行人图像,检索跨设备下的该行人图像。旨在弥补固定的摄像头的视觉局限,并可与行人检测/行人跟踪技术相结合。
MTMCT:多目标多摄像头跟踪(Multi-target Multi-camera Tracking),跟踪多个摄像头拍摄的多个人。
姿态跟踪:追踪人的姿态。
以下是MOT任务与其他相关任务的区分:
1.2 MOT任务的解决方案及实现
MOT任务常见的解决方案主要有两种,即MFT 和 TBD。简介如下:
MFT:需要手动在初始帧中选择感兴趣区域,然后算法在第二帧开始的其余帧追踪这个目标。
TBD:基于检测的目标跟踪,是目标检测的后续任务。由于目标跟踪近几年的发展,成为常用方法。我们的DeepSORT也属于这类方法。
一般Tracking by Detection的实现主要分为如下步骤:
Object Localization:即Detection。在DeepSORT语境下,这一步相当于卡尔曼滤波的传感器。
Preprocessing:前处理,有NMS和置信度阈值两种(即抛弃confidence小于阈值的detection)
Feature Extraction:特征提取。在DeepSORT语境下,这部分是Re-ID模型对外观特征的提取。
Data Association:这一步是数据关联。在DeepSORT语境下,即对当前第k帧的detection和卡尔曼滤波中predict阶段根据前一帧k-1帧生成的track prediction匹配,在DeepSORT中是级联匹配和IOU匹配。
Track Management:包括卡尔曼滤波中的 track update,和对track的初始化、删除
Postprocessing: 后处理。
1、SORT 与DeepSORT
这一步建议读者先找到这两个算法的论文看,对这两个算法有个大概了解。一个