目标跟踪简述

        本文是浏览多篇博文后,总结供自学使用,因为有时间跨度上的原因,没有标明各原博文的引用,如有侵权,请告知我删除或标明出处,先在此感谢

一、目标跟踪分类

(1)根据目标分类

        单目标

        多目标

        行人重检测(Person Re-ID)

        姿态跟踪

        多目标多摄像头跟踪(MTMCT)

        工业检测的机器视觉中,我们更关心单目标跟踪(SOT)和多目标跟踪(MOT)问题

(2)根据时间分类

        在线或离线跟踪

        工业检测中,一般是实时在线检测

二、问题难点

        形态变换、尺度变换、遮挡与消失、图像模糊等

        工业检测中,我们更关心光照和图片模糊等问题,对于检修时进行零部件跟踪,需要考虑遮挡和消失问题。

三、模型分类

        生成式模型:首先建立目标模型或提取目标特征,在后续帧进行相似特征搜索,逐步迭代实现目标定位

        鉴别式模型:将目标和背景同时考虑在内,通过对比目标模型和背景信息的差异,将目标模型提取出来,从而得到当前帧目标位置

四、算法分类

1 传统算法

  1. 特征匹配 SIFT  SURF  Harris角点
  2. 光流法  通过用视频序列在相邻帧之间的像素关系 寻找像素的位移变化,来判断目标的运动状态
  3. Meanshift 基于概率密度分布的跟踪方法,适用于目标彩色模型和背景差异较大的情况,如人脸跟踪
  4. 粒子滤波 基于粒子分布统计,分多次随机撒下粒子,通过比较粒子和目标相似度分配粒子数目。该方法不适合对目标特征建模,而适合对运动模型建模
  5. 传统算法的缺点
    • 没有考虑背景信息,目标遮挡、光照变化、运动模糊时,算法会失败
    • 速度慢(FPS≈10),FPS > 30 才有实时性

2 基于核相关滤波的算法

                MOSSE、CSK、KCF、BACF、SAMF

        相关滤波,衡量两个信号的相似程度

        速度快,数百帧每秒

        MOSSE思想:越是相似的两个目标相关值越大

3 基于深度学习的算法

        卷积网络学习特征 + 相关滤波或Struck(结构化) 的跟踪框架

        卷积输出特征优于HOG或CN特征

五、为什么采用跟踪算法不用检测???

  1. 跟踪速度比检测快,因为不需要逐帧检测,而是通过一次检测后的先验信息,在接下来的n张图片上通过跟踪算法实现目标识别
  2. 检测失败时,通过跟踪器的运动预测,可以提供找回检测目标的帮助。
  3. 跟踪算法可以保留标识,可以区分同一类别的不同目标

六、目标检测的跟踪过程

        第一步,运动模型 估计 对象的大概位置

        第二步,外观模型 精确调整此位置

        第三步, 如果目标简单且外观变化不大,对目标生成目标模板

                        如果对象外观有巨大变化,需要在线分类器训练

七、Opencv中核相关滤波算法比较

        KCF:快、准、综合效果好

        CSRT:精度最高,但速度慢

        MSSE: 最快,但精度较差

        多目标检测 MultiTracker :

                就是多个单目标检测器同时跟踪不同目标,结合到一起

                所消耗的时间是单目标检测算法的5~7倍

八、基于深度学习的多目标跟踪方案

        Yolo作为检测器 + Deep_Sort作为跟踪器

九、补充

        解决遮挡问题通常的解决方法是联系上下文信息,通过运动模型推导出消失物体的位置,有臆想成分。

你可能感兴趣的:(实习笔记,目标跟踪,计算机视觉,人工智能)