深度学习工作环境搭建教程

1.安装系统

1.1 选择一个Linux发行版

目前使用的是基于Ubuntu开发的Mint,必须使用x64. 下载地址在这里,推荐使用Mate的皮肤版本。

1.2 使用U盘安装到系统

具体方法不做说明,网上查询”Linux制作U盘启动盘“相关资料。
如果系统无法启动Mint的安装界面,可能需要在BIOS的boot下关闭EFI模式并切换为Legacy模式。

1.3 简单配置Linux系统

更新Linux下载源
(注意中间操作不要中断)

更新GPU驱动


下载需要一定的时间
如果一直卡在这个界面(例如40分钟以上),则需要手动安装驱动。

教程参考这篇文档

安装好驱动以后要重启一次。如果安装完以后无法进入桌面环境(进入命令行或者无法进入操作系统),有可能是你的安装方法、驱动版本下载有误,那就需要你仔细google具体方法了。

2. 安装软件库依赖

2.1 编译安装opencv

接下来编译安装opencv。
去opencv官网下载Linux x64下的源代码,文件大小约为90MB,这里使用2.4.13为例。

具体参考这个教程。apt-get安装时最好一个一个安装,这样不会漏装。

正常情况下就编译完opencv了,安装时可以使用多线程进行编译,编译时间取决于机器的cpu性能:

$ sudo make install -j16

在apt-get安装很多包前一般需要

$ sudo apt-get update

2.2 安装CUDA

在这里下载cuda8.0的deb安装包,安装方法在页面中有描述。注意版本要对应ubuntu16.04(mint18基于ubuntu16.04),安装前可能要给予权限:

$ sudo chmod a+x cuda-instal-file

然后添加CUDA8.0的环境变量:
先安装一个文本编辑器,会用vim就装vim,不会vim就装gedit:

$ sudo apt-get install gedit

/etc/profile文件末尾添加内容:

$ sudo gedit /etc/profile
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

保存退出

然后重启一下计算机。

$ sudo reboot

如果此时没有正常进入桌面,而是黑屏或者进入命令行模式,说明cuda与显卡驱动之间发生冲突,可能需要先重装系统,再手动安装驱动。

2.3 安装CUDNN

CUDNN是faster-rcnn框架必须的计算加速库,下载地址是这里。需要安装基于cuda8.0的V5版本。下载需要注册用户。

CUDNN的安装方法详细见这里,参考其中的cuDNN安装部分。

具体方法是复制include和lib64文件夹到对应目录
然后在/usr/local/cuda/lib64/

sudo rm -rf libcudnn.so.5 libcudnn.so
sudo chmod 777 libcudnn.so.5.1.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

实际上它就是建立了一个链接,从libcudnn.so -> libcudnn.so.5 -> libcudnn.so.5.1.5,系统调用时会调用libcudnn.so

2.4 下载py-faster-rcnn

py-faster-rcnn是github上的开源框架,先进入这个地址

然后安装一下git:

sudo apt-get install git

然后按照安装要求下载py-faster-rcnn:

$ cd ~
# Make sure to clone with --recursive
$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

/# 后面的部分是注释

Caffe会在Py-faster-rcnn下载的时候一并下载下来。

3. 配置Caffe依赖环境

3.1 安装caffe依赖库

首先要用apt-get安装很多基本的依赖库,参考这个教程

相关库要一个一个安装,防止遗漏。

3.2 编译Caffe环境

相关依赖安装好以后,进入caffe目录

$ cd ~/py-faster-rcnn/caffe-fast-rcnn
$ cp Makefile.config.example Makefile.config

使用gedit将Makefile.config
先不注注释掉USE_CUDNN := 1

# Whatever else you find you need goes here.INCLUDE_Dirs := $(PYTHON_INCLUDE) /usr/local/include LIBRARY_Dirs := $(PYTHON_LIB) /usr/local/lib /usr/lib# 修改为# Whatever else you find you need goes here.INCLUDE_Dirs := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_Dirs := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/i386­-linux­-gnu/hdf5/serial

将Makefile中的173行进行修改:

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

去掉第87行的注释,变为:

WITH_PYTHON_LAYER := 1

然后在~/py-faster-rcnn/caffe-fast-rcnn/目录下

$ make all -j12

