一.安装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.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
注:特别感谢以上文章的作者,该文章也是在以上文章的基础上综合整理而来。