yuxng / MDP_Tracking

Learning to Track: Online Multi-Object Tracking by Decision Making
MIT License
414 stars 168 forks source link

problem in MDP_train() using MATLAB R2017a and gcc 6 #14

Closed BadWindshield closed 6 years ago

BadWindshield commented 6 years ago

I compiled everything successfully, including the ones in the directories 3rd_party\libsvm-3.20 and 3rd_party\libsvm-3.20\matlab. However, when I run MOT_cross_validation.m, I got errors. Any help is appreciated. Thanks very much.

As you can see below, I got past MDP_initialize() (line 49 in MDP_train.m), but had problems calling MDP_value() at line 185.

>> MOT_cross_validation
Online training on sequence: TUD-Stadtmitte
load images from file results/TUD-Stadtmitte_dres_image.mat done
TUD-Stadtmitte: 10 positive sequences
initialize tracker from scratch
.Invalid MEX-file '/home/williamw/Will/MDP_Tracking/lk.mexa64':
Missing symbol '_ZdaPvm' required by '/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4->/home/williamw/Will/MDP_Tracking/lk.mexa64'
Missing symbol '_ZdlPvm' required by '/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4->/home/williamw/Will/MDP_Tracking/lk.mexa64'
Missing symbol '_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm' required by
'/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4->/home/williamw/Will/MDP_Tracking/lk.mexa64'

…

Error in MDP_train (line 185)
            tracker = MDP_value(tracker, fr, dres_image, dres, []);

Error in MOT_cross_validation (line 39)
            tracker = MDP_train(idx_train{j}, tracker);

By the way, I am running Ubuntu where my OpenCV libraries look like

$ ls -l /usr/lib/x86_64-linux-gnu/libopencv_core*
-rw-r--r-- 1 root root 3988850 Apr  3  2017 /usr/lib/x86_64-linux-gnu/libopencv_core.a
lrwxrwxrwx 1 root root      21 Apr  3  2017 /usr/lib/x86_64-linux-gnu/libopencv_core.so -> libopencv_core.so.2.4
lrwxrwxrwx 1 root root      23 Apr  3  2017 /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 -> libopencv_core.so.2.4.9
-rw-r--r-- 1 root root 2204864 Apr  3  2017 /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4.9

I checked that the function _ZdaPvm is in libopencv_core.so.2.4:

$ ldd lk.mexa64 
    linux-vdso.so.1 =>  (0x00007ffcaf7f2000)
    libopencv_core.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 (0x00007f8fc93fa000)
    libopencv_imgproc.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4 (0x00007f8fc8f7c000)
    libopencv_video.so.2.4 => /usr/lib/x86_64-linux-gnu/libopencv_video.so.2.4 (0x00007f8fc8d2c000)
    libmx.so => not found
    libmex.so => not found
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8fc89a2000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8fc8699000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8fc82d2000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8fc80b6000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8fc7e98000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8fc7c90000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f8fc7a1c000)
    libtbb.so.2 => /usr/lib/x86_64-linux-gnu/libtbb.so.2 (0x00007f8fc77df000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8fc75c8000)
    /lib64/ld-linux-x86-64.so.2 (0x000055ddc6557000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f8fc739e000)
    libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007f8fc719b000)
    libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007f8fc6f96000)
    libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f8fc6d8f000)
    libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007f8fc6b8c000)
    libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f8fc695d000)
    libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f8fc674b000)
    libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f8fc6548000)
    libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f8fc6340000)
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f8fc613e000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f8fc5e05000)
    libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f8fc5bec000)
    libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f8fc59e7000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f8fc57c5000)
    libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f8fc55bd000)
    libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f8fc53ac000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8fc51a8000)
    libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f8fc4fa4000)
    libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f8fc4d9e000)
 $ nm -D /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 | grep _ZdaPvm
                 U _ZdaPvm
BadWindshield commented 6 years ago

I created a script to launch MATLAB, since I read that MATLAB R2017a doesn't work well with gcc 6. Everything is Ok now.

#!/bin/bash
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 \
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu \
matlab $@
BadWindshield commented 6 years ago

Resolving the ticket.