目标追踪概述、分类

目标追踪(Object Tracking)是获取图像序列(一般为视频)中感兴趣的区域,并在接下来的视频帧中对其进行跟踪。

目标跟踪是计算机视觉领域的一个重要分支,在赛事转播、人机交互、监控安防和无人驾驶等应用中起着关键的作用。

1 目标追踪概述

目标追踪的输入通常是视频。视频是一种非结构化的数据,可以看作图像序列的组合(一组有序的图像)​。虽然在形式上视频没有固定的结构,但在内容上视频本身有着较强的逻辑关系。

如图10.15所示,按照颗粒度大小将视频分为帧(Frame)、镜头(Shot)和场景(Scene)3个层次。

  • · 帧是视频最基本的单元,视频帧其实是一幅图像,关键帧又叫代表帧,是指具有代表性的帧。
  • · 镜头是由一系列帧组成的,这些帧表达同一个事件或者摄像机的一组连续的运动。
  • · 场景有一定的语义,它是由一系列相似的镜头组成的,这些镜头从不同角度表达同一批对象或环境。

视频与图像序列的相互转换

1.1 目标追踪的分类

根据任务的实时性要求,目标追踪分为在线追踪和离线跟踪两种。在线追踪通过过去和现在的视频帧确定目标的位置,对实时性要求较高;离线追踪通过过去、现在和未来的视频帧确定目标的位置,对实时性要求不高,其准确率通常高于在线追踪的准确率。

根据应用场景,目标追踪又可以分为以下几种类型:

  • 单目标追踪:追踪一个固定目标在视频帧中出现的位置。
  • 多目标追踪:同时追踪多个目标在视频帧中出现的位置。
  • 多目标多摄像头追踪:追踪多个摄像头拍摄到的多个目标在不同视频帧中出现的位置。
  • 姿态追踪:追踪目标在视频帧中的姿态变化,如追踪视频中人的不同姿态。

生成式模型

生成式模型首先定义目标的特征,然后在后续视频帧中寻找相似特征的位置,从而实现对目标的定位。早期在目标追踪模型中常使用这类方法,如光流法等。

生成式模型使用简单的特征定义,对追踪目标的描述方法有很大的局限性,在光照变化、拍摄角度变化、目标被遮挡和分辨率低等情况下,模型的识别效果不是很理想。

鉴别式模型

鉴别式模型通过比较视频帧中目标和背景的差异,将目标从视频帧中提取出来,从而实现对目标的定位。

鉴别式模型同时考虑了目标和背景信息,在模型的准确率和实时性上比生成式模型更佳,逐渐成为目标追踪的主流方法。

在2000年前后,传统的机器学习模型,如SVM、随机森林和GBDT等逐渐被引入目标追踪中。2015年前后,基于深度学习模型的目标追踪方法开始成为研究的热点。

目标追踪的方法

目标追踪有多种框架和算法,其原理也不尽相同,按照时间顺序可以将其分成经典方法、基于滤波的方法和基于深度学习的方法三大类。

  • 经典方法:先对目标的外观(如特征点、轮廓和SIFT等特征)进行建模,然后在视频帧中查找该目标出现的位置。为了提高查找效率,通常使用预测算法对目标可能出现的区域进行预测,一般只在预测的区域查找目标。
  • 基于滤波的方法:通过度量视频帧中目标的相似程度,对不同视频帧中的目标进行关联,从而实现目标追踪。例如,MOSSE算法使用相关滤波器(Correlation Filter)计算目标之间的相关值,然后根据相关值找到不同视频帧中相同的目标并建立关联,从而实现目标追踪。
  • 基于深度学习的方法:将深度学习引入目标追踪中,如基于目标检测的追踪方法(Tracking By Detecting,TBD)等。这类方法通过深度学习模型在每个视频帧上执行目标检测,并在检测到的目标之间建立关联,从而实现目标追踪。

重点理解

  • 1.光流
  • 2.光流法的原理
  • 3.Lucas-Kanade算法
  • 4.稠密光流与稀疏光流
  • 5.使用OpenCV计算光流

1.2 使用质心法进行目标追踪

