I tried to integrate my python-implemented into the VOT-2017 evaluation toolkit on Ubuntu 16.04. However, I encountered several issues, and it took much time for me to solve these issues, since I could hardly find any possible solutions from Google.
So, I post these issues and my possible solutions here. Hope this can help to save your time.
The first time you run the run_xxx
command, the VOT toolkit will try to download (before vot-2017) or compile (vot-2017) the native tools which will be used to accelerate the evaluation or communicate with the tested trackers via the trax protocol. The latest gcc compiler that matlab (R2016b) supported for the mex compiling is GCC 4.9. However, the supported compiler is probably not installed in Ubuntu, in which case you will receive a warning saying that the gcc compiler found is not supported. Fortunately, the mex can still work with the system-provided gcc. But, when you call the mex-compiled function in matlab, you will probably encounter a runtime library error saying that there is something wrong with the standard C runtime library.
This issue is raised because the matlab use different standard C runtime libraries when compiling via mex and running the mex-compiled function. The system-provided GCC is used to compile, but the compiled function is linked to a different GCC runtime library that is bundled with matlab.
My simple solution to this issue is that, we can simply disable the gcc library bundled with matlab by renaming the soft symbol link to the library:
cd MATLAB_ROOT/sys/os/glnxa64
mv libstdc ++.so.6 libstdc++.so.6.bak
Anytime you find there is something wrong with the library, you can rename it back.
It is very common for pythoners to run their code in a separate virtual environment. In my case, I installed anaconda (the most popular python distribution for pythoners), and created a separate conda environment for my tracker.
Following the instructions provided by the official support page to integrate your python-based tracker, you will probably encounter import error or runtime-library-not-found error. You need to do a litter more work in addition to what the official tutorial told you.
First, you need to specify your python interpreter in the tracker_xxx.m file. In my case, it looks like:
tracker_interperter = ‘path_to/anaconda3/envs/xxx_env/bin/python‘;
If your tracker depends on some other library that is outside the conda environment, you also need to specify it. In my case, my tracker is dependent on the CUDA library. I need to specify it in tracker_xxx.m file:
tracker_linkpath = {‘/usr/local/cuda/lib64’};
The original trax tool for python in vot-toolkit only supports python2. You need to make some changes to the trax module in the native directory to support python3-based tracker. Fortunately, you only need two steps.
First, you need to replace all the ‘xrange
’ found in the native trax module files (located at native/trax/python/*.py) with ‘range
’.
Second, replace line 70, file ‘trax/region.py’ with
‘tokens = list(map(float, string.split(‘.’)))
’.