TLD算法详解(一)前言 + 跟踪器与检测器的设计
原文:http://blog.****.net/wood_water/article/details/9017681。本文略微做了增减等修改。
TLD是英国Surrey大学的Zdenek Kalal发表在PAMI2012年七月刊的一篇文章,主要贡献在于将跟踪与检测结合在一起,实现了工程上可应用的实时跟踪程序。而本篇文章其实是对ZK 在 2009年的paper:Online learning of robust object detectors during unstable tracking的扩展和改善。在这篇文章里作者提出了,Tracking-Modeling-Detection,而在PAMI中则修改为TLD,然而基本的思想却仍旧保持一致。TMD中的pruning和growing过程即是TLD中的P-expert与N-expert,而TMD中的Local 2bit Binary Patterns则对应TLD中的Pixel Comparison。中间的对应关系还是比较容易发现。
这篇文章是去年这个时候准备组会的时候看的,结果为了看懂这篇文章,杂七杂八又看了作者的其他五六篇文章,一直没有时间写,最近发现这个问题如此之火,所以不揣鄙陋,在此献丑,如有纰漏,欢迎各位指正。
论 文:http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6104061&tag=1
个人主页:http://scholar.google.com/citations?user=u7EBngoAAAAJ&hl=en
OpenTLD :https://groups.google.com/forum/?hl=zh-CN&fromgroups#!forum/opentld
算法效果:http://v.youku.com/v_show/id_XMjU2MzA2MDcy.html
cvchina :http://www.cvchina.info/2011/04/05/tracking-learning-detection/
开源代码:
1. Matlab官方版本
https://github.com/zk00006/OpenTLD
2.其他版本可到 GitHub 上进行搜寻
https://github.com/search?p=1&q=tld&ref=cmdform&type=Repositories
我将分若干部分说明一下我对tld的理解,呃,欢迎大家指正。
其一 Tracking-Learning-Detection TLD解析一 - 前言
其二 Tracking-Learning-Detection TLD解析二 - 跟踪器及检测器设计
其三 Tracking-Learning-Detection TLD解析三 - Learning学习(跟踪与检测的协调与更新)
其四 Tracking-Learning-Detection TLD解析四 - 扩展及局限
首先,介绍一下TLD的特点:
1.开源。有多种OpenTLD版本传播,作者主页有MatLab版本的源码,但是现在作者主页好像删掉了。
2.实时。实时性主要是由于使用的特征和分类器相对简单,并且实时性也仅是在QVGA (240×320) 视频流上实现。
3.仅需要一帧初始化。无须线下训练,检测与跟踪同时进行,分类器实时进行更新,综合检测和跟踪的结果输出最终结果。
4.可以解决跟踪对象失联及重入问题。跟踪效果是目前相对来说较好的state of art,可以实现长时跟踪。
5.与当今跟踪现状相比,更加注重工程实现,且效果惊艳。
6.将检测与跟踪相结合。
跟踪利用在帧与帧之间的信息,只需要初始化,可以产生平滑的路线,耗时较短,但是会产生漂移。
检测会逐帧独立的检测物体位置,不会发生偏移,但是需要线下训练,而且只能寻找已知的物体。
博客地址:http://blog.****.net/outstandinger/article/details/9017681
据称已经在如下场景中得到应用,而作者本人也已是TLD vIsion的老总:
相关文章:
Tracking-learning-detection. Pattern Analysis and Machine Intelligence, 2012
Online learning of robust object detectors during unstable tracking. ICCV Workshops, 2009
Face-tld: Tracking-learning-detection applied to faces. ICIP, 2010
Forward-Backward Error: Automatic Detection of Tracking Failures. ICPR, 2010
P-N Learning: Bootstrapping Binary Classifiers by Structural Constraints. CVPR, 2010
原文:http://blog.****.net/wood_water/article/details/9019505
TLD论文中指出,单靠跟踪或单靠检测都无法完成现实的任务,而TLD的任务即在于结合两者的优势。
跟踪与检测的结合点即在于Learning学习过程。图示如下:
论文中将整个方案分为三部分,检测,跟踪,及学习。学习将综合检测与跟踪的结果输出,输出的结果可以作为检测子的训练数据,也可以作为对跟踪器重新初始化。
下面我们具体讲解一下跟踪子与检测子的实现方法。这也是TLD中主要的两部分,下一篇我将介绍一下我对学习过程的理解。
博客地址:http://blog.****.net/outstandinger/article/details/9019505
一,跟踪器
1,综述
跟踪器的实现主要基于作者的论文《Forward-Backward Error: Automatic Detection of Tracking Failures》。
该论文基于改进了基于Lucas-Kanade tracker光流的跟踪的方法,提出一种所谓的中指流(Median Flow)跟踪方法,这也是应用于TLD之中的跟踪器。
该跟踪器将在帧与帧之间估计物体运动,利用偏移和尺度的变化中值对整体效果进行更新。
具体框图如下:
结合上图,在第 t 帧与 t+1 帧 之间的运行情况,我们在第 t 帧中初始化跟踪点框,然后利用经典的Lucas-Kanade tracker对各点进行跟踪,对跟踪得到的点进行错误估计(具体的错误估计方法下面介绍),去除跟踪效果不好的点,利用剩余的点对下一帧的跟踪结果进行更新(更新方法见下)。
2.错误估计
具体的错误估计准则,则依据Forward-Backward Error(FB,前后向错误) 及 Normalized Correlation Coefficient (NCC,归一化相关系数)。
所谓的FB错误即如上图所示,我们在估计第 t 帧与 t+k 帧之间的错误时,首先由第 t 帧出发跟踪某点到 t+k 帧,在得到的 t+k 帧 再往前反跟踪回放至第 t 帧,利用回溯点与原点之间的欧氏距离作为前后向错误。当然实际中是逐帧比较,也只是计算 t 与 t+1 帧之间的情况。
而所谓的归一化相关参数则表示,其中f1,f2表示两个特征块。
3.输出策略
对结果的输出将综合所有剩余置信度较高的点的偏移情况,利用剩余的点来估计目标的移动情况。利用每个点空间维度移动的中值作为目标的移动情况。然后对于每一个 点,都会计算其与前一点移动情况的比率,以各个点比率的中值作为当前框图相对前一框图scale幅度的变化。然后更新当前框图。至此,则跟踪器各部分介绍完毕,具体图示如下:
4,失败检测
如上图所示,以 di 代表像素的位移,以 dm 表示目标的位移中值,如果 余量 residual = |di - dm| > 10 ,则认为目标移动过快或者被遮挡而未跟踪到结果。
二,检测器设计
1.综述
2.方差比较
3.组合分类器
(1)实现
(2)初始化
4.最近邻分类器
组合分类器的输出结果再经过最近邻分类器输出检测子的结果。
相关文章:
Tracking-learning-detection. Pattern Analysis and Machine Intelligence, 2012
Online learning of robust object detectors during unstable tracking. ICCV Workshops, 2009
Face-tld: Tracking-learning-detection applied to faces. ICIP, 2010
Forward-Backward Error: Automatic Detection of Tracking Failures. ICPR, 2010
P-N Learning: Bootstrapping Binary Classifiers by Structural Constraints. CVPR, 2010
- 顶
- 2
- 踩