具有共享 Dlib 库的 C++ 程序在 Ubuntu 14.04 上速度极慢

elH*_*Ham 1 c++ shared-libraries dlib

根据 Davis Kings 在该问题中的回答:Create a Shared Library for dlib,我为 Dlib 创建了共享库,并将它们链接到一个使用 Dlib 面部检测来检测相机图片中的面部的程序,使用以下命令:

cd dlib-19.0/dlib
mkdir build
cd build
cmake ..
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

还有-ldlib选项。

我可以编译并执行该程序,但是面部检测速度非常慢。

我在 Windows 上使用 Visual Studio 2013 尝试了相同的程序。当我使用调试模式时,面部检测也非常慢,但在发布模式下运行得很好。所以我想,共享库也可能处于调试模式,并尝试使用以下命令强制它们处于发布模式:

cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release 
sudo make install
Run Code Online (Sandbox Code Playgroud)

但结果却和之前一样。

有谁有一个想法,原因可能是什么,它这么慢?

感谢您的帮助。

run*_*ani 5

我想分享我的经验。^^

您应该使用-O3-mavx选项来加速。

-O3编译选项对于加速至关重要)

我为 dlib 创建了一个共享库,如上所述。

并使用 dlib 共享库编译了web_face_pose_ex.cpp

操作系统Ubuntu 14.04

dlib版本19.0.0

输入分辨率:640 x 480 网络摄像头 (Logitech C920)

  1. 我导出到下面的路径。

    $ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    
    Run Code Online (Sandbox Code Playgroud)
  2. 没有-O3选项:时间:2674.25 ms

    g++ -o my_web_face webcam_face_pose_ex.cpp -lpthread -lX11 -lblas -llapack `pkg-config --cflags --libs opencv dlib-1`
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用 -O3 选项:时间:55 ms

    g++ -o -O3 my_web_face webcam_face_pose_ex.cpp -lpthread -lX11 -lblas -llapack `pkg-config --cflags --libs opencv dlib-1`
    
    Run Code Online (Sandbox Code Playgroud)
  4. 同时使用-O3-mavx(使用 AVX):时间:45 ms

    g++ -o -O3 -mavx my_web_face webcam_face_pose_ex.cpp -lpthread -lX11 -lblas -llapack `pkg-config --cflags --libs opencv dlib-1`
    
    Run Code Online (Sandbox Code Playgroud)