最近接触KCF算法,想要试一下matlab版本代码看看效果怎么样,总体的过程如下:
KCF算法的提出:High-Speed Tracking with Kernelized Correlation Filters J. F. Henriques, R. Caseiro, P. Martins, J. Batista TPAMI 2015
代码链接:http://www.robots.ox.ac.uk/~joao/circulant/index.html 这是Henriques大神主页,在Source code那部分下载,当然也有c++版本的代码 下载后的matlab版本代码解压后文件夹名字为tracker_release2 。
我这里使用了常用的 Visual Tracker Benchmark 数据集,在视觉跟踪领域这是个非常常用的数据集,可以整个都下载下来研究研究,这里只简单说用到的。
数据集官网:http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html 我这里用到了 TB-50 Sequences 里面的第一个 basketball,如图:
文件位置: 代码位置为 F:\Postgraduate Learning\KCF\tracker_release2
数据集位置为 F:\Postgraduate Learning\OTB\TB50 (这里我下载了全部的数据集)
run_tracker.m 第43行base_path改为数据集所在路径,当然这个根据自己的路径来改,写到basketball文件夹的上一级路径
base_path = 'F:\Postgraduate Learning\OTB\TB50';第136行、137行提示 “matlabpool 已删除,请用parpool”,是版本的问题,直接把matlabpool改为parpool就行了:
%evaluate trackers for all videos in parallel if parpool ('size') == 0, parpool open; endshow_video.m 第24行的
set(fig_h, 'Number','off', 'Name', ['Tracker - ' video_path])删去Number 和 off 两个参数,改成
set(fig_h, 'Name', ['Tracker - ' video_path])precious_plot.m 第40行
figure('Number','off', 'Name',['Precisions - ' title])同样删除Number 和 off 两个参数,改为:
figure('Name',['Precisions - ' title])这样就可以了。
以上工作做完之后,运行run_tracker.m文件,会出现对话框,我们在对话框中选择basketball选项:
效果如图: 运行结束之后显示: 注意命令窗口还有结果显示:
basketball - Precision (20px): 0.923, FPS: 254.08如果在选择数据集的对话框里选择其他的数据集可能会报错,这是因为不同的数据集里面数据的格式并不一样,basketball打开之后是这样 img文件夹和groundtruth_rect文件,如果是这样的格式就可以,比如carDark、soccer也可以。
但是biker、bird1等数据集的格式是下面的格式:
打开Biker文件夹: 如果想用这个数据集的话,可以在run_tracker.m 中把路径再多写一级
base_path = 'F:\Postgraduate Learning\OTB\TB50\biker';就可以运行了。