2016年9月9日 星期五

ubuntu 14.04 安裝 Caffe + CUDA 7.5 + Opencv 3.1 + Anaconda python

Ubuntu 14.04 + CUDA 7.5 + Opencv 3.1 + Anaconda python

參考

Caffe官網
Ubuntu 14.04上安装caffe
Caffe學習筆記2--Ubuntu 14.04 64bit 安裝Caffe(GPU版本)
坑爹的Caffe + Ubuntu14.04 + NVIDIA 环境配置
Caffe搭建:Ubuntu14.04 + CUDA7.5 + opencv3.1+python3.5
从零安装 Caffe (Ubuntu 14.04)
Caffe + Ubuntu 15.04 + CUDA 7.5 新手安装配置指南
How to install caffe on ubuntu 14.04(without GPU) and python interface
Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn

配置:
GPU: Nvidia GeForce GTX 960
CPU: i7

Caffe安裝需要依賴:
- CUDA is required for GPU mode.
- BLAS via ATLAS, MKL, or OpenBLAS.
- Boost >= 1.55
- protobuf, glog, gflags, hdf5

一. 安裝Caffe需要依賴包
$ sudo apt-get install build-essential   # basic requirement
安裝protobuf, leveldb, snappy, opencv, hdf5, protobuf compiler
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
安裝boost
$ sudo apt-get install --no-install-recommends libboost-all-dev
安裝gflags, glogs ,lmdb
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

二. 安裝CUDA7.5

2.1 先確認配置環境

2.1.1確認有GPU支援CUDA
$ lspci | grep VGA


這裡是GeForce GTX 960

可到CUDA GPUs去驗證,看相容版本




2.1.2 確定Linux版本支持CUDA

