关于在ubuntu14.04下搭建py-faster-rcnn环境时所遇到的一些坑

来源:互联网 发布:惊讶猫走红网络 编辑:程序博客网 时间:2024/05/22 01:49

首先声明一下,这是本人自己搭建py-faster-rcnn所遇见的一些坑,不会涵盖所有的问题,因为很多问题的解决方法网上都有。

再谈一下,既然网上都有解决方法,为什么我还要写,因为网上的一些教程说的不是很全面,提供的方法并不能完全解决该问题,所以我觉得有必要写点什么,供大家参考。

第一次写博客,希望能对大家有所帮助,大家遇到一些其他的问题,欢迎留言讨论。

首先本人作为一个小白,第一次接触图像处理方面的东西,通过查阅文献找到了faster-rcnn这个框架。

论文名称:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks  论文链接

如果想对该算法有个较为清晰的了解,推荐这篇博客:博客链接  知乎上的这篇介绍一些检测方法历史的文章也不错:文章链接

该框架的一个应用,华南理工大学的团队利用该框架赢得了一个手部检测国际比赛的第一名。比赛链接

还是回归正题,聊聊搭环境的事情吧。首先得讲下硬件软件环境了:

硬件:GTX970 (显卡显存至少3G以上)

软件:ubuntu 14.04 64位系统

环境说明:运行Faster-rcnn中的最小的zf网络也需要3个G显存,如果想要在纯cpu环境下运行demo的话,可以参考这篇文章:http://www.cnblogs.com/justinzhang/p/5386837.html

但是如果想要自己训练数据集,本人暂时没有找到教程在纯cpu环境下进行训练,即使可以,那也没法用zf和VGG网络进行训练。

如果要装双系统,那么参考百度经验就可以了,想要说的是,在用easybcd做引导的时候,类型要选择GRUB模式,百度经验里面没说清楚,高级设置中的Drive选BOOT,如果分区分好了,会出现BOOT选项。

然后安装好之后,现在就是有了ubuntu14.04的裸机,然后就先装一波依赖包吧。

据我的不完全统计有这么几个:git、setuptools、cython、numpy、pip、 python-opencv, easydict、python-yaml

具体安装方法,包括了apt-get和pip install,具体怎么装,可以自行百度,我这边就不细讲了。

这些依赖包有些是安装工具,有些是环境需求。

这些包安装好后,我们正式开始搭建py-faster-rcnn。

1. 下载py-faster-rcnn源码:源码链接

下载方式是用git,

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

2.按照github上的readme是要在lib文件夹下进行make,但是实际情况是如果你caffe没装好,建议别着急make,因为make中依赖cuda。

所以这一步我们先装caffe,具体安装caffe的教程可以参考官网和这篇文章 http://blog.csdn.net/ubunfans/article/details/47724341

这篇文章写的还是很不错的,基本顺序按照博客的走就行,但是需要看一下我的几个注意点再安装:

  2.1建议cuda使用 cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb这个版本的,也就是V7.5,cudnn选择cudnn-7.0-linux-x64-v4.0-prod.tgz这个版本,也就是V4.0

如果你选了V5.0,安装之后运行demo会出错,虽然网上有纠错教程,但是略麻烦,所以就用V4版本就好了。;

  2.2安装cuda之前要升级gcc,之前没有注意到这点也走了不少弯路,gcc升级教程可以参考这篇文章:http://www.cnblogs.com/loveidea/p/4384837.html

  2.3在安装好cudnn之后,需要更新软链接,因为我们用的是V4版本,就不能跟上面那篇博客中的一样了,要将5改成4,具体版本号可以cd /usr/local/cuda/lib64/ 然后搜索一下文件夹中libcudnn.so.X的这个X是几,我的是4.0.7那么对应的命令就是:

  

sudo chmod +r libcudnn.so.4.0.7sudo ln -sf libcudnn.so.4.0.7 libcudnn.so.4sudo ln -sf libcudnn.so.4 libcudnn.sosudo ldconfig
  2.4安装到编译caffe这一步,这时候大坑来了,特别注意Makefile.config这个文件,需要去掉注释的地方:

