深度学习工作环境搭建教程
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
$ 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-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到。