Caffe我爱编程

ubuntu14.04LTS编译caffe时make all不通

2017-05-31  本文已影响717人  银辉天使

本文根据我编译时出现的一些错误,参考了swfa1的csdn博客《caffe编译中的python问题》http://www.th7.cn/Program/Python/201609/967571.shtml 和ThinkingMan新浪博客《Ubuntu14.04编译caffe问题记录http://blog.sina.com.cn/s/blog_721a75e50102wfig.html,做的一些记录,以便以后备用。

系统环境做一下说明:

ubuntu14.04LTS,CUDA 8.0,  cudnn 5.0, caffe :官方发布的caffe。

错误1:

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libopencv_highgui.so: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0'

collect2: error: ld returned 1 exit status

make: *** [.build_release/tools/convert_imageset.bin] Error 1

错误描述:如上图显示,未定义的引用“TIFFReadRGBAStrip@LIBTIFF_4.0”,说明是libtiff库未指明,

解决办法:执行下面命令操作查找对应库路径,并添加

$ldconfig -p|grep libtiff #这个指令是查找库索引

下图是我查找到的链接关系

$ export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu/ #这个指令是将路径添加至配置文件中

然后再编译make all,就可以继续进行下面测试了。

$make clean # 清理上次编译错误记录

$make all -j8

问题2:

/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory # include^

compilation terminated.

make: *** [.build_release/src/caffe/layer_factory.o] Error 1

make: *** Waiting for unfinished jobs....

错误描述:这个是因为cplus文件索引路径错误问题,我安装caffe是用的是anaconda2,一些路径出了问题,将python对应路径添加进去就好

解决办法:如下

$export CPLUS_INCLUDE_PATH=/usr/include/python2.7

然后再编译make all,就可以继续进行下面测试了。

$make clean# 清理上次编译错误记录

$make all -j8


2017/10更新:

问题描述:前一段时间服务器又歇菜了,项目组的同学重装系统后,发现正常步骤安装caffe后,老是找不到pyconfig.h文件,也就是上面这个问题。可是检查的时候路径,环境变量什么都没问题。后来又把caffe卸了重装好几次,还是这个问题。今早又重新装载的时候,git clone 时,报下面这个错:

