目标跟踪-object track

大牛推荐

凑个数,目前相关滤波方向贡献最多的是以下两个组(有创新有代码):

牛津大学:Joao F. HenriquesLuca Bertinetto,代表:CSK, KCF/DCF, Staple, CFNet (其他SiamFC, Learnet).

林雪平大学:Martin Danelljan,代表:CN, DSST, SRDCF, DeepSRDCF, SRDCFdecon, C-COT, ECO.

国内也有很多高校的优秀工作就不一一列举了。


 

相关滤波

介绍最经典的高速相关滤波类跟踪算法CSK, KCF/DCF, CN。很多人最早了解CF,应该和我一样,都是被下面这张图吸引了:

这是KCF/DCF算法在OTB50上(2014年4月就挂arVix了, 那时候OTB100还没有发表)的实验结果,Precision和FPS碾压了OTB50上最好的Struck,看惯了勉强实时的Struck和TLD,飙到高速的KCF/DCF突然有点让人不敢相信,其实KCF/DCF就是在OTB上大放异彩的CSK的多通道特征改进版本。注意到那个超高速615FPS的MOSSE(严重超速这是您的罚单),这是目标跟踪领域的第一篇相关滤波类方法,这其实是真正第一次显示了相关滤波的潜力。和KCF同一时期的还有个CN,在2014'CVPR上引起剧烈反响的颜色特征方法,其实也是CSK的多通道颜色特征改进算法。从MOSSE(615)到 CSK(362) 再到 KCF(172FPS), DCF(292FPS), CN(152FPS), CN2(202FPS),速度虽然是越来越慢,但效果越来越好,而且始终保持在高速水平:

  • Bolme D S, Beveridge J R, Draper B A, et al. Visual object tracking using adaptive correlation filters [C]// CVPR, 2010.
  • Henriques J F, Caseiro R, Martins P, et al. Exploiting the circulant structure of tracking-by- detection with kernels [C]// ECCV, 2012.
  • Henriques J F, Rui C, Martins P, et al. High-Speed Tracking with Kernelized Correlation Filters [J]. IEEE TPAMI, 2015.
  • Danelljan M, Shahbaz Khan F, Felsberg M, et al. Adaptive color attributes for real-time visual tracking [C]// CVPR, 2014.

CSK和KCF都是Henriques J F(牛津大学)João F. Henriques 大神先后两篇论文,影响后来很多工作,核心部分的岭回归,循环移位的近似密集采样,还给出了整个相关滤波算法的详细推导。还有岭回归加kernel-trick的封闭解,多通道HOG特征。

Martin Danelljan大牛(林雪平大学)用多通道颜色特征Color Names(CN)去扩展CSK得到了不错的效果,算法也简称CN Coloring Visual Tracking

MOSSE是单通道灰度特征的相关滤波,CSK在MOSSE的基础上扩展了密集采样(加padding)和kernel-trick,KCF在CSK的基础上扩展了多通道梯度的HOG特征,CN在CSK的基础上扩展了多通道颜色的Color Names。HOG是梯度特征,而CN是颜色特征,两者可以互补,所以HOG+CN在近两年的跟踪算法中成为了hand-craft特征标配。最后,根据KCF/DCF的实验结果,讨论两个问题:

  • 1. 为什么只用单通道灰度特征的KCF和用了多通道HOG特征的KCF速度差异很小?

第一,作者用了HOG的快速算法fHOG,来自Piotr's Computer Vision Matlab Toolbox,C代码而且做了SSE优化。如对fHOG有疑问,请参考论文Object Detection with Discriminatively Trained Part Based Models第12页。
第二,HOG特征常用cell size是4,这就意味着,100*100的图像,HOG特征图的维度只有25*25,而Raw pixels是灰度图归一化,维度依然是100*100,我们简单算一下:27通道HOG特征的复杂度是27*625*log(625)=47180,单通道灰度特征的复杂度是10000*log(10000)=40000,理论上也差不多,符合表格。

看代码会发现,作者在扩展后目标区域面积较大时,会先对提取到的图像块做因子2的下采样到50*50,这样复杂度就变成了2500*log(2500)=8495,下降了非常多。那你可能会想,如果下采样再多一点,复杂度就更低了,但这是以牺牲跟踪精度为代价的,再举个例子,如果图像块面积为200*200,先下采样到100*100,再提取HOG特征,分辨率降到了25*25,这就意味着响应图的分辨率也是25*25,也就是说,响应图每位移1个像素,原始图像中跟踪框要移动8个像素,这样就降低了跟踪精度。在精度要求不高时,完全可以稍微牺牲下精度提高帧率(但看起来真的不能再下采样了)。

  • 2. HOG特征的KCF和DCF哪个更好?

