Ubuntu16.04+Tensorlow+caffe+opencv3.1+theano部署

1.首先安裝Ubuntu16.04系統.python

2.安裝顯卡驅動
在官網上下載最新的NVIDIA-Linux-x86_64-375.26.run驅動.而後
Ctrl+Alt+F1進入控制檯,輸入linux

sudo service lightdm stop
sudo sh NVIDIA-Linux-x86_64-375.26.run

安裝驅動的時候會冒出一個 The distribution-provided pre-install script failed! Are you sure you want to continue?這樣的錯誤提示,直接無視下一步就能夠了.
安裝事後c++

sudo service lightdm start

切換回桌面.git

安裝事後用nvidia-smi命令驗證一下是否是安裝成功,若是重啓以後沒有黑屏的話那麼恭喜你安裝成功了.github

3.安裝cuda
安裝cuda最新的驅動cuda_8.0.44_linu.run, 這個驅動聽說解決了gcc-5版本的坑, 由於個人ubuntu最新自帶的是gcc-5.4, 也沒有降級去驗證. 只是沒遇到這樣的坑,我想應該是解決了.
以後就是配置CUDA環境變量:ubuntu

sudo gedit ~/.bashrc

在bashrc文件末尾加上:bash

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

接着:app

sudo gedit /etc/profile

在文件末尾加上:curl

export PATH = /usr/local/cuda/bin:$PATH

最後建立conf文件:ide

sudo gedit /etc/ld.so.conf.d/cuda.conf

在conf文件里加入如下內容:

/usr/local/cuda/lib64

執行

sudo ldconfig

這一切完成以後運行一下cuda的例子看看能不能成功運行.

4.CUDNN
下載cuDNN v5.1 Library for Linux並解壓.
進入cudnn5.1解壓以後的include目錄,在命令行裏把cudnn的頭文件和庫文件複製到相應的目錄下:

sudo cp ./include/cudnn.h /usr/local/cuda/include/
sudo cp ./lib64/lib* /usr/local/cuda/lib64/

接着進入/usr/local/cuda/lib64/ 這個目錄下建立軟鏈接:

sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

這樣cudnn就算是安裝好了.

接下來的就要討論一些容易入坑的問題了.

5.caffe安裝
爲何我要先安裝caffe? 由於caffe和tensorflow有一些共同依賴的庫.而且用sudo apt-get安裝的依賴庫的版本都不同.
例如caffe的protobuf庫是3.0.0的是用gcc5編譯的, 而tensorflow的是3.0.1的,而且是用gcc4的版本編譯的,因此若是先安裝了tensorflow後會出現各類稀奇古怪的問題.
解決這個問題有兩個途徑:
(1). 自行手動下載和編譯boost, protobuf, gflags, glog等庫;而後python安裝protobuf等文件

.........................protobuf......................

cd ~ git clone https://github.com/google/protobuf.git 
sudo apt-get install autoconf automake libtool curl  unzip 
cd protobuf 
./autogen.sh 
./configure --prefix=/usr/local
make 
make check 
sudo make install 
sudo ldconfig # refresh shared library cache.

.........................glog..........................

modify CMakeLists.txt
add this to CMakeLists:
set(BUILD_SHARED_LIBS TRUE)
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

.........................gflags.........................

modify CMakeLists.txt
add this to CMakeLists:
set(GFLAGS_BUILD_SHARED_LIBS TRUE)
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

(2).使用系統自帶的python庫編譯caffe, anaconda安裝tensorflow, 這樣兩種庫就不會打架了,反作用就是必須用多版本的python, 網上有pydev的方法能夠解決這個問題.
以上兩種方法親測有效.可是我更傾向於第一種,並且我本身的機器也是按照第一種方法安裝的.

A.安裝Anaconda2.
下載和安裝Anaconda2.並替換掉libstdc++,libgomp這幾個4.x版本的gcc編譯動態庫軟鏈接 :

rm -rf /home/your_path/anaconda2/lib/libstdc++.so
rm -rf /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so
rm -rf /home/your_path/anaconda2/lib/libstdc++.so.6
rm -rf /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /home/your_path/anaconda2/lib/libstdc++.so.6
ln -s /home/your_path/anaconda2/lib/libstdc++.so.6 /home/your_path/anaconda2/lib/libstdc++.so
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6
ln -s /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so.6 /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libstdc++.so
rm -rf /home/your_path/anaconda2/lib/libgomp.so
rm -rf /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libgomp.so
rm -rf /home/your_path/anaconda2/lib/libgomp.so.1
rm -rf /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libgomp.so.1
ln -s /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0 /home/your_path/anaconda2/lib/libgomp.so.1
ln -s /home/your_path/anaconda2/lib/libgomp.so.1 /home/your_path/anaconda2/lib/libgomp.so
ln -s /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0 /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libgomp.so.1
ln -s /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libgomp.so.1 /home/your_path/anaconda2/pkgs/libgcc-4.8.5-2/lib/libgomp.so

B.以後就是安裝caffe安裝的依賴項.

sudo apt-get install libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev liblmdb-dev libopencv-dev libopenblas-dev liblapack-dev libatlas-base-dev

C.按照官方的要求修改makefile.
https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide

D編譯caffe.

6.編譯opencv3.1
A.首先安裝opencv依賴項

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libtbb-dev
sudo apt-get install libatlas-base-dev gfortran

B.編譯opencv

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/your_path/opencv3 -D PYTHON_INCLUDE_DIR=/home/your_path/anaconda2/include/python2.7/ -D PYTHON_INCLUDE_DIR2=/home/your_path/anaconda2/include/python2.7  -D PYTHON_LIBRARY=/home/your_path2/anaconda/lib/libpython2.7.so -D PYTHON_PACKAGES_PATH=/home/your_path/anaconda2/lib/python2.7/site-packages/ -D BUILD_EXAMPLES=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D PYTHON2_LIBRARY=/home/your_path/anaconda2/lib/libpython2.7.so -D BUILD_opencv_python3=OFF -D BUILD_opencv_python2=ON ..

注意最後是空格加兩點

7.安裝theano
這個比較簡單,直接sudo apt-get theano就安裝了

8.安裝Tensorflow由於以前已經安裝較高且較新的protobuf之類的依賴庫, 因此tensorflow安裝時不會替換更新一點的protobuf, 所以安裝後不會出現打架的狀況.

相關文章
相關標籤/搜索