ubuntu16.04 安装配置matlab+python +cuda8.0+cudnn+opencv3.1的caffe环境

http://www.cnblogs.com/LaplaceAkuir/p/6262632.html




ubuntu16.04 安装配置matlab+python +cuda8.0+cudnn+opencv3.1的caffe环境

  网络上有很多ubuntu上caffe配置环境的帖子,本人照着其中的许多进行了参考,都出现了或多或少的错误,很多地方也有差异。

于是自己整理了下自己的安装过程,成功进行了测试,跑通了faster-rcnn。配置环境时间为2017.1.4 系统ubuntu16.04

一:显卡驱动的安装:

  由于要使用GPU,所以先要查看自己显卡所匹配的显卡驱动,网址:http://www.nvidia.com/Download/index.aspx%3Flang=en-us

  选择电脑匹配的显卡驱动,本人电脑显卡为GTX760,选择如下图所示

输入以下命令执行安装驱动:

sudo add-apt-repository ppa:graphics-drivers/ppa  
sudo apt-get update  
sudo apt-get install nvidia-375 //此处为上图的驱动版本
sudo apt-get install mesa-common-dev  
sudo apt-get install freeglut3-dev

安装完成后,重启电脑后输入

nvidia-smi

出现你的电脑gpu列表,如下所示,表示驱动安装成功。

二:安装配置CUDA8.0

  cuda官方下载地址:https://developer.nvidia.com/cuda-downloads,选择如下:

  

下载完成后,解压到当前目录,切换到该目录输入:

sh cuda_8.0.44_linux.run --override

安装过程中,出现很多选择的选项,先一直按S滑到百分百,然后根据提示输入,分别如下:

1 输入accept接受条款
2 输入n不安装nvidia图像驱动,之前已经安装过了//此处一定要选择n
3 输入y安装cuda 8.0工具
4 回车确认cuda默认安装路径:/usr/local/cuda-8.0
5 输入y用sudo权限运行安装,输入密码
6 输入y或者n安装或者不安装指向/usr/local/cuda的符号链接
7 输入y安装CUDA 8.0 Samples,以便后面测试
8 回车确认CUDA 8.0 Samples默认安装路径:

最重要的是确定此处不要再选择安装驱动。

添加环境路径:

sudo vim ~/.bashrc  //末尾添加
export CUDA_HOME=/usr/local/cuda-8.0    
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH   
export PATH=/usr/local/cuda-8.0/bin:$PATH  

添加完成后source ~/.bashrc 使之生效。

测试cuda的例子,并得到如下输出:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery  
make -j4 
sudo ./deviceQuery  

表明cuda安装成功。

三:Cudnnv5的安装

  从官网下载最新的cudnn,网址:https://developer.nvidia.com/rdp/cudnn-download,如下图选择适当的cudnn版本

  

本人下载放在Download目录下,进入该目录并解压,建立软连接,如下所示:

cd ./Download/
tar -xvzf cudnn-8.0-linux-x64-v5.1.tgz   
sudo cp ./cuda/include/cudnn.h /usr/local/cuda/include 
sudo cp ./cuda/lib64/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.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
sudo ldconfig

四:matlab的安装与配置

  本人使用的matlab版本位:R2014b_glnxa64_withcrack.iso

1、挂载iso(需新建matlab_iso文件夹):
   mkdir matlab_iso //主目录
   sudo mount -o loop R2014b_glnxa64_withcrack.iso  ~/matlab_iso
2、开始安装:
   cd ~/matlab_iso
   sudo ./install
3、选择不联网安装
4、密钥输入,29797-39064-48306-32452
5、激活:选择”license.lic”文件进行激活(在crack文件夹下面)
6、将libmwservices.so复制到/usr/local/MATLAB/R2014b/bin/glnxa64中:
   sudo cp libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64/libmwservices.so

启动matlab后出现问题,可以参考这个帖子http://blog.csdn.net/csd_ct/article/details/51837894。只需要将/sys/os/glnxa64/下的libstdc++.so.6 重命名位libstdc++.so.6.old.

五:Opencv3.1的安装

  opencv3.1的下载,网址链接:http://opencv.org/downloads.html

  安装必要项:

1 sudo apt-get update 
2 sudo apt-get install -y build-essential cmake git pkg-config 
3 sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler 
4 sudo apt-get install -y libatlas-base-dev 
5 sudo apt-get install -y --no-install-recommends libboost-all-dev 
6 sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev 
7 sudo apt-get install -y python-pip 
8 sudo apt-get install -y python-dev 
9 sudo apt-get install -y python-numpy python-scipy  
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  

