您的位置:首页 > Web前端

ubuntu14.04安装Anaconda、opencv3.1、caffe

2017-08-26 19:43 411 查看
博主电脑配置:

操作系统:buntu 14.04LTS 64位

处理器:Intel® Core™ i7-7700K CPU @ 4.20GHz × 8

图形适配器:GeForce GTX 1080 Ti/PCIe/SSE2

1.安装相关依赖项

首先打开你的terminal对已安装的软件包进行更新和升级:

sudo apt-get update

sudo apt-get upgrade

#upgrade升级已安装的所有软件包,升级之后的版本就是本地索引里的

#update 是用来同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,获取最新的软件包

安装caffe官网给出的一些依赖项:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-devlibhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-devlibgflags-dev libgoogle-glog-dev liblmdb-dev

安装一些开发工具:

sudo apt-get install build-essential cmake pkg-config

OpenCV库的依赖项:

sudo apt-get install libxvidcore-dev libx264-dev

sudo apt-get install libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-devlibv4l-dev 

#OpenCV GUI 操作的模块

sudo apt-get install libgtk-3-dev

#优化或者是提升OpenCV功能的库,像对矩阵的处理等

sudo apt-get install libatlas-base-dev gfortran

cuda依赖库:

sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libgl1-mesa-devlibglu1-mesa libglu1-mesa-dev libxi-dev libatlas-base-dev

sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-devprotobuf-compiler protobuf-c-compiler python-pandas

python-opencv依赖库:

sudo apt-get install python-dev python-numpy

sudo apt-get upgrade cmake

sudo apt-get install libxml2-dev libxslt-dev

2.安装NVIDIA驱动

(1)查询NVIDIA驱动

首先去官网http://www.nvidia.com/Download/index.aspx?lang=en-us 查看适合自己显卡的驱动并下载:

驱动文件后缀名应当是以.run结尾的。我们要把这个文件移动到家目录下,原因是下面我们要切换到文字界面下,如果放到~/下载 下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码)                

(2)安装驱动

在终端下输入: sudo gedit /etc/modprobe.d/blacklist.conf 

输入密码后在最后一行加上 blacklist nouveau .  这里是将Ubuntu自带的显卡驱动加入黑名单。

在终端输入: sudo update-initramfs -u 

重启电脑~

这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。

然后,输入命令 sudo service lightdm stop

现在可以安装驱动了,先进入 家目录 cd ~ ,

然后:

sudo chmod 777 ./NVIDIA-Linux-x86_64-375.20.run

sudo ./NVIDIA-Linux-x86_64-375.20.run

按照提示一步步来~

完成后,再次重启电脑。

安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。

3.安装CUDA

CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。

(1)下载CUDA

首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:

(2)下载完成后执行以下命令:

sudo chmod 777 cuda_8.0.44_linux.run

sudo  ./cuda_8.0.44_linux.run #按空格键向下翻页

注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia367驱动时,一定要选择否:

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?

因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。

(3)环境变量配置

#转载自博文:blog.csdn.net/xuezhisdc/article/details/48651003

操作1:

打开~/.bashrc文件:

sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存后,执行source ~/.bashrc,使之立即生效

操作2:

sudo gedit /etc/profile

将以下内容添加到文件/etc/profile的最后面,保存后,执行命令source /etc/profile,使配置生效。

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

操作3:

cd cuda.conf所在目录

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

cd /etc/ld.so.conf.d/  #cd到目录查看 ls

在目录/etc/ld.so.conf.d/下新建文件cuda.conf,并添加如下内容。然后执行命令sudo ldconfig,使配置生效。

(或者sudo gedit /etc/ld.so.conf 直接输入下面的内容也可以)

/usr/local/cuda-8.0/lib64

操作4:

检查cuda是否配置好,在命令行中执行以下命令。

#输入以下命令,检查是否配置好。如下图所示,说明安装好。

nvcc --version

(4)测试CUDA的samples

#转载自博文:blog.csdn.net/xuezhisdc/article/details/48651003

为什么安装cuda samples?

一方面为了后面学习cuda使用,另一方面,可以检验cuda是否真的安装成功。如果cuda samples全部编译通过,没有一个Error(Warning忽略),那么就说明成功地安装了cuda。但如果没有通过编译,或者虽然最后一行显示PASS,但是编译过程中有ERROR,请自行GOOGLE解决之后,再向下安装,否则失之毫厘谬以千里!!!

#make时,请使用make -j,可以最大限度的使用cpu编译,加快编译的速度。

