https://blog.csdn.net/flygeda/article/details/78638824
本文主要是对近期参考的网上各位大神的博客的总结,其中,从安装系统到跑通程序过程中遇到的各种问题,笔者会详细分析,有一些问题在网上都查不到。这些环境配置上的坑希望以后不要再踩到
一、安装Ubuntu 16.04双系统
原文是“简书”上的大神的帖子,非常详细,笔者完全按照文章的步骤安装的,并没有遇到问题 : Win10和Ubuntu16.04双系统安装详解;
Ubuntu镜像官网下载,Ubuntu中国下载地址,Ubuntu百度云下载:链接:http://pan.baidu.com/s/1o7UgBCu 密码:vr90;
UltraISO刻录软件:直接百度即可得到下载地址
二、安装nVidia驱动,配置cuda,cudnn运行环境
原文主要参考"linux公社"的大神的帖子:Ubuntu 16.04 安装配置Caffe 图文详解
笔者的硬件配置:core i5,16G arm,GTX1080 Ti;因此选择 cuda 8.0+cudnn 6.0
下面是笔者的安装过程
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
1
2
3
4
如果安装错误,重新运行代码即可,保证网络畅通
2.安装NVIDIA驱动
(1)查询NVIDIA驱动
首先去官网 http://www.nvidia.com/Download/index.aspx?lang=en-us,查看适合自己显卡的驱动并下载:
驱动文件后缀名应当是以.run结尾的。我们要把这个文件移动到home目录下,原因是下面我们要切换到文字界面下,如果放到~/下载 下面,我们没有办法进入下载这个目录(没有中文输入法,且中文全部是乱码)
我的显卡型号是GTX1080 Ti,系统是linux 64位,按照要求选择后点击search.,点击下载就好了。
我下载后的驱动文件是:NVIDIA-Linux-x86_64-384.98.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 ./NVIDIA-Linux-x86_64-384.98.run,按照提示一步步来~
完成后,再次重启电脑。
安装完成之后输入以下指令进行验证: sudo nvidia-smi,若列出了GPU的信息列表则表示驱动安装成功。如下图:
3.安装CUDA
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。 (1)下载CUDA 首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA,选择自己合适的版本
sudo chmod 777 cuda_8.0.44_linux.run
sudo ./cuda_8.0.44_linux.run
注意:执行后会有一系列提示让你确认,但是注意,有个让你选择是否安装nvidia驱动时,一定要选择否: Install NVIDIA,因为前面我们已经安装了更加新的驱动了,所以这里不要选择安装。其余的都直接默认或者选择是即可。
(3)环境变量配置
打开~/.bashrc文件: sudo gedit ~/.bashrc 将以下内容写入到~/.bashrc尾部:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
(4)测试CUDA的samples
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
如果显示一些关于GPU的信息,则说明安装成功。
4.配置cuDNN cuDNN是GPU加速计算深层神经网络的库。 首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。
下载cuDNN6.0 之后进行解压:
sudo tar -zxvf ./cudnn-8.0-linux-x64-v6.0.tgz
进入cuDNN6.0 解压之后的include目录,在命令行进行如下操作: 复制头文件
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include
再将进入lib64目录下的动态文件进行复制和链接:
cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/
复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.6
生成软衔接
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6
生成软链接
sudo ln -s libcudnn.so.6 libcudnn.so
5.安装opencv3.2 从官网(http://opencv.org/downloads.html)下载Opencv,并将其解压到你要安装的位置,假设解压到了/home/opencv。
安装前准备,创建编译文件夹:
cd ~/opencv
mkdir build
cd build
1
2
3
配置:
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
1
2
编译:
sudo make -j8
-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。
安装: 以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:
sudo make install
** 三、安装Anaconda**
python好用,但是python不同版本和各种包管理很让人头疼。Anaconda是一个python的一个包装,它将一些python常用的package打包,方便pythoners直接使用。不但如此,他还有自己的安装方式conda,这里有提供各种pip里面找不到的包。
anaconda安装参照官网下载安装即可https://www.anaconda.com/download/,傻瓜式安装非常方便
安装之后再命令终端输入
$ python
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 16 2017, 17:29:19)
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
1
2
3
4
5
出现上述信息,说明安装成功
** 四、下载faster-rcnn,编译caffe**
1、GitHub上下载faster-rcnn:https://github.com/rbgirshick/py-faster-rcnn,并下载对应的caffe
按照下图中的文件结构,配置本地的faster-rcnn工程。
2、下面配置caffe,这里参考的是“Linux公社”的大神的帖子:http://www.linuxidc.com/Linux/2016-12/138870p2.htm
(1)进入caffe-faster-rcnn目录 (2)因为make指令只能make
Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config:
sudo cp Makefile.config.example Makefile.config
(3) 打开并修改配置文件: sudo gedit Makefile.config 打开Makefile.config文件
根据个人情况修改文件:
a.若使用cudnn,则将
#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
b.若使用的opencv版本是3的,则 将
#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3
c.若要使用python来编写layer,则 将
#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1
d.重要的一项 : 将 # 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的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
(4)修改makefile文件 打开makefile文件,做如下修改:
将:
NVCCFLAGS +=-ccbin=$(CXX)-Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(5)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉: 将
# error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
3、配置完成后,下面进行编译。直接编译会出现编译错误,这是因为faster-rcnn默认的caffe支持的cudnn版本是V4,而想用1080Ti显卡,必须使用cuda7.5+cudnn5.0以上版本,因此编译caffe会出现版本不兼容而导致的函数参数不对应的错误。这种情况参考博文:http://blog.csdn.net/u010733679/article/details/52221404,
笔者是用的手动修改的方式,下载最新的caffe:https://github.com/BVLC/caffe,
用最新caffe源码的以下文件替换掉faster rcnn 的对应文件 include/caffe/layers/cudnn_relu_layer.hpp,
src/caffe/layers/cudnn_relu_layer.cpp,
src/caffe/layers/cudnn_relu_layer.cu
include/caffe/layers/cudnn_sigmoid_layer.hpp,
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cu
include/caffe/layers/cudnn_tanh_layer.hpp,
src/caffe/layers/cudnn_tanh_layer.cpp,
src/caffe/layers/cudnn_tanh_layer.cu
用caffe源码中的这个文件替换掉faster rcnn 对应文件 include/caffe/util/cudnn.hpp
将 faster rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu 文件中的所有 cudnnConvolutionBackwardData_v3 函数名替换为 cudnnConvolutionBackwardData
cudnnConvolutionBackwardFilter_v3函数名替换为 cudnnConvolutionBackwardFilter
编译caffe:
make -j8 && make pycaffe
1
到此,环境配置结束。下面笔者会介绍使用faster-rcnn训练自己的网络,并详细讲解遇到的坑。
** 五、制作数据集,运行faster-rcnn**
使用faster-rcnn最麻烦的一步就是制作数据集。这里参考两篇博文:
Faster-RCNN+ZF用自己的数据集训练模型(Python版本)
py-faster-rcnn算法caffe配置,训练及应用到自己的数据集
两篇博文使用不同的网络 ZF 和 VGG16,但是制作数据集是相通的。笔者使用VGG16网络,按照下图的文件结构进行修改。
VGG16初始化网络百度云盘:链接:http://pan.baidu.com/s/1i49f47j 密码:x1i2
#下面说说我遇到的bug
1、
[cudnn_conv_layer.cpp:53] Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR
这个错误是cudnn内部错误,当时困扰了笔者好久,再网上搜索,解决的方法不尽相同。
(1)修改caffe中的makefile.config,将 USE_CUNDD := 1改为 #USE_CUDNN := 1。这意味着运行代码将不使用gpu加速。但是运行深度神经网络不可能不使用gpu加速,笔者测试过神经网络在cpu和gpu下运行的速度,后者大概比前者快了100多倍,不使用gpu加速,运行时间太长,不现实。
(2)gpu加速性能不够,显存溢出。这个解释对于笔者来说不可能,1080Ti运行faster-rcnn是完全足够的。后期解决bug后的运行过程中,显存只用掉了3.3G,远远没达到1080Ti的11G的上限。
(3)caffe编译错误,笔者make clean,并重新编译caffe,编译过程一路通畅,然而还是不能解决问题。
(4)使用sudo超级用户命令运行,完全解决了这个问题。笔者之前没有使用anaconda,因此sudo运行时会出现系统找不到路径的错误。因此建议安装anaconda使用python,在sudo下运行完全没有问题,非常方便。
2、
Traceback (most recent call last):
File "./tools/train_net.py", line 112, in <module>
max_iters=args.max_iters)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/fast_rcnn/train.py", line 161, in train_net
model_paths = sw.train_model(max_iters)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/fast_rcnn/train.py", line 102, in train_model
self.solver.step(1)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/rpn/proposal_target_layer.py", line 66, in forward
rois_per_image, self._num_classes)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/rpn/proposal_target_layer.py", line 191, in _sample_rois
_get_bbox_regression_labels(bbox_target_data, num_classes)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/rpn/proposal_target_layer.py", line 127, in _get_bbox_regression_labels
bbox_targets[ind, start:end] = bbox_target_data[ind, 1:]
TypeError: slice indices must be integers or None or have an __index__ method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
这个bug原因是numpy版本过高造成的,可以降低numpy的版本至1.11.0.
或者修改代码,强制int类型转换,参考博文:http://blog.csdn.net/mydear_11000/article/details/70241139
3、
Traceback (most recent call last):
File "./tools/train_net.py", line 112, in <module>
max_iters=args.max_iters)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/fast_rcnn/train.py", line 157, in train_net
pretrained_model=pretrained_model)
File "/home/zjd/workspace/py-faster-rcnn-master/tools/../lib/fast_rcnn/train.py", line 51, in __init__
pb2.text_format.Merge(f.read(), self.solver_param)
AttributeError: 'module' object has no attribute 'text_format'
1
2
3
4
5
6
7
8
解决方法有两个
(1) 安装 sudo pip install protobuf==2.5.0.经笔者测试没有效果
(2) 直接在/home/xxx/lib/fast_rcnn/train.pyi的头文件导入部分加上
import google.protobuf.text_format,经笔者测试完美解决。
到此为止,笔者终于能够开心的运行深度神经网络啦~
---------------------
作者:羿达
来源:CSDN
原文:https://blog.csdn.net/flygeda/article/details/78638824
版权声明:本文为博主原创文章,转载请附上博文链接!
可能出现的问题:https://blog.csdn.net/jmt330/article/details/78568876
caffe编译成功,但在编译caffe-fast-rcnn时报错,也就是说我的电脑新装的caffe和cuda,cndnn的版本是对应的。并且,在注释掉cudnn时,caffe-fast-rcnn的编译不出错。因此考虑作者发布的源码中caffe的版本较低,于我的7.0cudnn版本不匹配,因此需要对caffe-fast-rcnn中涉及cudnn的文件全部替换为原先可以成功编译的caffe文件。
以下是
jinggegebuaa
http://blog.csdn.net/keyanxiaocaicai/article/details/68488944
给出的解决方法:
当当当 把caffe里面的所有与cudnn相关的.h 和.cpp 替换成能用cudnn 编译过的caffe
需要替换的cudnn有:
第一部分:
caffe-my/include/caffe/util 下面的cudnn.hpp
对应的cpp 文件为:caffe-my/src/caffe/util 下面的cudnn.cpp
第二部分:caffe-my/include/caffe/layers下面
同样的对应的cpp 文件为:
---------------------
作者:yes蒋淼淼
来源:CSDN
原文:https://blog.csdn.net/jmt330/article/details/78568876
版权声明:本文为博主原创文章,转载请附上博文链接!
https://blog.csdn.net/qq_33202928/article/details/72526710
最近在学习 faster rcnn ,本来环境已经配置好,已经跑完自己的程序,运行良好,后来安装了tensorflow,然后重新使用 faster rcnn 进行训练的时候居然出错了,我很纳闷,期间没有卸载或者修改配置文件啊,怎么会这样?
问题:
pb2.text_format.Merge(f.read(), self.solver_param) AttributeError: 'module' object has no attribute 'text_format'
经过google之后发现是protobuf的本版发生了变换,之前在配置caffe的时候手动安装了protbuf,版本是2.5.0,后来安装了tensorflow 我回忆了一下,protobuf的版本貌似是发生了变换。
所以解决办法:sudo pip install protobuf==2.5.0
刚才又发现一个新的解决方法:
在文件./lib/fast_rcnn/train.py增加一行import google.protobuf.text_format 即可解决问题
---------------------
作者:火腿肠的幸福生活
来源:CSDN
原文:https://blog.csdn.net/qq_33202928/article/details/72526710
版权声明:本文为博主原创文章,转载请附上博文链接!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ubuntu16.04 faster-rcnn+caffe+gpu运行环境配置以及解决各种bug - Python技术站