解压opencv并进入该目录:

cd opencv-3.1.0
mkdir build
cd build 
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

期间可能会卡在ippcv的下载中,Ctrl + c中断后,可以到ippicv_linux_20151201.tgz下载。将下载的文件替换掉OpenCV-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件。

make -j4     
sudo make install  

make过程中,出现了graphcuts.cpp的错误,进行如下修改:

sudo vim ../modules/cudalegacy/src/graphcuts.cpp 

将45行的#if !defined (HAVE_CUDA) ||defined (CUDA_DISABLER)修改为#if !defined (HAVE_CUDA) ||defined (CUDA_DISABLER) || (CUDART_VERSION >=8000)

编译完成后注意需要运行sudo make install执行安装

六:Caffe编译

  

1 cd ~
2 git clone https://github.com/BVLC/caffe.git    //从github上git caffe

  如果没有安装git,可以先使用sudo apt-get install git执行安装。

1 cd caffe
2 sudo cp Makefile.config.example Makefile.config 
3 sudo vim Makefile.config

此时会修改caffe的编译配置,需要修改如下地方:

 1 # USE_CUDNN := 1 修改成: USE_CUDNN := 1 
 2 # OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
 3 # WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER:=1
 4 #USE_OPENCV := 0 修改成 USE_OPENCV :=1
 5 #USE_LEVELDB := 0 修改为 USE_LEVELDB:=1
 6 #USE_LMDB := 0 修改位 USE_LMDB :=1
 7 //修改matlab目录
 8 将MATLAB_DIR := /usr/local/matlab2014b/
 9 //最终要的修改 # Whatever else you find you need goes here.下面的
10  INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 
11 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib   
12 修改为: 
  INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial   
13  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的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径  

修改Makefile文件:

sudo vim Makefile
将
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)  
替换为 
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS) 

编辑/usr/local/cuda/include/host_config.h 将119行的

error -- unsupported GNU version! gcc versions later than 5 are not supported! 修改为 #error -- unsupported GNU version! gcc versions later than 5 are not supported!,即添加了注释,使之无效

进行编译:

make all -j8  
make runtest -j8  

i have a problem:%%%%%%%%%%%%%%%%%%%%%%%%%

.build_release/lib/libcaffe.so:对‘cv::imencode(std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char> > const&,cv::_InputArray const&,std::vector<unsigned char,std::allocator<unsigned char> >&,std::vector<int,std::allocator<int> > const&)’未定义的引用
.build_release/lib/libcaffe.so:对‘cv::imread(std::__cxx11::basic_string<char,int)’未定义的引用
collect2: error: ld returned 1 exit status
Makefile:619: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed
make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1
make: *** 正在等待未完成的任务....

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

solution:

CXX/LD -o .build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&,int)' .build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&,std::vector >&,std::vector > const&)'
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&,int)'
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/convert_imageset.bin] Error 1

solution:

