Visual Tracking:运行ECO模型

ECO是MD大神发表在CVPR2017上的论文《ECO: Efficient Convolution Operators for Tracking》中的模型。下面介绍如何在本机中运行和测试ECO模型。

 

环境: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.打开Matlab,将当前文件夹切换到ECO文件夹,在命令行窗口输入insall;

  在这一步骤中,会涉及到gcc版本问题,我最开始使用的是gcc4.7,执行install的时候,会报warning,提示应使用gcc4.9,并且在install结束时会报错。我尝试去安装gcc4.9,但是找不到安装gcc4.9的源。

  于是,我安装了gcc5和gcc6,发现用这两个版本的每个版本都可以成功的执行install(虽然还是有waring)。

5.install成功后,执行demo_ECO,成功的话,会看到如下图所示的图片(一帧一帧的动)

  但是,,,怎么可能一次就成功呢!会出现这个错误:

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)

  这个问题折磨了我好久,尝试了很多办法,终于找到了一个好使的!(出自https://stackoverflow.com/questions/25929332/version-glibcxx-3-4-11-not-found-required-by-buildw-mexglx?rq=1

  解决步骤如下:

  a.删除/重命名Matlab的libstdc++.so,并将系统版本与相同名称进行符号链接:

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版本,选择系统中的libstdc++: 

sudo rm /usr/local/MATLAB/R2016b/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6

  c.添加环境变量

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 matlab

  这样就解决了上述问题。

6.这时,我又想运行demo_ECO_gpu,结果,运行时又报错了,如下:

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);

  意思不就是你没有对matconvnet进行gpu的编译么(大概是这个意思吧。。。),然后我就去对matconvnet进行编译去了,参考https://blog.csdn.net/qq_27432889/article/details/54866471https://blog.csdn.net/m0_37407756/article/details/72541222,最后的vl_testnn('gpu', true)显示如下结果:

  按理说,应该已经编译好了把,可是运行demo_ECO_gpu还是报一样的错误,这个问题待研究。

  研究出来了,链接在这:https://blog.csdn.net/ms961516792/article/details/82762973

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值