在网上查了很多类似教程,然后经过亲身实践,期间经历了各种痛苦煎熬,踩过无数坑,终于安装过成功,现将经验分享出来,让大家能够顺利安装,少走弯路! 注意:下面路径中凡是出现gl处,一律用你们自己的用户名代替。 1.安装一些依赖项。 这里安装的依赖项是为后面的安装做准备的,反正是要安装的(当然后面还有一些要安装),这里一行一行复制到你的命令行执行就行。 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install –no-install-recommends libboost-all-dev sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 这个因为网络问题,可能要安装很久。还是有线好点。 2.下载完cuda8.0后,执行如下语句,运行runfile文件: sudo sh cuda_8.0.27_linux.run --override 执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia361驱动时,一定要选择否,因为前面我们已经安装了更加新的nvidia367,所以这里不要选择安装。其余的都直接默认或者选择是即可。 3.安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部: sudo gedit ~/.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}} 然后设置环境变量和动态链接库,在命令行输入: sudo gedit /etc/profile 在打开的文件末尾加入: export PATH=/usr/local/cuda/bin:$PATH 保存之后,创建链接文件: sudo gedit /etc/ld.so.conf.d/cuda.conf 在打开的文件中添加如下语句: /usr/local/cuda/lib64 然后执行 sudo ldconfig 使链接立即生效。 4.验证安装是否完成 nvidia-smi 或 nvidia-settings 5.测试cuda的samples cd /home/gl/NVIDIA_CUDA-8.0_Samples sudo make -j8 6.ubuntu的gcc编译器是5.4.0,然而cuda8.0不支持5.0以上的编译器,因此需要降级,把编译器版本降到4.9: [python] view plain copy 当出现“unsupport complier”错误时,说明gcc版本太高,需要降低gcc版本。解决办法如下: 以gcc4.9与g++4.9为例 安装低版本gcc与g++: sudo apt-get install gcc-4.9 g++-4.9 之后进入/usr/bin: cd /usr/bin 先删除和gcc5.0关联的gcc: sudo mv gcc gcc.bak sudo mv g++ g++.bak 再建个软连接 sudo ln -s gcc-4.9 gcc sudo ln -s g++-4.9 g++ 也不知道是我的错觉还是什么的,比以前快很多啊,大概等7分钟左右吧。 7.安装cudnn5.1 安装cuDNN比较简单,解压后把相应的文件拷贝到对应的CUDA目录下即可: tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz 继续执行以下指令: sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn.h sudo chmod a+r /usr/local/cuda/lib64/libcudnn* 8.验证一下 cd /home/gl/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery sudo ./deviceQuery cuda的samples 里面有个deviceQuery 运行之后会显示信息,最后一行出行pass说明成功啦~~~~ 9.验证安装是否完成,将电脑重启才能检验,否则会显示未安装成功。 nvcc -V 10.安装opencv3.1 首先肯定是先安装依赖了,官方列出了一些: sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev sudo apt-get install –assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip 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 从官网(http://opencv.org/downloads.html)下载OpenCV,并将其解压到你要安装的位置,假设解压到了/home/opencv。 安装前准备,创建编译文件夹: cd ~/opencv-3.1.0/ 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 -D WITH_GTK=ON -D WITH_GTK_2_X=ON -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" .. 程序“cmake”尚未安装。 您可以使用以下命令安装: sudo apt install cmake 也可以用cmake-gui打开cmake的gui界面,开始进行配置。也可以用ccmake ..打开相应界面进行设定。 cmake主要用于进行一些配置设定,从而生成用于编译安装的makefile文件,通过界面进行参数的配置和设定,非常直观、方便。在配置中指定源码和编译目录以及生成方式。 按照下图的步骤进行配置: 点击Finish后cmake即载入默认配置,窗口的中间部分即配置列表,这里和使用cmake命令直接生成makefile文件一致的,如 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV 只是这里通过图形界面的方式来进行配置,更加直观方便。 这里指对一个地方进行修改,CMAKE_BUILD_TYPE 值输入RELEASE,其他保持不变,图中蓝色虚线部分显示了默认的安装目录,生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。在这里的配置中我勾选了WITH_QT去掉了WITH_TIFF,其他更多的配置也不清楚,OpenCV中文网站也没找到系统的说明,这里暂时不深究,点击Generate生成配置文件。 进入build目录可以查看Makefile文件,可以留意文件的生成时间是否和刚才的生成时间一致。 接下来在build分别执行make和make install即可完成编译安装。 编译: sudo make -j8 -j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。 问题1: cuda8.0新出,opencv2.4.13不支持。报错: /home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat ^ /home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a type operator NppiGraphcutState*() ^ /home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a type NppiGraphcutState* pState; 解决方案:需要修改一处源码: 在graphcuts.cpp中将 #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) 改为 #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000) 以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装: sudo make install -j8 11.安装Anaconda (a)下载完之后执行下载的文件,比如: bash Anaconda2-4.3.0-Linux-x86_64.sh 后面就根据提示执行就可以了,很简单 (b)你在命令行输入python,会调用系统自带的python,所以执行完之后需要替换python sudo gedit ~/.bashrc 加入anaconda的安装目录是/home/xxx/anaconda2,那么在文件的最后加上 alias python=’/home/xxx/anaconda2/bin/python‘ 然后source .bashrc 你再执行python就变成了anaconda的python 12.Caffe 因为Caffe是最难安装的,因此就放到了最后了。废话不说多了。 首先你需要从github上面clone或者下载.zip的压缩包。效果是一样的。然后你得到一个cafffe-master的压缩包或者文件夹。进到这个文件夹里面,你会看到是这个样子的。 这里写图片描述 m你会看到其中有一个文件叫Makefile.config.example.这个文件是官方给出了编译的“模板”,我们可以直接拿过来小小的修改一下就行。复制下面的命令把名字改为Makefile.config sudo cp Makefile.config.example Makefile.config 你会发现下面多了一个Makefile.config的文件 这里写图片描述 打开这个文件并且修改(我这里用的是sublime,你可以换成其他的编辑器比如vim): sudo gedit Makefile.config 你能够看到类似于这样的东西 这里写图片描述 然后根据个人情况修改文件: (1)若使用cudnn,则将#USE_CUDNN := 1修改成: USE_CUDNN := 1 (就是去掉注释的‘#’号) (2)若使用的opencv版本是3的,则将#OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3 (3)若要使用python来编写layer,则将#WITH_PYTHON_LAYER := 1修改为 WITH_PYTHON_LAYER := 1 (4)要是你是用的anaconda的话,还需要改一些地方(重要) 这里写图片描述 把之前的PYTHON_INCLUDE一定不加注释,把ANACONDA_HOME以及下面的PYTHON_INCLUDE 都去掉,并且改为如下图最终的样子: # 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)/anaconda2 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/include/python2.7 \ $(ANACONDA_HOME)/lib/python2.7/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 (5)重要 : 将# Whatever else you find you need goes here.下面的 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 修改为: 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 (因为ubuntu16.04的文件包含位置发生了变化) (6)修改makefile文件 打开makefile文件,做如下修改: 将(大概409行的样子): NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS) 替换为: NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) 这里写图片描述 在Makefile文件的第大概181行,把 hdf5_hl和hdf5修改为hdf5_serial_hl 和 hdf5_serial,即 将: LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 改为: LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial 这里写图片描述 (7)编辑/usr/local/cuda/include/host_config.h sudo gedit /usr/local/cuda/include/host_config.h 将其中的第115行注释掉: 将#error-- unsupported GNU version! gcc versions later than 5 are not supported! 改为 //#error-- unsupported GNU version! gcc versions later than 5 are not supported! 这里写图片描述 (8)此时需要修改gcc和g++版本为最新版 之后进入/usr/bin: cd /usr/bin 先删除和gcc5.0关联的gcc: sudo mv gcc gcc.bak sudo mv g++ g++.bak 再建个软连接 sudo ln -s gcc-5 gcc sudo ln -s g++-5 g++ (9)此时可能需要安装protobuf tar xvf protobuf-2.6.1.tar.gz cd protobuf-2.6.1/ ./configure sudo make -j8 sudo make check -j8 sudo make install -j8 (10)安装一系列依赖库 再执行安装一些库:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev,稍等 (11)然后就可以开始编译了 sudo make all -j8 sudo make test -j8 sudo make runtest -j8 (12)Mnist训练 首先进入/caffe-master/目录,在当前目录下执行下列命令: ./data/mnist/get_mnist.sh11 获得mnist数据训训练的4个数据包 ./examples/mnist/create_mnist.sh11 利用caffe-master/build/examples/mnist/的convert_mnist_data.bin工具,将mnist date转化为可用的lmdb格式的文件。并将新生成的2个文件mnist-train-lmdb 和 mnist-test-lmdb放于create_mnist.sh同目录下。 ./examples/mnist/train_lenet.sh (13)Please inspect your PYTHONPATH as it looks wrong. You should give absolute paths to the caffe module's parent directory. For instance, in my configuration I did: # in caffe root dir sudo make pycaffe -j8 make distribute # make dir for custom python modules, install caffe mkdir ~/python sudo mv distribute/python/caffe ~/python # set PYTHONPATH (this should go in your .bashrc or whatever PYTHONPATH=${HOME}/python:$PYTHONPATH
Ubuntu16.04+cuda8.0+opencv3.1+anaconda2.7+caffe安装教程
最新推荐文章于 2021-03-30 22:36:00 发布