Ubuntu16.04 faster-rcnn+caffe+gpu运行环境配置以及解决各种bug
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
版权声明:本文为博主原创文章,转载请附上博文链接!
錯誤:AttributeError: 'module' object has no attribute 'text_format'
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的更多相关文章
- 配置ubuntu16.04下Theano使用GPU运行程序的环境
ubuntu16.04默认安装了python2.7和python3.5 .本教程使用python3.5 第一步:将ubuntu16.04默认的python2修改成默认使用python3 . sudo ...
- Ubuntu16.04.1安装Caffe(GPU)
Caffe的优势: 1.上手快:模型与相应优化均以文本形式而非代码形式给出,caffe给出了模型的定义,最优化设置以及预训练的权重 2.速度快:与CuDNN结合使用,测试AlexNet模型,在K40上 ...
- Windows10 Faster R-CNN(GPU版) 配置训练自己的模型
参考链接 1. 找到合适自己的版本,下载安装Anaconda 点击跳转下载安装 Anaconda,双击下载好的 .exe 文件安装,只勾选第一个把 conda 添加到 PATH 路径.
- Ubuntu16.04常用C++库安装及环境配置
1. 常用非线性求解库Ceres #================================================================================== ...
- 通过Anaconda在Ubuntu16.04上安装 TensorFlow(GPU版本)
一. 安装环境 Ubuntu16.04.3 LST GPU: GeForce GTX1070 Python: 3.5 CUDA Toolkit 8.0 GA1 (Sept 2016) cuDNN v6 ...
- ubuntu16.04和服务器 caffe 安装
在centos6.X上安装caffe 0.编译安装gcc4.8.5 由于centos6.x中的gcc版本老旧,不支持c++11所以要安装gcc4.8.5,以下是安装教程.参考CentOS 6.4 编译 ...
- ubuntu16.04下Hyperledger之搭建Fabric环境简单操作(五步启动e2e_cli)
如果你已经安装好go等工具.git及checkout相关代及下载相关镜像,您只需下面5步就能up e2e_cli~/go/src/github.com/hyperledger/fabric$ sudo ...
- JAVA EE 运行环境配置(包含JAVA SE)
JAVA EE 运行环境配置(包含JAVA SE) 1.下载并安装jre-7u7-windows-i586.exe (最新的JAVA运行环境) 2.下载并安装java_ee_sdk-6u4-jdk7- ...
- maven(六),外置maven运行环境配置
外置maven eclipse内置的maven插件是固定版本,如果要用其他版本的maven,可以使用外置maven 下载地址: http://maven.apache.org/download.cgi ...
随机推荐
- 部署 Prometheus Operator【转】
本节在实践时使用的是 Prometheus Operator 版本 v0.14.0.由于项目开发迭代速度很快,部署方法可能会更新,必要时请参考官方文档. 下载最新源码 git clone https: ...
- burpsite 和jdk的配置
最近小白再安装工具,首先是java的jdk,小白的电脑重装系统之后以前装的就没有了,然后记性不好的小白就开始百度了,百度上说是需要配置java_home和classpath路径然后再去编辑path路径 ...
- Day4 - G - 确定比赛名次 HDU - 1285
有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道 ...
- 020、MySQL创建一个存储过程,显示存储过程,调用存储过程,删除存储过程
一.我们创建一个MySQL储存过程,在SQL代码区写入以下内容,并执行就可以了 #编写一个存储过程 CREATE PROCEDURE ShowDate ( ) BEGIN #输出当前时间 SELECT ...
- hadoop ozone入门
简介 众所周知,HDFS是大数据存储系统,并在业界得到了广泛的使用.但是无论大集群还是小集群其扩展性都受NameNode的限制,虽然HDFS可以通过Federation进行扩展,但是依然深受小文件和4 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:Map接口
import java.util.HashMap ; import java.util.Map ; public class HashMapDemo01{ public static void mai ...
- 解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
1.无效的方法: (1)执行 df -m,然后查看U盘设备是否挂载到了/media,导致cd-rom不能被挂载,执行 umount /media. (2)在光驱加载安装界面,把U盘拔下换到电脑的另外 ...
- 初玩PLSQL连接 Oracle
1. 官网下载合适的[Instant Client] https://www.oracle.com/database/technologies/instant-client/winx64-64-dow ...
- [BJDCTF2020]EasySearch
0x00 知识点 Apache SSI 远程命令执行漏洞 链接: https://www.cnblogs.com/yuzly/p/11226439.html 当目标服务器开启了SSI与CGI支持,我们 ...
- python爬虫笔记01
1.urllib库中request,parse的学习 1.1 简单的请求页面获取,并下载到本地 request的使用 from urllib import request # 获取此网页的demout ...