1.基于目标检测的追踪方法

基于目标检测的追踪方法(Tracking By Detecting,TBD)一般使用目标检测模型 (如YOLO)在每个视频帧上进行目标检测,然后将检测出来的目标进行关联,找到每个目标的运行轨迹。

如图10.21所示,先使用目标检测模型检测出7个目标,然后通过算法将A1、A2、A3和A4进行关联,再将B1、B2和B3进行关联,从而追踪到这两个足球的运行轨迹。

TBD方法的完整工作流程如图10.22所示。该方法包括目标检测和目标关联两个关键步骤:

  • 目标检测需要一个训练好的目标检测模型,用来发现当前帧中的各个目标;
  • 目标关联需要一个关联算法,用来将当前帧中的目标与前一帧中的目标进行关联。

  • 1)目标检测,即检测出要追踪目标的位置坐标和目标分类等信息,并初始化每个目标的轨迹。
  • 2)目标关联,**即使用算法对当前帧中的目标和前一帧中的目标进行关联。**如果在前一帧中能够找到当前帧中检测到的目标,说明关联成功,则更新目标的轨迹;如果在前一帧中不能找到当前帧中检测到的目标,说明当前帧中检测到的目标为新目标,则新增目标的轨迹;如果在当前帧中不能找到前一帧中检测到的目标,表示目标消失,则移去目标的轨迹。

在基于目标检测的目标追踪方法中,为了实现对目标的关联,容易想到的方法是通过目标识别进行目标关联,即对每一帧图像进行目标检测,然后对每一个目标提取特征,最后通过特征识别出每一个目标,从而实现目标关联。

但是,通过目标识别进行目标关联需要在每一帧图像中提取出每一个目标的特征,这需要大量的计算资源,同时还需要稳定的特征提取器,在实际场景中很难做到。因此,通常采用其他方法进行目标关联,如常用的质心法。

2.使用质心法进行目标关联

质心法是一种基于目标检测的目标追踪方法,该方法在目标首次出现时先对其进行识别,然后在后续的视频帧中,通过欧氏距离将检测到的目标进行关联,如图10.23所示。

  • 1)目标检测。使用深度学习模型对视频帧进行目标检测。
  • 2)计算质心坐标。将目标预测框的中心点作为质心坐标。
  • 3)计算质心距离。计算在视频的上一帧和当前帧中目标之间的欧式距离。
  • 4)目标关联。距离相近的为同一目标,如A和C是同一目标,B是新出现的目标。
  • 5)目标更新。更新已知目标的坐标,生成新目标的ID。如果有目标消失,则注销消失目标的ID。
相关推荐
沉睡的无敌雄狮2 小时前
可编程数字人落地实践:某省广电用矩阵跃动API重构工作流(选题→政策图谱→方言音色→审稿水印),附Python调度代码
人工智能·python·重构·排序算法·kmeans
前端摸鱼匠2 小时前
YOLOv8 深入探索 Ultralytics CLI:一行命令搞定目标检测的魔法
人工智能·yolo·目标检测·计算机视觉·目标跟踪
熬了夜的程序员2 小时前
【LeetCode】117. 填充每个节点的下一个右侧节点指针 II
java·算法·leetcode
一叶之秋14122 小时前
基石之力:掌握 C++ 继承的核心奥秘
开发语言·c++·算法
码农三叔2 小时前
(11-4-01)完整人形机器人的设计与实现案例:机器人的站立与行走
人工智能·嵌入式硬件·机器人·人机交互·人形机器人
大模型玩家七七2 小时前
效果评估:如何判断一个祝福 AI 是否“走心”
android·java·开发语言·网络·人工智能·batch
拾光Ծ2 小时前
【优选算法】滑动窗口算法:专题一
c++·算法·滑动窗口·c++算法·滑动窗口算法·笔试面试
OpenLoong 开源社区2 小时前
开源发布 | 从青龙Nano到青龙Mini:共建开源生态,首次亮相产教融合场景
人工智能·开源
水木姚姚2 小时前
AI编程画马(含AI辅助创作)
人工智能·ai编程