LCT

来自马超大神的论文:Long-term Correlation Tracking

代码跑起来先

论文才刚开始看,但是代码先跑了一下看结果,有一点小坑,记录下:
首先去论文的github上去下载代码:点这里
readme里其实写了怎么搞:

Quickstart

  1. Unzip code or clone it from
    https://github.com/chaoma99/lct-tracker.git
  2. Add the vl_feat toolbox in your current path
    http://www.vlfeat.org/
  3. If you don't have the object tracking benchmark (OTB) dataset yet, run 'download_videos.m' (it will automatically download the OTB-100 sequences)
  4. Run utility/compile.m to comile calcIIF.cpp and im2colstep.c. These files are tested with opencv3.0. Notice the compatibility issue if your opencv version is earlier than 3.0
  5. The source files "assignToBins1.c", "gradientMex.cpp", 'imResample.cpp' are from Pitor Dollar's toolbox. If the compiled files do not work on your system, get it from
    http://vision.ucsd.edu/~pdollar/toolbox/doc/index.html

这里再说一些操作细节:

  1. 首先是把整个项目下载下来解压,clone也可以,我是直接下载的zip解压。
  2. 然后去下载这个工具包:vl_feat toolbox,这是一个matlab的工具包,下载之后解压,记住路径,然后再matlab中运行:
    run('C:\vlfeat-0.9.20\toolbox\vl_setup')这个路径就是vl_setup.m所在的路径。这个方法是每次打开matlab都要运行一次,还有一种方法是把整个文件夹添加进matlab的路径:
    set path
    add_path

    这样就相当于安装了这个工具包,其他matlab工具包的安装也可以参照这个过程。
    如果自己写的函数想要在matlab工程里调用的话也可参照这种方法,matlab的程序组织就是这种形式,简单粗暴。
  3. 编译calcIIF.cpp and im2colstep.c,这几个文件依赖于opencv3.0以上版本,我用的3.3也是可以的,需要改几个路径,都在compile.m文件里,如下:
    这两个路径改成自己opencv的安装路径。
opts.opencv_include_path    =   'C:\opencv\build\include'; % OpenCV include path
opts.opencv_lib_path        =   'C:\opencv\build\x64\vc14\lib'; % OpenCV lib path

还有:这几个路径也要改:
路径改动
  1. 然后下载数据就可以了,作者给出的download_video.m就可用,或者自己手动去下载也行,完了就可以跑代码了。我用作者给的代码下载了几个,但是效果并不是特别好,但这个算法是long-term的一个经典算法,还是想过一遍。

文章思路

大概看了一遍,因为效果不是很好,速度也极慢(个位数的帧率),看文章的时候发现竟然用了47个通道的特征,除了31维的fhog之外还加了一些,所以只是大概看了一下思路,这还只是平移,尺度更新和DSST稍有不同,DSST是训练了一个一维的尺度滤波器,这里没有,而是用hog特征求了响应(是一个二维的滤波器),取一个响应的最大值(和SAMF倒是有点像,不过这里的尺度要多一些)。
这是long-term的一篇比较经典的文章。
前面看过的KCF,CN等都是针对于短时跟踪的,对于遮挡的效果尤其不好,因为是每一帧都更新模型,虽然已经加入了一个学习率来更新以提高鲁棒性,但是如果一连数帧都被遮挡,那么滤波器就会漂移到遮挡物上,很难再更新回来。也就会跟丢了。
所以长时跟踪主要要解决几个个问题:

  1. 能够判断什么时候跟丢了。
  2. 跟丢了要找回来,要就是要配置一个detector,而且这个detector还必须足够好足够快,检测失败还不如不检测,速度跟不上不符合tracking的要求。
  3. detector也需要在线更新,因为被跟踪物体可能存在变形和尺寸变化等。

先来看一个图:

filter
这是文中用的两个滤波器。
Rc:加padding,加汉明窗,用的是fhog加一些其他的特征,共47维。细节没看。
Rt:不加padding,不加汉明窗,用hog特征。
两个滤波器的作用不同,下面说,再看一张图:
framework

Rc用来平移估算,也就是位置更新,基本和DCF中的是相同的,滤波器每帧都更新。
Rt用来尺度估算,具体就是构建尺度金字塔,然后resize到固定大小,取hog,每一个都送入Rt,响应最大的那一个的尺度当做最佳尺度。
另外Rt还负责检验目标的置信度,一旦判定目标不可信,就调用detector重新检测,但也不是检测到的就采用,还是有一定的条件。具体如下:

  1. 首先,Rt不是每一帧都更新的,只有当响应max_response(原文中式5的结果)大于一个阈值Ta(外观阈值)时才更新,这说明平移检测足够可信,就依此来更新Rt。
  2. 如果max_response<Tr(运动阈值)时,则调用detector来重新检测目标,但并不是这样就直接采用detector的结果,只有当检测到的响应(检测到的结果送入滤波器算响应)大于1.5倍的max_response时才会采用,否则还沿用平移检测到的结果。这段原文中没有提及,代码里可能有具体值。伪代码中是和Tr进行的比较。

基本就是这样,伪代码也比较清晰:
伪代码

用到的随机簇检测我也没仔细看,是一种全帧检测,还有用到KNN分类(公开代码说是用SVM代替了),这些细节我都没有去看代码。

总结

理论上来说,这种方法对于遮挡的处理结果应该是不错的,但是我实测来看,对于快速运动和遮挡还是有跟丢的情况,而且再也找不回来,另外这两个非常重要且精确的阈值是怎么得来的也未可知,不过这种思路是值得借鉴的,也很直观。大概就这样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容