Doppia编译

一.安装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 库

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.下载脚本文件

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.youkuaiyun.com/tingyue_/article/details/45618413
[2]http://blog.youkuaiyun.com/tingyue_/article/details/45619213
[3]http://blog.youkuaiyun.com/tingyue_/article/details/45619297
[4]http://blog.youkuaiyun.com/tingyue_/article/details/45619745
[5]http://klqulei23.blog.163.com/blog/static/13231533720162106358909/
[6]http://blog.youkuaiyun.com/hwl56789/article/details/46927395
[7]http://blog.youkuaiyun.com/u010333076/article/details/50637294

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun-Eve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值