开始编译

如果中间报错,则需要查找具体原因,具体原因教材中无法全面覆盖,需要自己google。如果编译没有问题,说明GPU下的caffe编译(不带cudnn)没有问题,下面编译cudnn下的caffe。

用gedit编辑Makefile.config,去掉第五行的USE_CUDNN := 1注释,变成:

USE_CUDNN := 1

然后在~/py-faster-rcnn/caffe-fast-rcnn目录下:

$ make clean

这一步是消除之前的编译内容。

然后再

$ make all -j12

会出现报错:

问题原因:py-faster-rcnn在开发时使用了更早的cudnn库,因此调用出现错误。解决方法:去caffe项目主页git clone一个最新的caffe,然后替换相关的文件。

具体操作教程在这里

然后再

$ make clean
$ make all -j12

我这边编译就没有出现问题了

然后是编译一个caffe测试环境:

$ make test -j12

接着是

$ make runtest -j12

会出现报错:


解决方法看这里


然后继续编译

$ make runtest -j12

最后会运行一遍test程序,确保每个caffe功能都正常。这样caffe编译工作结束。

3.3 配置py-caffe依赖环境

py-caffe就是caffe的python接口

使用sudo apt-get install安装下列依赖:

python-dev
python-numpy
python-scipy
python-matplotlib
python-sklearn
python-skimage
python-h5py
python-protobuf
python-leveldb
python-networkx
python-nose
python-pandas
python-gflags
cython
ipython

然后编译pycaffe:

$ cd ~/py-faster-rcnn/caffe-fast-rcnn
$ make pycaffe

然后在系统中加入pycaffe的环境变量:

$ gedit ~/.bashrc
# 在最后一行加入:
export PYTHONPATH=/home/your_username/py-faster-rcnn/caffe-fast-rcnn/python:$PYTHONPATH
$ source ~/.bashrc
$ python

>>> import caffe
>>> 

如果没有报错的话说明python可以调用caffe了。第一次matplotlib可能需要缓冲一下。

4. 配置Qt工程环境

4.1 安装Qt5.8

下载Qt,地址在这里。下载需要先注册用户账户。

下载qt-opensource-linux-x64-5.8.0.run

安装前先赋予它一个权限:

$ sudo chmod 755 qt-opensource-linux-x64-5.8.0.run
$ sudo ./qt-opensource-linux-x64-5.8.0.run

一般会安装在/opt/目录下

最后检查一下是否正确安装:

$ cd /opt
$ ls

然后你就可以在开始菜单搜索“qt”,就可以打开QT的IDE了。

4.2 工程代码编译测试

将工程测试文件复制到桌面,用Qt IDE打开。注意要关闭影子编译(shadow build)模式:


将训练好的Caffemodel文件和模型配件pt文件到你的系统路径下,改名:

xxx.pt
xxx.caffemodel

xxx.pt是模型结构文件
xxx.caffemodel是模型参数文件

然后将工程文件的所有环境变量地址换成本机的,在项目文件下。

具体可以参考这篇博客,这篇博客使用了C++调用Py-faster-rcnn的模型接口。

然后需要安装一些依赖和解决报错问题,下面一个一个来:

如果工程中使用了vlc调取视频流,那么就需要安装两个东西:

$ sudo apt-get install libvlc-dev

再去软件中心输入vlc,安装vlc

报错:


解决方法看这里:


报错:


cannot find -lcaffe解决方法:

$ cd ~/py-faster-rcnn/caffe-fast-rcnn/
$ make distribute

原因是工程需要调用caffe的python接口,但是py-faster-rcnn里面没有做python接口的库文件。

cannot find -lgpu_nms的解决方法:
这个问题是因为~/rootdir/lib/nms
下没有单独编译gpu_nms.so库,但是编译文件已经在Makefile文件里写好了,所以直接make就可以了。
这里rootdir~/py-faster-rcnn/为了方便后面都用这个路径指代根目录。

因此:

$ sudo apt-get install python-setuptools
$ cd /rootdir/lib
$ sudo make
$ cd nms
$ cp gpu_nms.so libgpu_nms.so

还有一个类似的问题,是工程需要调用gpu_nms.cpp文件,这里也一并解决掉:

