個(gè)人深度學(xué)習(xí)環(huán)境搭建(五):深度學(xué)習(xí)框架torch/caffe/tensorflow/mxnet安裝

<u>版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處</u>


其它相關(guān)文章:


** <big>未完待續(xù)……</big> **


說明:以下都是針對(duì)Ubuntu 16.04系統(tǒng)下的安裝。

一. opencv 3.1 安裝

官方網(wǎng)站關(guān)于opencv 3.1 的安裝說明偏少,官網(wǎng)上的教程還是2.3.4的。我們這里的安裝主要參考了以下網(wǎng)站:
Ubuntu 16.04 or 15.10 OpenCV 3.1 Installation Guide
Caffe + Ubuntu 15.04 + CUDA 7.5 新手安裝配置指南
ubuntu 16.04 編譯opencv3.1,opencv多版本切換
安裝過程主要包括依賴關(guān)系的安裝、編譯、安裝等三個(gè)過程。

1. 依賴關(guān)系

主要安裝以下內(nèi)容:

sudo apt-get install build-essential cmake git
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

2. 編譯

從官網(wǎng)下載源代碼,解壓縮并進(jìn)入文件夾。依次執(zhí)行以下指令。

mkdir build
cd build/
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 ..
make

其中,在cmake時(shí)可能會(huì)遇到以下問題——

(1)問題一:安裝過程中報(bào)“CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:27 (message)”,具體如下:

-- Found ZLIB: /home/machao/anaconda3/lib/libz.so (found version "1.2.8") 
-- Found OpenEXR: /usr/lib/x86_64-linux-gnu/libIlmImf.so
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:27 (message):
  The imported target "Qt5::Gui" references the file

     "/usr/lib/x86_64-linux-gnu/libEGL.so"

  but this file does not exist.  Possible reasons include:

  * The file was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and contained

     "/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"

  but not all the files it references.

Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:50 (_qt5_Gui_check_file_exists)
  /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:72 (_qt5gui_find_extra_libs)
  /usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake:158 (include)
  cmake/OpenCVFindLibsGUI.cmake:19 (find_package)
  CMakeLists.txt:535 (include)

解決方法:可能是鏈接錯(cuò)誤吧,參考here解決了問題。指令如下:

sudo rm /usr/lib/x86_64-linux-gnu/libEGL.so; sudo ln /usr/lib/x86_64-linux-gnu/libEGL.so.1 /usr/lib/x86_64-linux-gnu/libEGL.so