大部分人都会认为KCF效果超过DCF,而且各属性的准确度都在DCF之上,然而,如果换个角度来看,以DCF为基准,再来看加了kernel-trick的KCF,mean precision仅提高了0.4%,而FPS下降了41%,这么看是不是挺惊讶的呢?除了图像块像素总数,KCF的复杂度还主要和kernel-trick相关。所以,下文中的CF方法如果没有kernel-trick,就简称基于DCF,如果加了kernel-trick,就简称基于KCF(剧透基本各占一半)。当然这里的CN也有kernel-trick,但请注意,这是Martin Danelljan大神第一次使用kernel-trick,也是最后一次。。。

这就会引发一个疑问,kernel-trick这么强大的东西,怎么才提高这么点?这里就不得不提到Winsty的另一篇大作:

  • Wang N, Shi J, Yeung D Y, et al. Understanding and diagnosing visual tracking systems[C]// ICCV, 2015.

一句话总结,别看那些五花八门的机器学习方法,那都是虚的,目标跟踪算法中特征才是最重要的就是因为这篇文章我粉了WIN叔哈哈以上就是最经典的三个高速算法,CSK, KCF/DCF和CN,推荐。

总结:

MOSSE:单通道灰度特征的相关滤波

CSK:基于MOSSE增加Padding和 kernel-trick

KCF:多通道梯度HOG特征的CSK

CN:多通道颜色特征的CSK

DCF:没有kernel-trick的KCF


 

CSKfoolwood/CSK Qiang Wang实现的

I just want to build a c++ preject for CSK.
##It looks like MATLAB.
##Simple gui(I will change it to the KCF version 2 via Trackbar) It's quite difficult to draw gui like MATLAB,but the Trackbar function is quite useful!(if you tried KCF MATLAB code)

KCFjoaofaro/KCFcpp (高人气推荐) 原作者提供的

"KCFC++", command: ./KCF 原版HOG特征的KCF算法

Description: KCF on HOG features, ported to C++ OpenCV. The original Matlab tracker placed 3rd in VOT 2014.

"KCFLabC++", command: ./KCF lab 扩展Lab颜色特征的KCF算法

Description: KCF on HOG and Lab features, ported to C++ OpenCV. The Lab features are computed by quantizing CIE-Lab colors into 15 centroids, obtained from natural images by k-means.

The CSK tracker [2] is also implemented as a bonus, simply by using raw grayscale as features (the filter becomes single-channel). 调用灰度特征就是CSK

KCFfoolwood/KCF 还是Qiang Wang,完全实现MATLAB代码,可以对照学习

It denpends on OpenCV, so you have to install OpenCV first.

I change fhog from computeHOG32D,newly opencv_contrib

Now I use fhog from Piotr's Computer Vision Matlab Toolbox and wrapper by Tomas Vojir

This algorithm is belong to the author of KCFJoão F. Henriques, Rui Caseiro, Pedro Martins, Jorge Batista

CNmostafaizz/ColorTracker 按照MATLAB代码实现的

This C++ code is an implementation of the visual tracking method proposed in [1]. The implementation is based on the Matlab code provided by the authors of the paper.

The implementation in C++ using openCV was done by Mostafa Izz.

DSSTliliumao/KCF-DSST 在原作者KCF的C++代码基础上,增加scale filter实现DSST,比DSST的MATLAB代码多了gaussian-kernel

This package includes a C++ class with several tracking methods based on the Kernelized Correlation Filter (KCF) [1, 2] for translation changes and the Discriminative Scale Space Tracker (DSST) [3] .

DSST scaling changing part is added to the original kcftracker.cpp/hpp file. Original recttools.hpp and ffttools.hpp are also modified. Debug mode is added to the Cmakelists.txt.

fDSSTTuringKi/fDSST_cpp,没用过

C++ re-implementation of fast Discriminative Scale Space Tracking.

SAMFvojirt/kcf (高人气推荐) 最后这个虽说是KCF代码,但扩展了CN特征,还加了7步长的尺度检测scale detection,这不SAMF是什么

This is a C++ reimplementation of algorithm presented in "High-Speed Tracking with Kernelized Correlation Filters" paper. For more info and implementation in other languages visit the autor's webpage!.

It is extended by a scale estimation (use several 7 different scales steps) and by a RGB (channels) and Color Names [2] features. Data for Color Names features were obtained from SAMF tracker.

It is free for research use. If you find it useful or use it in your research, please acknowledge my git repository and cite the original paper [1].

The code depends on OpenCV 2.4+ library and is build via cmake toolchain.

https://www.zhihu.com/question/26493945 

猜你喜欢

转载自blog.csdn.net/u011808673/article/details/82218718