Visual Tracking:运行ECO模型
ECO是MD大神發(fā)表在CVPR2017上的論文《ECO: Efficient Convolution Operators for Tracking》中的模型。下面介紹如何在本機(jī)中運(yùn)行和測(cè)試ECO模型。
?
環(huán)境:Ubuntu 18.04 LST、Matlab2016b、gcc6.4.0
?
以下翻譯部分源于“https://github.com/martin-danelljan/ECO”;
1.在https://github.com/martin-danelljan/ECO中下載模型的ZIP文件,并解壓;
2.在https://github.com/vlfeat/matconvnet中下載MatConvnet,并解壓到ECO解壓目錄的"/external_libs/matconvnet/"文件夾下;
3.在https://github.com/pdollar/toolbox中下載PDollorToolBox,并解壓到ECO解壓目錄的"/external_libs/pdollar_toolbox/"文件夾下;
4.打開(kāi)Matlab,將當(dāng)前文件夾切換到ECO文件夾,在命令行窗口輸入insall;
? 在這一步驟中,會(huì)涉及到gcc版本問(wèn)題,我最開(kāi)始使用的是gcc4.7,執(zhí)行install的時(shí)候,會(huì)報(bào)warning,提示應(yīng)使用gcc4.9,并且在install結(jié)束時(shí)會(huì)報(bào)錯(cuò)。我嘗試去安裝gcc4.9,但是找不到安裝gcc4.9的源。
? 于是,我安裝了gcc5和gcc6,發(fā)現(xiàn)用這兩個(gè)版本的每個(gè)版本都可以成功的執(zhí)行install(雖然還是有waring)。
5.install成功后,執(zhí)行demo_ECO,成功的話,會(huì)看到如下圖所示的圖片(一幀一幀的動(dòng))
? 但是,,,怎么可能一次就成功呢!會(huì)出現(xiàn)這個(gè)錯(cuò)誤:
Invalid MEX-file '/home/matconvnet-1.0-beta20/matlab/mex/vl_nnconv.mexa64': /usr/local/MATLAB/R2016a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/matconvnet-1.0-beta20/matlab/mex/vl_nnconv.mexa64)? 這個(gè)問(wèn)題折磨了我好久,嘗試了很多辦法,終于找到了一個(gè)好使的!(出自https://stackoverflow.com/questions/25929332/version-glibcxx-3-4-11-not-found-required-by-buildw-mexglx?rq=1)
? 解決步驟如下:
? a.刪除/重命名Matlab的libstdc++.so,并將系統(tǒng)版本與相同名稱進(jìn)行符號(hào)鏈接:
sudo rm /usr/local/MATLAB/R20116b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6 sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/local/MATLAB/R2016b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6? b.刪除Matlab版本,選擇系統(tǒng)中的libstdc++:?
sudo rm /usr/local/MATLAB/R2016b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6? c.添加環(huán)境變量
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 matlab? 這樣就解決了上述問(wèn)題。
6.這時(shí),我又想運(yùn)行demo_ECO_gpu,結(jié)果,運(yùn)行時(shí)又報(bào)錯(cuò)了,如下:
Error using vl_nnconv An input is not a numeric array (or GPU support not compiled).Error in vl_simplenn (line 300) res(i+1).x = vl_nnconv(res(i).x, l.weights{1}, l.weights{2}, ...Error in get_cnn_layers (line 23) cnn_feat = vl_simplenn(fparams.net, im,[],[],'CuDNN',true, 'Mode', 'test');Error in extract_features (line 59) feature_map(ind:ind+num_blocks-1) = feat.getFeature(img_samples{img_sample_ind}, feat.fparams, gparams);Error in tracker (line 347) xl = extract_features(im, sample_pos, currentScaleFactor, features, global_fparams, feature_extract_info);Error in testing_ECO_gpu (line 129) results = tracker(params);Error in demo_ECO_gpu (line 13) results = testing_ECO_gpu(seq);? 意思不就是你沒(méi)有對(duì)matconvnet進(jìn)行g(shù)pu的編譯么(大概是這個(gè)意思吧。。。),然后我就去對(duì)matconvnet進(jìn)行編譯去了,參考https://blog.csdn.net/qq_27432889/article/details/54866471和https://blog.csdn.net/m0_37407756/article/details/72541222,最后的vl_testnn('gpu', true)顯示如下結(jié)果:
? 按理說(shuō),應(yīng)該已經(jīng)編譯好了把,可是運(yùn)行demo_ECO_gpu還是報(bào)一樣的錯(cuò)誤,這個(gè)問(wèn)題待研究。
? 研究出來(lái)了,鏈接在這:https://blog.csdn.net/ms961516792/article/details/82762973
總結(jié)
以上是生活随笔為你收集整理的Visual Tracking:运行ECO模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ubuntu 18.04 美化mac主题
- 下一篇: 模型学习 - HNN、RBM、DBN