add "opencv_imgcodecs" in Makefile.(LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
If you input "make all",the problem is the same again.But if you delete all the file in build(rm -rf ./build/*) before "make all"(I use make clean ),you will success.I just success


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@






此时正确情况如下图所示:

  

编译matcaffe:

  执行 make matcaffe -j4

  显示MEX completed successfully,表示编译matcaffe成功,

  执行make mattest -j4 即运行matcaffe的测试程序,结果如下图:

  

编译pycaffe

sudo make pycaffe -j4 sudo make distribute -j4

  运行make pytest -j4进行测试,出现如下图:


(cd python

for req in $(cat requirements.txt); do sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done

###### if you pycaffe have porblem,you can use the command!##############
)

  

表明pycaffe编译成功 在~/.bashrc 末尾添加export PYTHONPATH=/home/zf/caffe/python:$PYTHONPATH //自己对照自己路径。

(export PYTHONPATH=~/caffe/python:$PYTHONPATH ####ZOUYU'S PATH###)

ADD THIS COMMAND FOR THE SOURCE UPDATE:

source ~/.bashrc


打开python导入caffe 可以成功,如下:

七:mnist集测试:

cd ~/caffe ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh ./examples/mnist/train_lenet.sh  

结果如下图,正确率为99.08%

八:faster-rcnn配置与测试:

  

mkdir ~/caffetest cd caffetest git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git //下载rcnn源码
cd py-faster-rcnn cd lib make cd ../caffe-fast-rcnn //用之前编译的caffe替换rcnn的Makefile.config
sudo cp ~/caffe/Makefile.config ./caffe-fastr-rcnn/
sudo make -j4 && make pycaffe cd ../
sudo ./data/script/fetch_faster_rcnn_models.sh

此过程中若出现cudnn错误,可以做如下方式进行解决:

cd caffe-fast-rcnn Git remote add caffe https://github.com/BVLC/caffe.git 
git fetch caffe //需要github账号
git stash save git merge caffe/master 

将caffe-fast-rcnn/include/caffe/layers/python_layer.hpp的29行self_.attr("phase") = static_cast<int>(this->phase_);注释掉

一切编译成功后,执行demo,两种demo为不同的模型框架,

cd ~/caffetest ./tool/demo.py ./tool/demo.py --net zf

  若出现Check failed:error == cudaSuccess(8 vs 0) invalid device function,则将py-faster-rcnn/lib/setup.py的第135行,将arch改为与你显卡相匹配的数值,(比如我的GTX760,计算能力是3.0,就将sm_35改成了sm_30)然后删除utils/bbox.c,nms/cpu_nms.c,nms/gpu_nms.cpp重新编译即可

最终结果部分图片如下:

  

九:总结与体会

  之前花费了时间断断续续的进行caffe的安装与配置,但是总会出现大大小小的问题,但是最后才发现是第一步驱动的问题,很多博客说到的编译器问题,在我这次安装过程中都没有出现。

据说是现在cuda8.0后对此进行了修复。最终能够完全成功,也是非常令人高兴的,也说明了,做一个事情,还是得老老实实专心的做下去。写这篇博客,一是为了纪念一下这一路安装的心酸,也

是想方便以后的人,希望对他们能有帮助,少走一点弯路。加油~

  安装过程中用到的安装软件,笔者会稍后上传到网盘,需要的可以联系笔者。笔者QQ:476833883。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预编译版,总体过程感觉还是挺简单的,但是由于在网上找的参考资料并没有和自己遇到的情况完全一样的,所以把自己的安装过程记录下来,方便和自己一样的后来人进行安装,同时也自己作个记录留作备忘。其实预编译版的CARLA本身几乎不用什么命令行进行安装,主要步骤只有解压缩和拷贝文件,和极少的命令行安装操作。但是相关依赖以及其它的CARLA所使用的一些工具需要一起安装好,下面一起来看看安装步骤吧。_ubuntu22.04安装carla
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载Ubuntu 20 安装包_ubuntu20下载
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装rally, pip3 install -r requirements.txt 时提示如下: 说明openssl 已安装。解决:1. pip3 install --upgrade pip , 结果输出如下 ..._error: command '/usr/bin/gcc' failed with exit code 1
文章浏览阅读1.1k次。自己刚踩坑装好的W11 WSL2 miniconda_wsl2 cuda
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standalone的,会有一点区别(不识别 下面的 -localhost no)上面的命令会在~/.vnc/目录下生成一个 passwd文件。具体端口号,可以查看vncserver -list返回结果中的RFB PROT。作用是vncserver启动的时候运行这些命令,把桌面程序启动起来。如果希望用某个用户比如 demo登录,就用su切换到这个用户。桌面版默认就已安装,服务器版需要手动安装,并启动。关闭某个会话可以用下面的命令。远程地址输入ip:port。查看全部的vnc会话。_ubuntu vncserver
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主要是连接一个远程的code-server服务,code-server服务安装在什么系统,调用的就是什么系统的环境,如这里使用ubuntu进行安装code-server,那使用的就是ubuntu环境,如需要go,python,java开发,需要在Ubuntu安装相关环境,创建的文件夹和项目也是在Ubuntu里面.这种方式其实在访问vscode的时候利于可以随时随地进行连接使用,且不受设备影响。
安装Ubuntu上超好用的终端Terminator。通过添加软件源、更新源、安装Terminator等步骤完成。
文章浏览阅读1.1k次,点赞83次,收藏74次。不要嫌弃Ubuntu的单调的终端界面啦,快来试试这些有意思的命令_ubuntu系统有趣的玩法
文章浏览阅读2.5k次。在ubuntu系统中,swap空间就是虚拟内存,所以考虑在磁盘空间富余的目录下设置虚拟内存swap文件,用来缓解内存不足的问题。通过上面的信息可以看到,/dev/vda2 目录下还剩余45G,那么就可以把swap文件生成在/dev/vda2目录下。在系统监控中发现,当数据库服务程序启动后,占用了大量内存空间,导致系统的剩余的内存往往只有几十MB。# bs 为块的大小,count 创建多少个块。# 执行命令后,删除创建的swap目录即可。#把生成的文件转换成 Swap 文件。2、创建一个swap文件。_ubuntu20修改swap大小
文章浏览阅读2.9k次,点赞2次,收藏10次。记录RV1126的SDK编译错误,以及解决处理_command exited with non-zero status 1
文章浏览阅读1.1w次,点赞22次,收藏101次。【记录】ubuntu20.04安装nvidia显卡驱动_ubuntu20.04安装nvidia显卡驱动
文章浏览阅读727次,点赞6次,收藏27次。在嵌入式Linux开发过程中,可能遇到uboot无法通过nfs服务从Ubuntu下载系统镜像(TTTTTT)的问题。如果你使用的是较新版本的Ubuntu,那么其**默认内核将不支持nfs2**!而**uboot仅支持到nfs2**,因此我们需要修改系统内核以及nfs配置文件,开启nfs2服务。**此问题非常棘手**,因为问题出现的时间太近,并且使用的人少。由于是2023年后才出现的问题,**chatgpt也无法解答**!本文参考网络上多篇博客资料,是解决此问题的最新办法。
ubuntu系统下安装软件的方法有多种,包括使用apt工具、deb软件包安装、源码编译安装以及通过软件中心安装。还有一种以 .run 后缀的软件包也可以在ubuntu系统下安装。具体的安装方法可以通过百度搜索来获取。
文章浏览阅读814次。本篇目的:Xubuntu如何安装pkg-configpkg-config是一个计算机软件包,用于帮助开发人员查找、定位和使用依赖库。它通常用于构建软件时,开发人员需要指定程序所依赖的外部库的位置和版本信息。使用pkg-config,开发人员可以很容易地查找、检索和导出这些依赖库的信息,从而简化了软件的构建过程。_ubuntu中怎么下载pkg-config
文章浏览阅读2k次。ubuntu创建共享文件夹_ubuntu20.04共享文件夹
文章浏览阅读2.9k次,点赞74次,收藏73次。对于有长期远程桌面需求的用户,建议将cpolar套餐升级到专业套餐,支持配置固定的公网TCP端口,且带宽也会相应的增大,支持更高效便捷的远程桌面连接Ubuntu系统。【cpolar内网穿透支持http/https/tcp协议,支持永久免费使用,不限制流量,无需公网IP,也不用进入路由器设置,操作简单。隧道创建成功后,点击左侧仪表盘的状态——在线隧道列表,查看xrdp隧道的所生成的公网TCP端口地址,复制下来。,使用cpolar内网穿透映射3389端口,生成公网TCP端口地址,实现在公网环境下,_ubuntu 局域网桌面
文章浏览阅读3.2k次。而在linux的ubuntu版本中,又多出两类用户:安装ubuntu系统的源用户xxx,其与root具有相同权限,仅在执行命令时,前面加sudo。在ubuntu中,用命令deluser username可以直接删除用户账号及家目录,而用centos7中的命令userdel -r username才能达到同样目的。在ubuntu中,没有moduser命令,centos7中的usermod修改用户信息的命令,同样可以用在ubuntu中。在系统中,创建新的用户或称为账号,一般需要多步操作。_ubuntu创建一个新用户
文章浏览阅读1.6w次,点赞4次,收藏23次。系统的许多日志文件都存储在 /var/log 目录中。你可以使用 ls /var/log 命令来列出可用的日志文件。/var/log/Xorg.0.log:包含 X 服务器的日志信息(图形界面)。打开DASH,搜索日志或者log,打开app,这个是/var/log的界面版。这将显示系统日志的末尾,并提供有关系统崩溃和错误的信息。/var/log/kern.log:包含内核日志信息。/var/log/dmesg:包含开机时的日志信息。/var/log/syslog:包含系统日志信息。_ubuntu查看系统日志
文章浏览阅读857次。首先将source.list复制为source.list.bak备份,然后将source.list内容改为需要的镜像源列表即可。Ubuntu采用apt作为软件安装工具,其镜像源列表记录在/etc/apt/source.list文件中。本节均为 Ubuntu 20.04 的镜像源列表。若为其他版本,将所有focal更改为其他版本代号即可。_apt 国内源