个人深度学习环境搭建(五):深度学习框架torch/caffe/tensorflow/mxnet安装

<u>版权所有,转载请注明出处</u>


其它相关文章:


** <big>未完待续……</big> **


说明:以下都是针对Ubuntu 16.04系统下的安装。

一. opencv 3.1 安装

官方网站关于opencv 3.1 的安装说明偏少,官网上的教程还是2.3.4的。我们这里的安装主要参考了以下网站:
Ubuntu 16.04 or 15.10 OpenCV 3.1 Installation Guide
Caffe + Ubuntu 15.04 + CUDA 7.5 新手安装配置指南
ubuntu 16.04 编译opencv3.1,opencv多版本切换
安装过程主要包括依赖关系的安装、编译、安装等三个过程。

1. 依赖关系

主要安装以下内容:

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. 编译

从官网下载源代码,解压缩并进入文件夹。依次执行以下指令。

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时可能会遇到以下问题——

(1)问题一:安装过程中报“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)

解决方法:可能是链接错误吧,参考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...位置卡住很久,最后报错CMake Error at 3rdparty/ippicv/downloader.cmake:73 (file): file DOWNLOAD HASH mismatch
解决方法:这个应该是由于下载包失败导致的。可以手动下载原始文件并将压缩包放置在路径/home/machao/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e下。具体问题可以参考官方github上的这个issue(incorrect hash in cmake ippicv when installing #5973).

3. 安装

编译成功后,执行以下指令进行安装

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

欧新宇写了个安装脚本,包含了上述所有过程,可以方便地进行安装,大家可以参考下。百度云盘链接: http://pan.baidu.com/s/1qX1uFHa 密码:wysa

二. Torch 安装

Torch的安装非常简单,按照官方说明进行就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包,可以方便地进行可视化编程。安装方法如下:

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

启动只需要在终端输入ipython notebook即可。
官方的其它一些教程或者安装包可以查看这个Cheatsheet.

三. caffe安装

caffe是由BVLC开发的一个深度学习框架,主要由贾扬清在UC Berkeley攻读PhD期间完成(大神,膜拜!)。
安装教程主要参考官网上的安装教程以及Github上针对Ubuntu15.04和16.04的安装教程.

1. 依赖关系

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

安装过程中会要求输入序列号,这个key在注册后官方会发邮件到注册邮箱里,自己去查看。安装完成后还需要进行一些环境的配置:
在/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

添加完内容后使用下面内容使其生效:

sudo ldconfig

另外,如果选择安装ATLAS,在终端输入sudo apt-get install libatlas-base-dev即可。

  • Boost
  • opencv, 这个的安装在前面已经讲了,不再赘述。
  • 其它依赖项
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源包,解压到某个位置,如~/下。
<big>(2)Makefile.config文件配置</big>
首先需要在官方提供的Makefile.config文件的基础上进行一些配置工作。先拷贝一份原始Makefile.config文件

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

可能需要修改的内容主要有:

  • 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)的话,设置如下(取消注释):
CPU_ONLY := 1
  • CUDNN
    启用CUDNN,设置如下(取消注释):
USE_CUDNN := 1

注意要注释掉CPU模式#CPU_ONLY := 1。如果CUDA的路径和实际不一致(CUDA_DIR := /usr/local/cuda,CUDA 8.0创建的文件夹名为cuda-8.0),需要做一定修改或者创建软链接。

  • MKL
    使用微软的Intel Parallel Studio XE 2016,设置如下:
BLAS := mkl

实际上,这里根据你采用的BLAS来修改。

  • 一些库和引用文件
    python和hdf5的引用文件和库。
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

此处需要根据采用的python版本来修改,默认是python 2.7,也可以修改为python 3或者Anaconda Python。同时注意一定要添加hdf5的引用文件和库路径,我第一次编译caffe失败就是这个地方没弄好。
如果采用Anaconda Python,可以设置如下(取消注释):

 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

根据官方的安装说明还要执行一些指令进行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 

官方说这对于Ubuntu 16.04是必须的。上面的libhdf5的版本号需要根据实际来修改下。

  • MATLAB
    取消对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. 编译

  • 执行以下命令进行caffe的编译。
cd ~/caffe-master
make all -j $(($(nproc)+1))
make test -j $(($(nproc)+1))
make runtest -j $(($(nproc)+1))

这里的-j $(($(nproc) + 1))表示调用CPU可用的核进行并行编译,可以加快便已速度。
编译过程中遇到的问题:
(1)CUDA报错
报错记录如下。

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

解决方法:这个是CUDA没有安装好(主要是我之前进入不了桌面重装过一次显卡驱动,估计把CUDA弄坏了),然后重装了下CUDA就好了。
(2)google::protobuf相关内容报错
参考这篇博客,应该是Ubuntu系统版本胎心,apt-get安装的protobuf不兼容。
解决方法:下载最新的protobuf源码进行编译安装。
先卸载原有版本:

sudo apt-get autoremove libprotobuf-dev protobuf-compiler

然后安装新版本,安装过程可以参考官方Github上的说明。首先安装依赖关系:

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

然后,执行下面命令生成配置脚本:

./autogen.sh

这里需要下载google的gmock,此处可能下载有问题,这里我已上传到网盘,请自行下载,下载后解压到protobuf文件下,注意将文件夹名称改为gmock。
然后,就是常见的编译过程:

./configure
make
make check
sudo make install
sudo ldconfig

安装完成后,还需要进行环境的配置,

(3)在重新安装protobuf之后,进行caffe编译又出现下面的错误:

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.

报错原因:查看了下上面的报错,并没有找到“/usr/include/google/protobuf/stubs/common.h”这个路径及文件。查看了官方Github上的说明文件发现原来protobuf默认安装路径是/usr/local/,而caffe编译时却在/usr/下查找指定文件。
解决方法:重新安装,并修改编译路径为./configure --prefix=/usr,然后重新编译安装。
(4)编译器gcc报错
部分报错内容如下:

/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++版本太低。根据上面的报错内容,找到文件host_config.h并打开,注释掉里面的版本检查语句:

//error -- unsupported GNU version! gcc versions later than 5.3 are not supported!  
  • 对caffe和matlab接口进行编译
make pycaffe  -j $(($(nproc) + 1))
make matcaffe -j $(($(nproc) + 1))

参考内容
深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建

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>版权所有,转载请注明出处</u>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容