Doppia编译

    xiaoxiao2021-03-25  142

    一.安装CUDA。参考链接1

    1.安装CUDA 前,进行三步验证工作

    验证电脑显卡是否支持GPU 编程,在终端(Ctrl+Alt+T,打开终端)输入 lspci | grep -i nvidia

    它会给出你的显卡信息,上http://developer.nvidia.com/cuda-gpus 查看你的显卡 是否在CUDA支持产品之列。

    查看电脑linux 版本,终端输入 uname -m && cat /etc/*release

    返回系统信息后,官网https://developer.nvidia.com/cuda-downloads 下载符合自己 系统的CUDA 版本。(建议下载第二个离线安装包.deb)

    查看编译器版本,终端输入 gcc -v g++ -v

    2.卸载驱动

    删除旧NVIDIA 驱动,卸载命令: sudo apt-get --purge remove nvidia-* sudo apt-get purge remove xserver-xorg-video-nouveau 接下来重启电脑,进入系统后,按快捷键Ctrl+Alt+F1 切换到tty1 文字输入界面。 输入账号和密码后,输入 sudo stop lightdm

    关闭桌面管理。

    3.正式安装CUDA

    关闭桌面管理后。接下来正式安装CUDA。输入下列命令,将CUDA 安装到本地仓库 (<>中的内容根据自己下载的CUDA 版本和Ubuntu系统做修改,当然,如果你的安装包不在Home 下,记得切换目录) sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb 更新本地仓库 sudo apt-get update 最后安装CUDA 和显卡驱动(CUDA 默认路径:/usr/local/cuda) sudo apt-get install cuda 打开桌面管理后,重启电脑 sudo start lightdm

    4.验证CUDA 是否安装成功

    进入系统后,设置环境变量,不然系统找不到CUDA 的执行文件“nvcc” 在/etc/profile 文件末尾添加下列信息。 export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH 这时,CUDA 的安装和配置工作已经完成。但为了验证CUDA 是否安装成功,我们还需以下操作: 查看CUDA 编译器版本 nvcc –V

    返回类似以下信息 nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2015 NVIDIA Corporation Built on Mon_Feb_16_22:59:02_CST_2015 Cuda compilation tools, release 7.5, V7.5.27

    5.编译CUDA 示例代码

    进入usr/local/cuda-7.5/samples 目录,编译示例 sudo make all -j8 编译完成后,进入目录samples/bin/x86_64/linux/release,终端输入 sudo ./deviceQuery 如果出现类似以下显卡信息,那么CUDA 安装成功。 请记住显示信息中CUDA Capability Major/Minor version number: 3.5 这一行的参数 显卡不同参数可能不同,后面需要用到这个参数。 ./deviceQuery Starting… CUDA Device Query (Runtime API) version (CUDART static linking) … deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = 2, Device0 = GeForce GT 640, Device1 = Quadro 600 Result = PASS现在可以运行release 里的例子,来体验一下CUDA 的功能。 sudo ./bilateralFilter

    得到图片bilateralFilter 至此,doppia 环境配置的第一部分“CUDA 的安装”完成了。

    二.boost 库安装。参考链接2

    1.下载boost 库

    下载地址:http://www.boost.org/,下载合适boost 版本。

    2.安装依赖库

    apt-get install mpi-default-dev libicu-dev python-dev libbz2-dev

    3.编译boost库

    下载得到boost1_58_0.tar.gz 后,解压文件得到boost_1_58_0修改user-config.jam 文件 (在/boost/tools 下搜索user-config.jam),在user-config.jam 文件最后添加一行using mpi ; #注意mpi 后面有一个空格下面开始编译boost 库,终端输入指令得到b2 和bjam. sudo ./bootstrap.sh sudo ./b2 -a -sHAVE_ICU=1

    -a 参数,代表重新编译,-sHAVE_ICU=1 代表支持Unicode/ICU它需要大概半小时的时间。

    4.安装boost 库

    安装boost 库,输入 sudo ./b2 install

    如果以上几步都没有报错的话,boost 库就算安装完成,可以去/usr/local/include/目录下看是否有生成boost 文件夹验证一下。

    三.编译安装opencv 库。参考链接3

    1.下载脚本文件

    下载脚本文件,网址https://github.com/jayrambhia/Install-OpenCV 解压缩后,进入Ubuntu/2.4,有不同版本的opencv 脚本文件。这里选择opencv2.4.10。

    2.修改opencv2_4_10.sh 文件

    之前执行的./deviceQuery 后得到的显卡信息 CUDA Capability Major/Minor version number: 3.5 这里修改opencv2_4_10.sh 就要根据这个参数。把脚本文件中 cmake -D CUDA_ARCH_BIN=3.2 -D CUDA_ARCH_PTX=3.2

    改成和你自己显卡相匹配的值,比如这里,我们把它改成

    cmake -D CUDA_ARCH_BIN=3.5 -D CUDA_ARCH_PTX=3.5

    (注意:在文件中make -j 这一行改为make -j2 否则可能造成电脑死机)

    3.编译安装opencv

    在修改好opencv_2_4_10 脚本后,执行 sudo ./opencv2_4_10.sh

    程序会自动帮安装依赖库及opencv,需要几十分钟。

    四.安装其他库、编译和运行doppia。参考链接4,5,6

    1.安装其他库

    安装一些库(libSDL、protobuf 等)的安装 安装libSDL,我们终端输入 apt-cache search libsdl

    选择其中的libsdl1.2-dev 进行安装。

    sudo apt-get install libsdl1.2-dev

    安装protobuf 库安装命令为:

    Sudo apt-get install libprotobuf-dev libprotoc-dev python-protobuf protobuf-compiler

    2.配置文件修改。参考链接5,6

    在doppia/src/helpers/data/DataSequence.hpp 头文件中,在 #include "DataSequenceHeader.pb.h" #include <google/protobuf/io/zero_copy_stream_impl.h>

    两行之间添加一行新的引用,如下,

    #include "DataSequenceHeader.pb.h" #include <google/protobuf/io/coded_stream.h> #include <google/protobuf/io/zero_copy_stream_impl.h> doppia/src/objects_detection/SoftCascadeOverIntegralChannelsFastFractionalStage.cpp文件开头添加一行引用 #include<iostream> 修改/doppia 文件夹common_settings.cmake 文件342 行,/home/gy 改为自己电脑的 路径。 elseif(${HOSTNAME} STREQUAL "the_name_of_your_machine") message(STATUS "the_name_of_your_machine") # start with an empty section, and see what fails as you go through the readme.text instructions option(USE_GPU "Should the GPU be used ?" TRUE) set(CUDA_BUILD_EMULATION OFF CACHE BOOL "enable emulation mode") set(CUDA_BUILD_CUBIN OFF) set(local_CUDA_CUT_INCLUDE_DIRS "/home/gy/NVIDIA_CUDA-7.5_Samples/common/inc") set(local_CUDA_CUT_LIBRARY_DIRS "/home/gy/NVIDIA_CUDA-7.5_Samples/common/lib") set(local_CUDA_LIB_DIR "/usr/local/cuda-7.5/lib64") set(cuda_LIBS "cuda")

    在384 行左右将

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ")

    修改为

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -DBOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT=1")

    3.检查编译环境

    切换到doppia 目录下,运行 sudo sh ./generate_protocol_buffer_files.sh

    protobuf 通过doppia-v2 检测的返回信息为 + cd src/objects_detection/ … + echo End of game. Have a nice day! End of game. Have a nice day!

    4.编译运行doppia下objects_detection

    切换到objects_detection 目录下 cd doppia/src/applications/objects_detection 编译objects_detection 项目 cmake -D CMAKE_BUILD_TYPE=RelWithDebInfo . && make -j2

    编译成功。

    选择模式

    cvpr2012 行人检测

    cmake . && make -j2 && OMP_NUM_THREADS=4 ./objects_detection -c cvpr2012_very_fast_over_bahnhof.config.ini --gui.disable false

    eccv2014 人脸检测

    cmake . && make -j2 && ./objects_detection -c eccv2014_face_detection_pascal.config.ini --gui.disable false

    最后运行成功你会看到一个简短地video 或图片,以及下面这样的信息 Warning: At … Average objects detection speed per iteration 29.36 [Hz] (in the last 10 iterations) End of game, have a nice day.

    如何使用doppia 进行人脸检测请参考链接7,运行detections_to_caltech.py 脚本, 首先切换到detections_to_caltech.py 目录下, cd /home/gy/doppia/tools/objects_detection

    运行detections_to_caltech.py 脚本-i 后面是输入文件路径,-o 输出文件路径。

    python detections_to_caltech.py -i /home/gy/doppia/src/applications/objects_detection/2016_06_17_57397_recordings /detections.data_sequence -o /home/gy/doppia/src/applications/objects_detection/2016_06_17_57397_recordings/data

    参考

    [1]http://blog.csdn.net/tingyue_/article/details/45618413 [2]http://blog.csdn.net/tingyue_/article/details/45619213 [3]http://blog.csdn.net/tingyue_/article/details/45619297 [4]http://blog.csdn.net/tingyue_/article/details/45619745 [5]http://klqulei23.blog.163.com/blog/static/13231533720162106358909/ [6]http://blog.csdn.net/hwl56789/article/details/46927395 [7]http://blog.csdn.net/u010333076/article/details/50637294

    注:特别感谢以上文章的作者,该文章也是在以上文章的基础上综合整理而来。

    转载请注明原文地址: https://ju.6miu.com/read-24439.html

    最新回复(0)