caffe+ CUDA8.0 编译opencv3.3.0

一、安装显卡驱动

Ubuntu16.04.3在系统设置里可以直接安装NVIDIA驱动。

System Settings ->Software & Updates->Additonal Drivers->NVIDIA Corporation->Using NVIDIA binary driver ……

选择好之后点击Apply Changes,如果提示需要Secure boot,则按提示设置密码,之后重启时注意选择Secure boot, 并按提示输入密码。重启完成后,驱动便安装完毕。


二 、安装cuda8.0

虽然cuda9.0已经发布,但很多类库还不支持,所以推荐安装cuda8.0。
在NVIDIA官网下载cuda8.0,注意下载run文件格式。地址:https://developer.nvidia.com/cuda-80-ga2-download-archive
cuda需要安装OpenGL
[plain]  view plain  copy
  1. sudo apt-get install build-essential libgl1-mesa-dev  
  2. sudo apt-get install freeglut3-dev  
  3. sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev  

终端输入上述命令即可。
进入下载好的.run文件的目录,执行
[plain]  view plain  copy
  1. sudo sh cuda_8.0.44_linux.run  

安装cuda时注意不要安装驱动,其他选择yes即可。
配置环境变量:
[plain]  view plain  copy
  1. sudo vim ~/.bashrc  
  2. export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}  
  3. export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}  
  4. :wq  
  5. source ~/.bashrc  
创建链接文件:
sudo gedit /etc/ld.so.conf.d/cuda.conf
在打开的文件中添加如下语句:
/usr/local/cuda/lib64
然后执行
sudo ldconfig
使链接立即生效。

三、使用cudnn

下载cudnn,需要注册NVIDIA账号,地址https://developer.nvidia.com/rdp/cudnn-download
下载完cudnn5.0之后进行解压,cd进入cudnn5.1解压之后的include目录,在命令行进行如下操作:
sudo cp cudnn.h /usr/local/cuda/include/    #复制头文件
再将cd进入lib64目录下的动态文件进行复制和链接:
sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5  #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so      #生成软链接

四、安装anaconda3

官网下载anaconda3,地址:https://www.continuum.io/downloads/
下载好后执行:
[plain]  view plain  copy
  1. bash ~/Downloads/Anaconda3-5.0.1-Linux-x86_64.sh  

五、编译安装opencv3.3.0

安装依赖:
[html]  view plain  copy
  1. sudo apt-get install --assume-yes libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip  
  2.   
  3. sudo apt-get install build-essential cmake git  
  4.   
  5. sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip  
下载opencv并解压,在解压后的文件夹中:
[plain]  view plain  copy
  1. mkdir build   #新建一个build文件夹,编译的工程都在这个文件夹里  
  2. cd build  
  3. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D BUILD_NEW_PYTHON_SUPPORT=ON -D PYTHON_EXECUTABLE=/path/to/anaconda3/bin/python3 -DPYTHON_INCLUDE_DIR=/path/to/anaconda3/include/python3.6m -DPYTHON_LIBRARY=/path/to/anaconda3/lib/libpython3.6m.so -DPYTHON_NUMPY_INCLUDE_DIRS=/path/to/anaconda3/lib/python3.6/site-packages/numpy/core/include ..  
注意把PYTHON_EXECUTABLE,PYTHON_INCLUDE_DIR,PYTHON_LIBRARY,PYTHON_NUMPY_INCLUDE_DIRS中的目录换成自己安装的anaconda的目录。
然后:
[plain]  view plain  copy
  1. make -j4  
  2. #开始编译  
  3. sudo make install  
  4. sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'  
  5. sudo ldconfig  

六、编译caffe

安装依赖:
[html]  view plain  copy
  1. sudo apt-get update   
  2. sudo apt-get install -y build-essential cmake git pkg-config   
  3. sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler   
  4. sudo apt-get install -y libatlas-base-dev   
  5. sudo apt-get install -y libboost-all-dev   
  6. sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev   
  7. sudo apt-get install -y python-pip   
  8. sudo apt-get install -y python-dev   
  9. sudo apt-get install -y python-numpy python-scipy  
下载caffe
[plain]  view plain  copy
  1. git clone https://github.com/BVLC/caffe.git  //从github上git caffe  
然后
[plain]  view plain  copy
  1. cd caffe //打开到刚刚git下来的caffe   
  2. sudo cp Makefile.config.example Makefile.config   //将Makefile.config.example的内容复制到Makefile.config   
  3. //因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子   
  4. sudo vim Makefile.config //打开Makefile.config文件  
修改以下内容:
[html]  view plain  copy
  1. #取消以下注释  
  2. USE_CUDNN :1  
  3. OPENCV_VERSION :3  
  4. WITH_PYTHON_LAYER :1  
  5.   
  6. #将Python有关目录修改为  
  7. PYTHON_LIBRARIES :boost_python3 python3.6m      #这里需要建立boost_python3链接,方法见参考资料  
  8. ANACONDA_HOME := /path/to/anaconda3           #改成自己anaconda的路径  
  9. PYTHON_INCLUDE := $(ANACONDA_HOME)/include \  
  10.                 $(ANACONDA_HOME)/include/python3.6m \  
  11.                 $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include  
  12.   
  13. PYTHON_LIB := $(ANACONDA_HOME)/lib  
  14.   
  15. LINKFLAGS := -Wl,-rpath,$(ANACONDA_HOME)/lib  
  16.   
  17. #最后修改INCLUDE_DIRS,LIBRARY_DIRS  
  18. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial  
  19. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial  



[plain]  view plain  copy
  1. 然后修改makefile文件  
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)


然后再大概181行的地方做修改
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
替换为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui

之后
[plain]  view plain  copy
  1. make all -j4  
  2. make test -j4  
  3. make runtest  
  4. make pycaffe  

猜你喜欢

转载自blog.csdn.net/w113691/article/details/80583142