$ sudo apt-get install python-setuptools
$ cd /rootdir/lib
$ sudo python setup.py install

这样就在/lib/nms下产生了gpu_nms.cpp文件

接着会报错:


这是因为工程中引用了一个外部库用以产生声音所致,解决方法在这里

后面会报错:

no module named rpn.proposal_layer

这是因为你的Qt环境变量里面导入了错误的PYTHON环境变量。
方法:
左边栏的“Project”里面,进入“Build Environment“,然后修改PYTHONPATH,将路径改成你的计算机的py-faster-rcnn/caffe-fast-rcnn/python路径。

再后面会出现一系列库缺失的报错:

$ No module named ymal
...

方法就是一个一个地安装就可以了:

sudo apt-get install python-yaml
$ No module named easydict

这个有点不太一样

$ sudo apt-get install python-pip
$ sudo pip install easydict

再后面就可以将工程运行起来了。

配置好就可以正常运行程序了。

4.3 克隆系统环境

前面安装的那么辛苦,有时候一个包管理错误都有可能找不到原因,所以工作环境配置好以后有必要对磁盘镜像进行克隆。

方法就是用Clonezilla这个发行版对磁盘进行克隆。方法和Linux安装类似,首先下载镜像->安装到U盘系统盘->准备一个移动硬盘->克隆整个系统磁盘(注意不要把克隆和恢复搞反了)

镜像下载地址

具体的使用方法这里就不做说明了,可以google到。

深度学习py-faster-rcnn/Qt5.8工作环境搭建教程的更多相关文章

  1. ios中的.dylib和.a lib有什么区别?

    我知道Objectivec中的编译和运行时是什么,但是我想知道是什么画了这两个库之间的界限?他们的目的是什么,除了陈述一个是静态的而另一个是动态的?我们何时需要一个而不是另一个?

  2. xamarin.ios – ShareKit与MonoTouch如何?

    有人可以验证ShareKit实际上是否可用于MonoTouch并指导我完成使其工作所需的步骤?解决方法您首先从getsharekit.com下载还是使用ShareKit2.0?

  3. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

    任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

  4. ios – Xcode 7 beta 2:LaunchScreen.storyboard无法打开文档

    我在两个不同的Mac(iMac和MacBookpro)上收到这个错误.不知道为什么人们不能再现它,但我需要一些帮助.在运行XX优胜美地10.10.4的Mac上运行Xcode7beta2(15六月’15).甚至无法编译和运行我的项目..我从创建菜单创建了一个视图应用程序项目,就是这样.编辑:我试图删除并重新添加storyboard文件(也可以打开Main.storyboard插件),我仍然得到相同的

  5. ios – 存档期间不存在Xcode环境变量

    我有一个具有TestFlight构建方案的iOS应用程序.在此方案中,我在“运行”选项卡中设置了一个称为TESTFLIGHT的环境变量,值为1.此外,在构建方案的“配置文件”选项卡中,它已选中“使用RUn操作的参数和变量”选项,并在列表中看到相应的EV.当从Xcode运行应用程序时,这可以正常工作,但是当我在存储设备上运行应用程序时,环境变量TESTFLIGHT不存在.我的问题是有一个我在这里缺少的选项/方案选项卡?

  6. ios – 为具有多个目标和不同平台的项目编写Podfile

    如何让CocoaPods成功整合到我的项目和iOS/Mac目标?我已经阅读了Podfile文档,但发现它在这方面缺乏.解决方法得到它了!从我的每个目标和运行的pod安装中删除libPods-xxxx.a文件,再次执行了我的目标集成.

  7. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  8. ios – 在/usr/lib/system/libcache.dylib中,缺少必需的架构armv6

    在试图为iphoneos编写一个虚拟程序时,Xcode4,gcc似乎没有超出初始的sysroot目录如果我把sysroot,以下作品,但感觉非常干酪,而且不可伸缩.这里发生了什么?

  9. 在编译的iOS应用程序(IPA)中加密内容

    由于IPA结构只是一个压缩文件,包含编译代码媒体内容,如图像&音频,我如何保护内容免受别人的窃取?是否有加密可以添加到IPA?

  10. ios – Swift 4向后兼容性

    一起使用.有没有办法在两个版本的Xcode中使这个工作?Swift4是否应该向后兼容?

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部