將孿生網(wǎng)絡(luò)SiamFC跟蹤算法加入到OTB benchmark_v1.0中【新手記錄】

SiameseFC: Luca Bertinetto, Jack Valmadre, Jo?o F. Henriques, Andrea Vedaldi, Philip H.S. Torr. "Fully-Convolutional Siamese Networks for Object Tracking." ECCV workshop (2016).

吳毅老師的【OTB benchmark】瑟慈,只能在windows下運行持钉,mac和linux無緣咯斗埂。
我已經(jīng)盡我所能寫的盡量詳細了殉簸。

相關(guān)下載

孿生網(wǎng)絡(luò)用于跟蹤顽耳,2016年發(fā)表在ECCV上的文章隙姿。
項目主頁在這里涩拙。論文下載在這里飘蚯。
GitHub源碼下載

OTB benchmark下載鏈接,所需要的測試序列也從這個網(wǎng)站上下載艳吠。

下載算法源碼

  1. 從Github上將整個算法克隆下來麦备,按照github上這部分對源碼進行修改。安裝需要的環(huán)境昭娩。
    Tracking only

    注意到需要的環(huán)境了嘛A莞荨!栏渺!
  • GPU
  • CUDA drivers
  • cuDNN
  • Matlab
  • MatCovNet(v1.0-beta20)
    要注意版本匹配的問題:
  • 通過在matlab中輸入gpuDevice()的輸出呛梆,可以了解自己GPU的情況,下載對應(yīng)的cuda版本磕诊。
  • cuda版本對應(yīng)了matlab版本:
    我的配置是matlab R2016a + Visual Studio 2013 + cuda7.5 + cuDnn v5.1.這個版本是完全對應(yīng)正確的填物,可以工作。
    cuda-matlab版本對應(yīng)

    matlab官方文件也指出可以使用更新版本的cuda霎终,需要自己配置滞磺。
  1. 將下載好的源碼文件夾改名為SiamFC,放到【benchmark v_1.0】-->【trackers】


    SiamFC放置位置
  2. 下載matconvnet v_1.0-beta20后莱褒,解壓為matconvnet放到SiamFC击困,下載的模型【2016-8-17.net.mat】放到【SiamFC】-->【net
    s】下。


    模型位置

MATLAB編譯

matlab中輸入命令順序在下面:

>>> cd SiamFC
>>> adddpath matlab
>>> mex -setup C++
>>> vl_compilenn('enableGpu',true)

matlab里面會有這樣的顯示:


mex編譯

我在運行第四步命令之后出現(xiàn)下面的警告:


警告

不過沒有關(guān)系保礼,編譯繼續(xù)沛励,而且最后還會成功的!只要版本對了炮障。我的GPU很弱目派,GEFORCE 710M 筆記本。所以得用低版本的cuda胁赢。

運行SiamFC需要做的修改

一企蹭、 按照github上作者的要求改之后,再做下面的修改。
將【SiamFC】-->【tracking】下的run_tracker.m文件復(fù)制到【SiamFC】下谅摄,并重命名為SiamFC.m徒河。
修改后SiamFC.m中的內(nèi)容:

function results = run_SiamFC(seq, res_path, bSaveImage)
% RUN_TRACKER  is the external function of the tracker - does initialization and calls tracker.m
    addpath(genpath('./tracking/'));    
    startup;
    %% Parameters that should have no effect on the result.
    params.video = seq.path;
    params.visualization = false;
    params.gpus = 1;
    %% Parameters that should be recorded.
    % params.foo = 'blah';
    if bSaveImage
        imwrite(frame2im(getframe(gcf)),[res_path num2str(frame) '.jpg']); 
    end
    %% Call the main tracking function
    bboxes = tracker(params);
    seq.res = bboxes;
    results.res = bboxes;
    result.type = 'rect';
end

上面文件的文件最后四行是為了讓benchmark找到tracker的結(jié)果。
第二個修改文件送漠,tracking文件夾下的tracker.m的第55行

    [imgFiles, targetPosition, targetSize] = load_video_info( p.video);

第三個需要修改的文件:load_video_info.m

% -------------------------------------------------------------------------------------------------
function [imgs, pos, target_sz] = load_video_info(video_path)
%LOAD_VOT_VIDEO_INFO
%   Loads all the relevant information for the video in the given path:
%   the list of image files (cell array of strings), initial position
%   (1x2), target size (1x2), the ground truth information for precision
%   calculations (Nx4, for N frames), and the path where the images are
%   located. The ordering of coordinates and sizes is always [y, x].
%
%   Joao F. Henriques, 2014
%   http://www.isr.uc.pt/~henriques/
% -------------------------------------------------------------------------------------------------
    %full path to the video's files
    % panchen 
