Closed holesond closed 11 months ago
I also tried a release build, cmake -DCMAKE_BUILD_TYPE=Release ..
, which reduced the execution time on medical robot to 210 ms. That is better than the 470 ms but still far from 20.5 ms.
OK, I have found what caused the long execution times. The M3T multi-body tracker uses OpenGL during tracking at least in the silhouette_renderer module. I was running evaluate_rtb_dataset
on a remote computer via an ssh shell with X forwarding. That forced OpenGL to rely on a software render (driver swrast_dri.so) instead of a hardware renderer (integrated or discrete GPU), resulting in considerably slower computation.
When I launch the program from a desktop environment directly on the computer, I get execution times around 14 ms on the medical_robot/test_easy/000000 sequence, which is great. :-)
Although the articulated object tracking is very accurate, I failed to reproduce the expected 20.5 ms runtime of M3T (Mb-ICG) on the medical_robot object (sequence medical_robot/test_easy/000000) of the rtb_dataset. The
evaluate_rtb_dataset
program reported 470 ms execution_time on my PC (Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz, 64GB RAM, GPU NVIDIA GeForce RTX 2080 Ti):I have modified only the
evaluate_rtb_dataset.cpp
source file as follows to let it run on the medical_robot/test_easy/000000 sequence only:I have built M3T with the following cmake configuration:
Note that I have built M3T with OpenCV with CUDA support (cudafeatures2d). Nevertheless, the
evaluate_rtb_dataset
program does not use the GPU (according to nvidia-smi). It utilizes only a single CPU core when tracking the medical robot.What should I do to approach the 20 ms runtime presented in Table 3 of the paper "A Multi-body Tracking Framework - From Rigid Objects to Kinematic Structures"?