【软件安装】ubuntu14.04安装Anaconda、opencv3.1、caffe

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jin739738709/article/details/77606394

博主电脑配置:
操作系统: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 /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"




 

猜你喜欢

转载自blog.csdn.net/jin739738709/article/details/77606394