%   if base_path(end) ~= '/' && base_path(end) ~= '\',
%       base_path(end+1) = '/';
%   end  
%   video_path = [base_path video];

    %load ground truth from text file
    ground_truth = csvread([video_path  'groundtruth_rect.txt']);
    region = ground_truth(1, :);
    [cx, cy, w, h] = get_axis_aligned_BB(region);
    pos = [cy cx]; % centre of the bounding box
    target_sz = [h w];

    %load all jpg files in the folder
    img_files = dir([video_path '*.jpg']);
    assert(~isempty(img_files), 'No image files to load.')
    img_files = sort({img_files.name});

    %eliminate frame 0 if it exists, since frames should only start at 1
    img_files(strcmp('00000000.jpg', img_files)) = [];
    img_files = strcat(video_path, img_files);
    % read all frames at once
    imgs = vl_imreadjpeg(img_files,'numThreads', 12);
end

需要將下載好的數(shù)據(jù)中的groundtruth_rect.txt文件放到/img文件夾下面顽照。
這個視頻序列比較特別,CarScale視頻序列的groundtruth_rect文件需要注意闽寡,SiamFC讀不出來代兵,需要將文件里的tab轉(zhuǎn)換為‘,’

數(shù)據(jù)準備爷狈,benckmark中的修改

utils文件夾下面有兩個文件需要修改植影,關(guān)于使用的tracker和測試序列。

  • configSeqs.m
  • configTrackers.m
一涎永、configSeqs.m

設(shè)置測試序列的訪問路徑思币,絕對路徑。

function seqs=configSeqs
seqIVT={struct('name','Skater','path','C:\benchmark\Skater\img\','startFrame',1,'endFrame',160,'nz',4,'ext','jpg','init_rect', [0,0,0,0]),...
    struct('name','Jump','path','C:\benchmark\Jump\img\','startFrame',1,'endFrame',122,'nz',4,'ext','jpg','init_rect', [0,0,0,0])};
seqs = seqIVT;

注意 startFrame和 endFrame都要作相應(yīng)修改羡微。

二谷饿、configTrackers.m
function trackers=configTrackers
trackers1={struct('name','SiamFC','namePaper','SiamFC')};
trackers = trackers1

到這里應(yīng)該就差不多了,我就可以成功運行了】教裕現(xiàn)在記錄下來覺得好像沒改什么東西各墨,但是真的很辛苦的指孤,都是一點點debug启涯,看變量數(shù)據(jù)結(jié)構(gòu),一步步的運行才知道了問題出在哪里恃轩,真的是各種問題结洼!一定要好好記錄一下,如果能再對需要的人有幫助就好啦叉跛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末松忍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筷厘,更是在濱河造成了極大的恐慌鸣峭,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酥艳,死亡現(xiàn)場離奇詭異摊溶,居然都是意外死亡,警方通過查閱死者的電腦和手機充石,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門莫换,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事拉岁】谰纾” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵喊暖,是天一觀的道長惫企。 經(jīng)常有香客問我,道長陵叽,這世上最難降的妖魔是什么雅任? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮咨跌,結(jié)果婚禮上沪么,老公的妹妹穿的比我還像新娘。我一直安慰自己锌半,他們只是感情好禽车,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刊殉,像睡著了一般殉摔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上记焊,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天逸月,我揣著相機與錄音,去河邊找鬼遍膜。 笑死碗硬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瓢颅。 我是一名探鬼主播恩尾,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挽懦!你這毒婦竟也來了翰意?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤信柿,失蹤者是張志新(化名)和其女友劉穎冀偶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渔嚷,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡进鸠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了圃伶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堤如。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒲列,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搀罢,到底是詐尸還是另有隱情蝗岖,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布榔至,位于F島的核電站抵赢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏唧取。R本人自食惡果不足惜铅鲤,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望枫弟。 院中可真熱鬧邢享,春花似錦、人聲如沸淡诗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽韩容。三九已至款违,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間群凶,已是汗流浹背插爹。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留请梢,地道東北人赠尾。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像溢陪,于是被迫代替她去往敵國和親萍虽。 傳聞我的和親對象是個殘疾皇子睛廊,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354