make sure that it is a x86_64
看x86_64這項,確保是x86架構,64bit系統
$ uname -m && cat /etc/*release


2.1.3 確定系統已經安裝了GCC
$ gcc --version



裝nvidia driver:
參考這篇來裝nvidia driver
How to install the latest Nvidia drivers on Ubuntu 14.04 Trusty Tahr
自己的安裝步驟 ubuntu14.04 安裝nvidia顯卡driver

Note.
參考 坑爹的Caffe + Ubuntu14.04 + NVIDIA 环境配置 
裏面提到在安裝cuda的時候,nvidia driver也會一起裝進去了,可以不用先裝nvidia driver
在第二次安裝caffe時我直接安裝cuda,這次安裝cuda中途就沒再報錯了,直接安裝成功
如果自己裝nvidia driver的話可能要小心版本問題
不過沒照裏面方法用.run方法裝,還是用deb的方法,之後可能要再來一次加入no-opengl-libs了.
或者看看有沒有辦法直接調整成用內顯顯示,獨顯運算
不過應該不用禁用nouveau跟關掉lightdm

2.2 安裝CUDA7.5

https://developer.nvidia.com/cuda-downloads下載對應版本CUDA安裝包
這裡選deb(local)方法



依照官方指令安裝cuda
$ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda

$ sudo reboot

2.3 安裝cuDNN

下載cuDNN https://developer.nvidia.com/rdp/cudnn-download (註冊後下載)
這裡選擇 cuDNN v4 Library for Linux


拷貝cuDNN庫文件到/usr/local/目錄下
$ tar -zxvf cudnn-7.0-linux-x64-v4.0-prod.tgz
$ cd cuda
$ sudo cp include/cudnn.h /usr/local/include/
$ cd lib64
$ sudo cp lib* /usr/local/lib/ 
$ cd /usr/local/lib/
$ sudo chmod +r libcudnn.so.4.0.7
$ sudo ln -sf libcudnn.so.4.0.7 libcudnn.so.4
$ sudo ln -sf libcudnn.so.4 libcudnn.so
$ sudo ldconfig

2.4 設置環境變數

設置環境變數看到兩種方法

(1)
將下兩行加到~/.bashrc裡
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
$ source ~/.bashrc
or
放在系统配置文件profile裡面
$ sudo vim /etc/profile
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
$ source /etc/profile

(2)
在/etc/profile中添加CUDA環境變數
$ sudo vim /etc/profile
添加内容:
PATH=/usr/local/cuda/bin:$PATH
export PATH
執行下列命令, 使環境變數立即生效
$ source /etc/profile
同时需要添加lib庫路徑:
在 /etc/ld.so.conf.d/ 加入文件 cuda.conf
$ vim  /etc/ld.so.conf.d/ cuda.conf
内容如下:
/usr/local/cuda/lib64 
執行下列使之立即生效
$ sudo ldconfig

2.5 安裝cuda samples確認驅動及顯卡安裝成功

進入/usr/local/cuda/samples,執行下列來build samples
$ sudo make all -j4
邊後呈現這樣(不確定有編譯完??)


Note. 第二次安裝caffe,跑完的結果,這應該才是有成功安裝完吧


全部編譯完成後,進入 samples/bin/x86_64/linux/release,執行deviceQuery
$ ./deviceQuery
如果出現顯卡信息,則驅動及顯卡安裝成功,結果如下:


三. 安装Intel MKL,openBlas 或Atlas:

這裡安裝Atlas,caffe默認使用的,不需額外配置
$ sudo apt-get install libatlas-base-dev

四. 安装caffe所需要的Python环境Anaconda

https://repo.continuum.io/archive/下載anaconda
這裡下載Anaconda2-4.0.0-Linux-x86_64.sh

執行
$ bash Anaconda2-4.0.0-Linux-x86_64.sh
依照提示安裝anaconda
安裝完顯示:
環境變數在選[yes]後,自動加入到~/.bashrc裡

$ sudo reboot

五. 安裝OpenCV 3.1.0

官網下載
首先安裝必需的安裝包
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
從官網下載Opencv 3.1
解壓縮
$ unzip opencv-3.1.0.zip
也可在多裝opencv_contrib, 下載opencv_contrib
解壓縮 $ unzip opencv_contrib-master.zip
但這部份我出錯了,就暫時先不裝opencv_contrib
$ cd  opencv-3.1.0/
$ mkdir release
$ cd release
$ cmake -DBUILD_TIFF=ON  -DENABLE_AVX=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_IPP=ON -DWITH_TBB=ON -DWITH_EIGEN=ON -DWITH_V4L=ON  -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -DPYTHON_EXECUTABLE=$(which python) -DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..
Note. 如果裝opencv_contrib, cmake要在多加入opencv_contrib的資訊

Opencv配置


編譯按裝
$ make -j8
給他一點時間..

$ sudo make install


安裝完可去嘗試跑個簡單測試,看opencv有沒有安裝成功

CMakeLists.txt內容:
cmake_minimum_required(VERSION 2.8)
project(main)
find_package(OpenCV REQUIRED)
add_executable(main main.cc)
target_link_libraries(main ${OpenCV_LIBS})

六. 編譯Caffe

下載Caffe
$ unzip caffe-master.zip
$ cd caffe-master
$ cd python
先安裝python-pip
$ sudo apt-get install python-pip
執行
$ for req in $(cat requirements.txt); do pip install $req; done
跑完部份截圖


進入caffe-master目錄,複製一份Makefile.config.example
$ cp Makefile.config.example Makefile.config
修改Makefile.config中的路徑,將默認python的地方註解掉,改成anoconda的路徑,並開啟cuDnn以及Opencv3的支持
修改的地方有:

開啟cuDnn

Opencv3

anoconda 路徑

python 路徑


編譯
$ make all -j8

$ make test -j8 
 
$ make runtest -j8



Caffe的python接口配置
$ make pycaffe -j8

$ make distribute


配置路徑:
將下兩行寫入~/.bashrc 裡
export LD_LIBRARY_PATH=/home/ss/anaconda2/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/home/ss/Downloads/caffe-master/distribute/python:$PYTHONPATH

七. 使用mnist測試

進入caffe-master裡
$ sh data/mnist/get_mnist.sh
$ sh examples/mnist/create_mnist.sh
$ sh examples/mnist/train_lenet.sh
跑完就代表,目前裝的是成功拉


Note.
幾個在安裝過程小小的問題

在 $ sudo apt-get install cuda 報錯了


看到了錯誤中文翻譯,稍微看一下
Unmet dependencies for libcheese-gtk23 and libcheese7 on 14.04.2
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
unity-control-center : 依赖: libcheese-gtk23 (>= 3.4.0) 但是它将不会被安装
依赖: libcheese7 (>= 3.0.1) 但是它将不会被安装
E: 错误,pkgProblemResolver::Resolve 发生故障,这可能是有软件包被要求保持现状的缘故。

參考網址#10的解法
$ sudo apt-get install libglew-dev libcheese7 libcheese-gtk23 libclutter-gst-2.0-0 libcogl15 libclutter-gtk-1.0-0 libclutter-1.0-0
再次 $ sudo apt-get install cuda
就可安裝了.

這裡reboot後又出錯了,應該是沒抓到intel內顯
在裝cuda時可能把intel某些東西蓋掉了
重新裝intel顯卡驅動
$ sudo apt-get install --reinstall xserver-xorg-core  xserver-xorg-video-intel xserver-xorg-video-glamoregl libgl1-mesa-glx
就可再用內顯顯示



裝完Anaconda python時,要記得reboot
不然有些python路徑會讀不到
配置opencv會出現如圖最後幾行PYTHON_PACKAGES_PATH的warning
在執行$ for req in $(cat requirements.txt); do pip install $req; done時也會有python相關error出現




Error
$ make runtest -j8
 
參考http://stackoverflow.com/questions/12335848/opencv-program-compile-error-libopencv-core-so-2-4-cannot-open-shared-object-f解答
$ locate libopencv_core.so.3.1
找出 libopencv_core.so.3.1位置

在 /etc/ld.so.conf.d 加入 opencv.conf 檔案
$ sudo vim /etc/ld.so.conf.d/opencv.conf
寫入
/home/ss/Downloads/opencv-3.1.0/release/lib/
$ sudo ldconfig -v
就ok了



Error:
$ make runtest -j8
出現錯誤:lidhdf5_hl.so.10 cannot open...

solve:
參考https://github.com/BVLC/caffe/issues/1463
$ locate libhdf5_hl

是放在 /usr/lib/x86_64-linux-gnu/ 底下
$ cd /usr/lib/x86_64-linux-gnu/
$ ls | grep libhdf5

我的是libhdf5.so.10沒有找到
$ sudo ln -s libhdf5.so.7 libhdf5.so.10
$ sudo ln -s libhdf5_hl.so.7 libhdf5_hl.so.10



Error:
在 python import cv2 的時候


應該是 cv2.so 沒抓到
$ locate cv2.so
發現是在/home/ss/Downloads/opencv-3.1.0/release/lib/cv2.so裡

(為什麼我裝opencv沒到/usr/local/lib/python2.7/site-packages裡呢???)

添加路徑到 PYTHONPATH 裡
加下列加到 ~/.bashrc 裡
export PYTHONPATH=/home/ss/Downloads/opencv-3.1.0/release/lib:$PYTHONPATH



Error:
在 import caffe 時
ImportError: libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory

$ locate libcaffe.so.1.0.0-rc3



export LD_LIBRARY_PATH=/home/ss/Downloads/caffe-master/distribute/lib:$LD_LIBRARY_PATH
加到 ~/.bashrc 裡
$ source .bashrc
就可以了
不過會load很久,應該有別的好的解決辦法 ???

希望不要在有意外R Orz

3 則留言:

  1. 我在make pycaffe -j8
    錯誤了
    wjj@wjj-Veriton-P530-F2:~/caffe-master$ make pycaffe -j8
    touch python/caffe/proto/__init__.py
    CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp
    PROTOC (python) src/caffe/proto/caffe.proto
    python/caffe/_caffe.cpp:1:52: fatal error: Python.h: No such file or directory
    #include // NOLINT(build/include_alpha)
    ^
    compilation terminated.
    make: *** [python/caffe/_caffe.so] Error 1

    請問您有遇到嗎

    回覆刪除
    回覆
    1. 另外我發現
      cd release
      然後 cmake之後 我的python2的libraries 沒有顯示路徑

      刪除
  2. How to Get to Jackpot King: Live Dealers in Michigan
    That's only possible because online sports betting is now 부천 출장안마 officially live in 김천 출장안마 Michigan. 충청남도 출장마사지 This means 안성 출장샵 that there are many betting sites 수원 출장안마 and sites

    回覆刪除