以前一直以为是权限问题,没想太多,直接指令前面加sudo执行了。后来查了一下这个问题,在这篇博客(http://blog.csdn.net/superior_yong/article/details/62041526)中提到了这个问题,并给出了解决方案。如下图。

问题分析:好吧,那我查看一下我的根目录下的.config文件夹,发现我的这个文件加的所有者是root。可能是这个原因,跨权限调用文件的原因,造成后面的一系列编译错误吧。

解决办法:

参照这篇博客(http://www.linuxidc.com/Linux/2015-03/114695.htm),我把文件夹所有者改了回来,编译发现没有错了,都通过了。

3.错误

ImportError: No module named Cython.Distutils

解决办法:

安装Cython

$sudo apt-get install cython

4错误

make pycaffe后,还有一些库找不到,我自己测试,这个问题也适用于基于CAFFE 平台的的其他神经网络,例如py-faster-rcnn和py-R-FCN等。

(参考这篇博客http://www.cnblogs.com/venus024/p/5664103.html)

解决办法:

$cd caffe/python

$for req in $(cat requirements.txt); do pip install $req; done

caffe/python/requirements.txt这个文件记录caffe的Python接口所需要的所有函数库,执行上面语句便可依次检查是否所需模块都安装,有的话自动跳过或升级,没有的话自动安装。

5错误

由于服务器桌面系统经常崩盘,找售后他们又重装了系统,所以所有的环境得重新配置。执行make all 时,发现了下面的错误。经排查发现是cudnn安装配置错误。

查到,博客http://blog.csdn.net/u011070171/article/details/52292680,给的解释说,这是因为当前版本的caffe的cudnn实现与系统所安装的cudnn的版本不一致引起的。上官网查了了一下caffe对cuda相关要求,显示如下:

以上判断是caffe版本过旧,cudnn版本太新。下面就对症下药:

解决办法1:(博客中给的办法)

1.将./include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.

2. 将./include/caffe/layers里的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp。  都替换成最新版的caffe里的相应的同名文件。

3.将./src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。

都替换成最新版的caffe里的相应的同名文件。

rbgirshick的py-faster-rcnn实现,因为其cudnn实现为旧版本的实现,所有出现了以上问题.

解决办法2:(降低cudnn版本)

将之前安装的/usr/local/cuda-8.0/l路径下的cudnn的文件删除,按照网上教程重新安装v5.0版,文件关联一下,就好

解决办法3:(更换新版本的caffe)

去github上下载新版的caffe,把caffe重新按照官方教程安装配置一遍。

6错误

运行make runtest,一直报错

Checkfailed:status== CUDNN_STATUS_SUCCESS (3vs.0)  CUDNN_STATUS_BAD_PARAM

错误描述:按照http://www.cnblogs.com/penguinliong/p/6351215.html这篇博客说是GPU被占用,可是我运行$nvidia-smi查看显示,说没有进程调用GPU,经排查还是cudnn的安装问题,因为服务器是多人在使用,被别人装了两个版本的cudnn。

解决办法:删掉一个cudnn,重新安装配置连接,然后再编译make all,就可以继续进行下面测试了。

$make clean# 清理上次编译错误记录

$make all -j8

7错误

今天在给师姐装caffe时,遇到了Python接口无法调用的问题,具体问题描述如下:

按照正常安装步骤,执行$make all,$make test , $make runtest ,$make pycaffe都正常。但是$Python打开Python编译器后,执行import caffe调用caffe的Python接口是出现错误:No module named _caffe,网上查找大部分解释说是 make pycaffe 编译出错,没有正确生成Python脚本文件。

解决办法:

$make clean# 清理上次编译错误记录

sudo 超级用户权限重新执行上面make all ,make pycaffe指令。

需要注意的是,如果错误是 no module named caffe ,可能是你的caffe路径配置错误,执行下面命令,将caffe/python/环境变量路径添加.bashrc文件中。

$sudo vim ~/.bashrc #打开.bashrc文件

在文件最后添加下面指令

export PYTHONPATH=/home/(你的用户名)/caffe(你的caffe安装目录)/python:$PYTHONPATH#这里也可以使用~/caffe/pyhon相对路径

关闭文件, 输入下面指令,是环境变量生效,

$source ~/.bashrc


然后,在Python编译器中import caffe,测试应该可以正常调用caffe。

8错误

还是上面的接口问题,按照错误7解决no module问题后,再次测试出现新的错误如下:

错误描述:如上图最后一行所示,显示运行时错误,网上找问题说是numpy错误。

解决办法:更新numpy模块,执行下面语句更新。

$sudo pip install numpy --upgrade

9错误

环境配置好后,做手写体网络测试,执行 (在caffe安装目录下)

$sudo examples/mnist/train_lenet.sh

出现如下错误

问题描述:出现这种错误是由于训练数据没有准备好。

解决办法:(以下命令都在caffe安装目录下执行)

$.data/mnist/get_mnist.sh#准备数据

$.examples/mnist/create_mnist.sh#生成caffe指定数lmdb据格式

$.examples/mnist/train_lenet.sh#训练模型

更复杂的情况看https://github.com/BVLC/caffe/issues/2709

其他问题以后发现继续补充。

2017/10更新:

10错误:/usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array

问题描述:执行ssd环境配置时出现上述错误。

根据这篇博客http://blog.csdn.net/u010733679/article/details/52125597上说是gcc版本过低

问题解决:按照上述博客所说升级一下gcc。



11错误:执行create_data.sh时报错,如下图。

问题分析:上网查找说是numpy数据包版本过低。

问题解决:执行命令$sudo pip install -U numpy升级一下numpy数据包

12错误:继问题11numpy版本错误问题后,执行create_data.sh 报如下错误:


问题分析:综上问题描述,还是python库没安装全

问题解决:按照问题4解决办法执行一次,解决问题。

上一篇下一篇

猜你喜欢

热点阅读