USE_CUDNN := 1  
ANACONDA_HOME := $(HOME)/<strong>anaconda2 </strong>  PYTHON_INCLUDE := $(ANACONDA_HOME)/include \           $(ANACONDA_HOME)/include/python2.7 \           $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
WITH_PYTHON_LAYER := 1  
那篇博客教程里面的config文件还是不太对的,特别是这个anaconda现在文件夹都是加了个2,即anaconda2,还有就是下面的python_include的三行都要去掉注释,不然运行demo会出错。

  2.5在make的时候,基本上都是要加sudo,不然会报错权限不够,此时就是各种坑会出现的时刻,首先我贴一个文章,有些错误我没遇到,但是有人总结了:文章链接

  2.6在这里我想提一下cmake和make的问题,官网上提供了另一种方法,cmake,大家最好还行先用make,然后如果遇到ImportError: libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory问题的话,再用cmake。

  2.7在make test时基本都会报错,说缺少vision_layer.hpp之类的问题。找了很久,才发现这个新版本的caffe跟老版本的不一样,gitclone py-faster-rcnn的时候下载下来的是新版本caffe,但是vision_layer.hpp是老版本也就是原作者的版本里面的,所以真的很坑,我后来就将include/caffe文件夹下的缺少的几个hpp文件手动复制到了我的caffe-fast-rcnn/include/caffe/下,具体哪几个大家自己对比看一下就好了,但是我的make test还是运行不成功,因为查到这个test不成功不影响faster-rcnn的运行,所以我就没管了。

3.现在开始到lib文件加下进行make,然后就可以运行demo了,此时又一坑来了,这时候就会发现各种问题,首先有个帖子总结了一些问题:http://blog.csdn.net/jiajunlee/article/details/50373815

但是呢,这篇文章也有一点小瑕疵,比如我遇到了“undefined symbol _nms”这个问题,按照文章中的改法改完后,依然是没用的,为什么呢,因为按照文章中的改法,改完之后,需要重新在py-faster-rcnn/lib文件夹下重新make,这样才能生成新的gpu_nms.so文件,当然也可能是因为我没什么经验,所以我说这个也是为了其他小白们。也就是建议大家修改了其他的文件之后,可能需要重新的make之类的操作,不然修改也不生效。

4. 另外附上几个我遇到的问题以及解决方法。

  4.1 version `GLIBCXX_3.4.20' not found   解决方法:http://www.ithao123.cn/content-10627395.html

  4.2 Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so  说到这个问题,就因缺丝挺了。首先,网上关于这个问题的解决方法不多,搜了搜基本都说是要装inter mkl,我就傻乎乎的装了一整天,因为首先要去intel公司网站申请个学生帐号,然后再下载,先下了17版本的,文件挺大的,然后又说不行要装2015版的,我又卸了17版本重装15版本,搞了一天吧,真是坑啊,安装完之后兴高采烈地跑了一下demo.py,然而并没有什么卵用,还是出现这个错误,这我就无语了啊,然后我就扔了不管了,第二天晚上再重新研究了一下,我先在我系统里全文搜索了一下libmkl_avx2.so,除了我安装的mkl文件夹下有,那个anaconda2文件夹下也有啊。。。那怎么还出现这个问题呢,然后我手一抖输入了sudo ./demo.py 然后问题就没有了。此时,我只能,呵呵呵呵.....
  4.3 另外,我之前在没有好显卡的机子上搭了一个只用cpu跑demo的环境,大家可以参考这篇文章,亲测可用:http://www.cnblogs.com/justinzhang/p/5386837.html

由于实在是被网上的一些不完整的教程给坑惨了,所以想自己写一篇,希望能作为网上一些其他教程的补充吧,让小白们少走一些弯路。至于一些其他的问题,如缺少什么什么依赖包,大家百度一下基本也能解决。

最后,欢迎大家批评指正或留言讨论,第一次写格式看起来有点累,待我摸索一下分段。










1 0
原创粉丝点击