(2)問題二:編譯過程中在-- ICV: Downloading ippicv_linux_20151201.tgz...位置卡住很久,最后報(bào)錯(cuò)CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file): file DOWNLOAD HASH mismatch。
解決方法:這個(gè)應(yīng)該是由于下載包失敗導(dǎo)致的??梢允謩?dòng)下載原始文件并將壓縮包放置在路徑/home/machao/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e下。具體問題可以參考官方github上的這個(gè)issue(incorrect hash in cmake ippicv when installing #5973).

3. 安裝

編譯成功后,執(zhí)行以下指令進(jìn)行安裝

sudo make install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
sudo apt-get update

歐新宇寫了個(gè)安裝腳本,包含了上述所有過程,可以方便地進(jìn)行安裝,大家可以參考下。百度云盤鏈接: http://pan.baidu.com/s/1qX1uFHa 密碼:wysa

二. Torch 安裝

Torch的安裝非常簡(jiǎn)單,按照官方說明進(jìn)行就OK了。

# in a terminal, run the commands WITHOUT sudo
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh

安裝完成后添加PATH變量

# On Linux with bash
source ~/.bashrc

安裝完后建議安裝iTorch包,可以方便地進(jìn)行可視化編程。安裝方法如下:

sudo apt-get install libzmq3-dev libssl-dev python-zmq
git clone https://github.com/facebook/iTorch.git
cd iTorch
luarocks make

啟動(dòng)只需要在終端輸入ipython notebook即可。
官方的其它一些教程或者安裝包可以查看這個(gè)Cheatsheet.

三. caffe安裝

caffe是由BVLC開發(fā)的一個(gè)深度學(xué)習(xí)框架,主要由賈揚(yáng)清在UC Berkeley攻讀PhD期間完成(大神,膜拜!)。
安裝教程主要參考官網(wǎng)上的安裝教程以及Github上針對(duì)Ubuntu15.04和16.04的安裝教程.

1. 依賴關(guān)系

tar zxvf parallel_studio_xe_2016_update3.tar.gz 
cd parallel_studio_xe_2016_update3
sudo sh install_GUI.sh 或者 sudo  install.sh  #前者是圖形安裝界面

安裝過程中會(huì)要求輸入序列號(hào),這個(gè)key在注冊(cè)后官方會(huì)發(fā)郵件到注冊(cè)郵箱里,自己去查看。安裝完成后還需要進(jìn)行一些環(huán)境的配置:
在/etc/ld.so.conf.d/下新建文件intel_mkl.conf

sudo vim  /etc/ld.so.conf.d/intel_mkl.conf

然后在文件中添加以下代碼

/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64

添加完內(nèi)容后使用下面內(nèi)容使其生效:

sudo ldconfig

另外,如果選擇安裝ATLAS,在終端輸入sudo apt-get install libatlas-base-dev即可。

  • Boost
  • opencv, 這個(gè)的安裝在前面已經(jīng)講了,不再贅述。
  • 其它依賴項(xiàng)
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler   libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install --no-install-recommends libboost-all-dev

如果要使用Python接口的話需要裝以下依賴:

sudo apt-get install  the python-dev
sudo apt-get install -y python-pip
sudo apt-get install -y python-devsudo apt-get install -y python-numpy python-scipy # (Python 2.7 development files)
sudo apt-get install -y python3-devsudo apt-get install -y python3-numpy python3-scipy # (Python 3.5 development files)

2. 安裝配置與編譯

<big>(1)caffe下載</big>
首先從官方下載caffe源包,解壓到某個(gè)位置,如~/下。
<big>(2)Makefile.config文件配置</big>
首先需要在官方提供的Makefile.config文件的基礎(chǔ)上進(jìn)行一些配置工作。先拷貝一份原始Makefile.config文件

cd ~/caffe-master
cp Makefile.config.example Makefile.config

可能需要修改的內(nèi)容主要有:

  • OPENCV 3.0
OPENCV_VERSION := 3
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/share/OpenCV/3rdparty/lib/
  • CPU
    如果只使用CPU(不用GPU)的話,設(shè)置如下(取消注釋):
CPU_ONLY := 1
  • CUDNN
    啟用CUDNN,設(shè)置如下(取消注釋):
USE_CUDNN := 1

注意要注釋掉CPU模式#CPU_ONLY := 1。如果CUDA的路徑和實(shí)際不一致(CUDA_DIR := /usr/local/cuda,CUDA 8.0創(chuàng)建的文件夾名為cuda-8.0),需要做一定修改或者創(chuàng)建軟鏈接。

  • MKL
    使用微軟的Intel Parallel Studio XE 2016,設(shè)置如下:
BLAS := mkl

實(shí)際上,這里根據(jù)你采用的BLAS來修改。

  • 一些庫(kù)和引用文件
    python和hdf5的引用文件和庫(kù)。
PYTHON_INCLUDE := /usr/include/python2.7 /usr/lib/python2.7/dist-packages/numpy/core/include
WITH_PYTHON_LAYER := 1
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

此處需要根據(jù)采用的python版本來修改,默認(rèn)是python 2.7,也可以修改為python 3或者Anaconda Python。同時(shí)注意一定要添加hdf5的引用文件和庫(kù)路徑,我第一次編譯caffe失敗就是這個(gè)地方?jīng)]弄好。
如果采用Anaconda Python,可以設(shè)置如下(取消注釋):

 ANACONDA_HOME := $(HOME)/anaconda3
 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
        $(ANACONDA_HOME)/include/python3.5m \
        $(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include \
 PYTHON_LIB := $(ANACONDA_HOME)/lib

根據(jù)官方的安裝說明還要執(zhí)行一些指令進(jìn)行hdf5的配置:

find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so 

官方說這對(duì)于Ubuntu 16.04是必須的。上面的libhdf5的版本號(hào)需要根據(jù)實(shí)際來修改下。

  • MATLAB
    取消對(duì)MATLAB的注釋即可。
MATLAB_DIR := /usr/local/MATLAB/R2016a

<big>(3)其它配置</big>
如果需要python接口,需要做如下操作(我也不知道為什么……):

cd ~/caffe-master/python
for req in $(cat requirements.txt); do pip install $req; done

3. 編譯

  • 執(zhí)行以下命令進(jìn)行caffe的編譯。
cd ~/caffe-master
make all -j $(($(nproc)+1))
make test -j $(($(nproc)+1))
make runtest -j $(($(nproc)+1))

這里的-j $(($(nproc) + 1))表示調(diào)用CPU可用的核進(jìn)行并行編譯,可以加快便已速度。
編譯過程中遇到的問題:
(1)CUDA報(bào)錯(cuò)
報(bào)錯(cuò)記錄如下。

NVCC src/caffe/util/math_functions.cu
NVCC src/caffe/util/im2col.cu
make: /usr/local/cuda/bin/nvcc: Command not found
make: /usr/local/cuda/bin/nvcc: Command not found
Makefile:588: recipe for target '.build_release/cuda/src/caffe/util/math_functions.o' failed
NVCC src/caffe/solvers/adam_solver.cu
make: *** [.build_release/cuda/src/caffe/util/math_functions.o] Error 127
make: *** Waiting for unfinished jobs....
Makefile:588: recipe for target '.build_release/cuda/src/caffe/util/im2col.o' failed
make: *** [.build_release/cuda/src/caffe/util/im2col.o] Error 127
make: /usr/local/cuda/bin/nvcc: Command not found
Makefile:588: recipe for target '.build_release/cuda/src/caffe/solvers/adam_solver.o' failed
make: *** [.build_release/cuda/src/caffe/solvers/adam_solver.o] Error 127

解決方法:這個(gè)是CUDA沒有安裝好(主要是我之前進(jìn)入不了桌面重裝過一次顯卡驅(qū)動(dòng),估計(jì)把CUDA弄壞了),然后重裝了下CUDA就好了。
(2)google::protobuf相關(guān)內(nèi)容報(bào)錯(cuò)
參考這篇博客,應(yīng)該是Ubuntu系統(tǒng)版本胎心,apt-get安裝的protobuf不兼容。
解決方法:下載最新的protobuf源碼進(jìn)行編譯安裝。
先卸載原有版本:

sudo apt-get autoremove libprotobuf-dev protobuf-compiler

然后安裝新版本,安裝過程可以參考官方Github上的說明。首先安裝依賴關(guān)系:

sudo apt-get install autoconf automake libtool curl make g++ unzip

然后,執(zhí)行下面命令生成配置腳本:

./autogen.sh

這里需要下載google的gmock,此處可能下載有問題,這里我已上傳到網(wǎng)盤,請(qǐng)自行下載,下載后解壓到protobuf文件下,注意將文件夾名稱改為gmock。
然后,就是常見的編譯過程:

./configure
make
make check
sudo make install
sudo ldconfig

安裝完成后,還需要進(jìn)行環(huán)境的配置,

(3)在重新安裝protobuf之后,進(jìn)行caffe編譯又出現(xiàn)下面的錯(cuò)誤:

make: *** No rule to make target '/usr/include/google/protobuf/stubs/common.h', needed by '.build_release/cuda/src/caffe/util/math_functions.o'.  Stop.

報(bào)錯(cuò)原因:查看了下上面的報(bào)錯(cuò),并沒有找到“/usr/include/google/protobuf/stubs/common.h”這個(gè)路徑及文件。查看了官方Github上的說明文件發(fā)現(xiàn)原來protobuf默認(rèn)安裝路徑是/usr/local/,而caffe編譯時(shí)卻在/usr/下查找指定文件。
解決方法:重新安裝,并修改編譯路徑為./configure --prefix=/usr,然后重新編譯安裝。
(4)編譯器gcc報(bào)錯(cuò)
部分報(bào)錯(cuò)內(nèi)容如下:

/usr/local/cuda/include/host_config.h:115:2: error: #error -- unsupported GNU version! gcc versions later than 5.3 are not supported!

解決方法:gcc和g++版本太低。根據(jù)上面的報(bào)錯(cuò)內(nèi)容,找到文件host_config.h并打開,注釋掉里面的版本檢查語(yǔ)句:

//error -- unsupported GNU version! gcc versions later than 5.3 are not supported!  
  • 對(duì)caffe和matlab接口進(jìn)行編譯
make pycaffe  -j $(($(nproc) + 1))
make matcaffe -j $(($(nproc) + 1))

參考內(nèi)容
深度學(xué)習(xí)(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow環(huán)境搭建

http://ouxinyu.github.io/Blogs/20151108001.html
http://blog.csdn.net/autocyz/article/details/51783857
http://blog.csdn.net/g0m3e/article/details/51420565
http://caffe.berkeleyvision.org/install_apt.html
http://blog.csdn.net/solomon1558/article/details/52015754
https://github.com/BVLC/caffe/wiki/Ubuntu-16.04-or-15.10-Installation-Guide

<div align = center>-END-</div>


<u>版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處</u>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,530評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,407評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,759評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,204評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,415評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,955評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評(píng)論 1 286
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,675評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,967評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容