进入/usr/local/cuda/samples, 执行下列命令来build samples

cd /usr/local/cuda/samples

sudo make all -j

整个过程大概10分钟左右, 全部编译完成后, 进入 samples/bin/x86_64/linux/release, 运行deviceQuery

cd bin/x86_64/linux/release

./deviceQuery 

如果显示一些关于GPU的信息,则说明安装成功。

可能出现的错误:

1、/usr/bin/ld: 找不到 -lGL

    解决方法:locatelibGL.so

         sudo ln -s/usr/lib/x86_64-linux-gnu/libGL.so.1.0.0 /usr/lib/libGL.so

    备注:需要确定locate出来的文件真实存在,才可以做下一步链接,否则错误不会消除

4.配置cuDNN

cuDNN是GPU加速计算深层神经网络的库。

首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:

下载cuDNN5.1之后进行解压:

sudo tar -zxvf ./cudnn-8.0-linux-x64-v5.1.tgz

进入cuDNN5.1解压之后的include目录,在命令行进行如下操作:

cd cuda/include

sudo cp cudnn.h /usr/local/cuda/include #复制头文件

再将进入lib64目录下的动态文件进行复制和链接:

复制代码

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.1.10 libcudnn.so.5 #生成软衔接

sudo ln -s libcudnn.so.5 libcudnn.so     #生成软链接

sudo ldconfig

5.安装Caffe所需要的Python环境Anaconda

按caffe官网的推荐使用Anaconda

去Anaconda官网下载安装包

切换到文件所在目录,执行

    bash Anaconda-2.3.0-Linux-x86_64.s<em>h</em> 

NOTE:后边的文件名按自己下的版本号更改,整个安装过程请选择默认

添加Anaconda Library Path:

在/etc/ld.so.conf最后加入以下路径:sudogedit /etc/ld.so.conf

并没有出现重启不能进入界面的问题(NOTE:下边的username要替换)

    /home/leonjin/anaconda3/lib 

在~/.bashrc最后添加下边路径:sudo gedit~/.bashrc

    exportLD_LIBRARY_PATH="/home/leonjin/anaconda3/lib:$LD_LIBRARY_PATH"

    #若在安装的过程中在以下问题回了yes,则~/.bashrc可不用添加bin-path

    Do you wish the installer to prependthe Anaconda3 install location

    to PATH in your /home/leonjin/.bashrc? [yes|no]

    [no] >>> yes

6.安装opencv3.1

!!!!这一步完全可以用一行命令解决!!!!

conda install -c menpo opencv3=3.1.0

(对于只用opencv的python接口的同学,这么做是理智的)

当然你可以尝试以下这种自己编译安装的方法

从官网(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置,假设解压到了/home/opencv。

(1)unzip opencv-3.1.0.zip &sudo cp ./opencv-3.1.0 /home/leonjin & sudomv opencv-3.1.0 opencv

安装前准备,创建编译文件夹:

(2)cd ~/opencv

(3)修改 ~/opencv/modules/cudalegacy/src/graphcuts.cpp文件内容

cd modules/cudalegacy/src/

sudo gedit graphcuts.cpp

其中,

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)||(CUDART_VERSION>=8000)

替换

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

保存退出

(4)在opencv文件夹中创建build目录

cd ~/opencv

mkdir build

(5)cd build

(6)sudo cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local  ..

编译:

(7)sudo make -j8

以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:

(8)sudo make install -j8

(9)opencv环境配置:

1.  sudo gedit
d0c9
/etc/ld.so.conf

    输入:/home/leonjin/opencv/build/lib

    保存退出

    sudo ldconfig

2.  sudo gedit /etc/profile

    输入:

    exportPATH="/home/leonjin/opencv/build/bin:$PATH"

    exportLD_LIBRARY_PATH="/home/leonjin/opencv/build/lib:$LD_LIBRARY_PATH"

    保存退出

    source /etc/profile

3.  sudo gedit ~/.bashrc

    输入:

    exportPATH="/home/leonjin/opencv/build/bin:$PATH"

    exportLD_LIBRARY_PATH="/home/leonjin/opencv/build/lib:$LD_LIBRARY_PATH"

    保存退出

    source ~/.bashrc

到这里opencv算是装好了但在终端输入python,然后import cv2 会出现以下的错误:

Traceback (most recent call last):

  File "<stdin>", line 1,in <module>

ImportError: No module named 'cv2'

!!!然而我严重怀疑是不是真的解决了问题?毕竟这是在装第二个opencv的操作!我最后import的还是我编译的那个吗?!!!!!

根据github答主Karim-92的解决方法(链接:https://github.com/opencv/opencv/issues/7666)

和答主thewaywewere的解决方法(链接:https://stackoverflow.com/questions/42310099/failed-to-run-conda-install-c-menpo-opencv3-3-2-0-in-windows7)

解决方法:

conda install -c daleydeng opencv=3.1.0 或者 condainstall -c menpo opencv3=3.1.0(这个须连外网)

cd /home/leonjin/opencv/build/lib

sudo ln -s cv2.so /home/leonjin/anaconda3/lib/python3.5/site-packages

9.安装python依赖库

去caffe的github下载caffe源码包

进入caffe-master下的python目录

执行如下命令:

    for req in $(cat requirements.txt);do pip install $req; done 

10.编译Caffe

终于来到这里了

进入caffe-master目录,复制一份Makefile.config.examples

cp Makefile.config.example Makefile.config 

修改Makefile.config其中的一些路径:sudogedit Makefile.config

以下是笔者的Makefile.conf文件的修改内容:

# cuDNN acceleration switch (uncomment to build with cuDNN).

USE_CUDNN := 1

# Uncomment if you're using OpenCV 3

OPENCV_VERSION := 3

# CUDA directory contains bin/ and lib/ directories that we need.

CUDA_DIR := /usr/local/cuda-8.0

# On Ubuntu 14.04, if cuda tools are installed via

# "sudo apt-get install nvidia-cuda-toolkit" then use thisinstead:

# CUDA_DIR := /usr

# NOTE: this is required only if you will compile the python interface.

# We need to be able to find Python.h and numpy/arrayobject.h.

#PYTHON_INCLUDE := /usr/include/python2.7 \

        /usr/lib/python2.7/dist-packages/numpy/core/include

# Anaconda Python distribution is quite popular. Include path:

# Verify anaconda location, sometimes it's in root.

ANACONDA_HOME := /home/leonjin/anaconda3

PYTHON_INCLUDE := $(ANACONDA_HOME)/include \

        $(ANACONDA_HOME)/include/python3.5m \

        $(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include

# We need to be able to find libpythonX.X.so or .dylib.

#PYTHON_LIB := /usr/lib

PYTHON_LIB := $(ANACONDA_HOME)/lib

# Uncomment to support layers written in Python (will link against Pythonlibs)

WITH_PYTHON_LAYER := 1

保存退出

修改Makefile文件:

PYTHON_LIBRARIES := boost_python-py34 python3.5m

编译caffe:

    sudo make all -j8 

    sudo make test -j8

    sudo make runtest -j8

编译pycaffe:

    sudo make pycaffe -j8

环境配置:

sudo gedit ~/.bashrc

exportLD_LIBRARY_PATH="/home/leonjin/caffe/python/caffe:$LD_LIBRARY_PATH"

source ~/.bashrc

这一步没做的话,在终端就import 不到caffe

使用caffe时编译的错误和解决方法:

>>> import caffe

Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

解决方法:(链接:blog.csdn.net/isuccess88/article/details/70165726)

conda update numpy

>>> import caffe

Traceback (most recent call last):

  File "<stdin>", line 1,in <module>

  File"/home/leonjin/caffe-master/python/caffe/__init__.py", line 1, in<module>

    from .pycaffe import Net, SGDSolver,NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL,Timer

  File "/home/leonjin/caffe-master/python/caffe/pycaffe.py",line 15, in <module>

    import caffe.io

  File"/home/leonjin/caffe-master/python/caffe/io.py", line 2, in<module>

    import skimage.io

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/__init__.py",line 15, in <module>

    reset_plugins()

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/manage_plugins.py",line 93, in reset_plugins

    _load_preferred_plugins()

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/manage_plugins.py",line 73, in _load_preferred_plugins

    _set_plugin(p_type,preferred_plugins['all'])

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/manage_plugins.py",line 85, in _set_plugin

    use_plugin(plugin, kind=plugin_type)

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/manage_plugins.py",line 255, in use_plugin

    _load(name)

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/manage_plugins.py",line 299, in _load

    fromlist=[modname])

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/skimage/io/_plugins/matplotlib_plugin.py",line 3, in <module>

    import matplotlib.pyplot as plt

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/matplotlib/pyplot.py",line 36, in <module>

    from matplotlib.figure import Figure,figaspect

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/matplotlib/figure.py",line 40, in <module>

    from matplotlib.axes import Axes,SubplotBase, subplot_class_factory

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/matplotlib/axes/__init__.py",line 4, in <module>

    from ._subplots import *

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/matplotlib/axes/_subplots.py",line 10, in <module>

    from matplotlib.axes._axes importAxes

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/matplotlib/axes/_axes.py",line 23, in <module>

    import matplotlib.dates as _  # <-registers a date unit converter

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/matplotlib/dates.py",line 126, in <module>

    from dateutil.rrule import (rrule,MO, TU, WE, TH, FR, SA, SU, YEARLY,

  File"/home/leonjin/anaconda3/lib/python3.5/site-packages/dateutil/rrule.py",line 55

    raise ValueError, "Can't createweekday with n == 0"

                    ^

SyntaxError: invalid syntax

>>>

解决方法:pip install matplotlib --upgrade

>>> import caffe

Traceback (most recent call last):

  File "<stdin>", line 1,in <module>

  File"/home/leonjin/caffe-master/python/caffe/__init__.py", line 1, in<module>

    from .pycaffe import Net, SGDSolver,NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL,Timer

  File"/home/leonjin/caffe-master/python/caffe/pycaffe.py", line 13, in<module>

    from ._caffe import Net, SGDSolver,NesterovSolver, AdaGradSolver, \

ImportError: /home/leonjin/caffe-master/python/caffe/_caffe.so: undefinedsymbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE

boost问题

解决方法:在Makefile中改:

PYTHON_LIBRARIES := boost_python-py34 python3.5m

In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,

                 from/usr/include/boost/python/args.hpp:8,

                 from/usr/include/boost/python.hpp:11,

                 fromsrc/caffe/layer_factory.cpp:4:

/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error:pyconfig.h: 没有那个文件或目录

 # include <pyconfig.h>

                       ^

compilation terminated.

make: *** [.build_release/src/caffe/layer_factory.o] 错误1

python include路径不对

须回Makefile.config改

使用自己机器编译的include和lib(caffe/build/lib, caffe/include)

caffe.pb.h丢失问题:

/home/wuliwei/caffe/include/caffe/blob.hpp:9:34: fatal error:caffe/proto/caffe.pb.h: No such file or directory

 #include"caffe/proto/caffe.pb.h"

解决方法: 用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc

wuliwei@wulw:~/caffe/src/caffe/proto$ protoc--cpp_out=/home/wuliwei/caffe/include/caffe/ caffe.proto

stdc++

linker error:

/usr/bin/ld: caffe_cnn_handler.o: undefined reference to symbol'_ZNSs4_Rep10_M_destroyERKSaIcE@@GLIBCXX_3.4'

//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missingfrom command line是找不到libstdc++.so.6

解决方法是在Makefile中加入:

LIBS += -L/usr/lib/x86_64-linux-gnu -lstdc++

错误代码如下:

.build_release/tools/caffe: error while loading shared libraries:libhdf5_hl.so.10: cannot open shared object file: No such file ordirectory

但是我查看 Anaconda自带的库时是能找到libhdf5_hl.so.10的,这是一个软链指向了libhdf5_hl.so.10.0.2这个文件。在参考了这个issues后,我在 /usr/lib 及 /usr/lib/x86_64-linux-gnu 分别放了一个软链指向了Anaconda的库中libhdf5_hl.so.10.0.2。

解决方法:

sudo cp -s $HOME/anaconda2/lib/libhdf5_hl.so.10.0.2/usr/lib/libhdf5_hl.so.10

sudo cp -s $HOME/anaconda2/lib/libhdf5_hl.so.10.0.2/usr/lib/x86_64-linux-gnu/libhdf5_hl.so.10

sudo ldconfig

再次尝试运行 make runtest 这次发现错误变成了:

.build_release/tools/caffe: error while loading shared libraries:libhdf5.so.10: cannot open shared object file: No such file or directory

解决方法:

sudo cp -s $HOME/anaconda2/lib/libhdf5.so.10.1.0 /usr/lib/libhdf5.so.10

sudo cp -s $HOME/anaconda2/lib/libhdf5.so.10.1.0 /usr/lib/x86_64-linux-gnu/libhdf5.so.10

sudo ldconfig

这次再运行 make runtest ,成功了!

make pycaffe找不到python.h错误:

解决方法:~/.bashrc 结尾处添加:

export PATH="/home/hosion/anaconda3/bin:$PATH"

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: