安装caffe时遇到的各种问题

Posted YYYYQQQQ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装caffe时遇到的各种问题相关的知识,希望对你有一定的参考价值。

2017/5/15

caffe的编译过程

装好了cuda和cudnn之后,接下来就是对caffe文件的编译

首先下载一个BVLC/caffe的安装包,解压为caffe-master这个文件夹

然后cd到caffe-master这个目录下,运行下面的指令,相当于新建Makefile.config这个文件并且Makefile.config.example的内容复制到Makefile.config中,

cp Makefile.config.example Makefile.config

 

然后运行下面的指令打开Makefile.config

vim Makefile.config

 

然后在Makefile.config中做如下修改:

A. 启用CUDNN,去掉#USE_CUDNN := 1中的#

B. 启用opencv3,如果你使用的 opencv >= 3.0.0,去掉#OPENCV_VERSION := 3

中的#

C. 使用python来编译层数的话,去掉#WITH_PYTHON_LAYER:=1中的#

 

然后

make all -j64

下面这两个指令其实可以不运行,因为只是测试编译后的caffe文件到底好不好使

make test -j64

make runtest -j64

 

通过cd指令转到caffe下的python目录中运行下面指令

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

如果提示权限不够的话就是

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

 

然后通过cd指令转到caffe目录中运行下面指令

make pycaffe

 

最后打开~/.bashrc文件

vim  ~/.bashrc

在这个文件中的最后一行添加

export PYTHONPATH=caffe根目录/python:$PYTHONPATH

 

如果执行指令make pycaffe时出现:没有规则可以创建目标”pycaffe”,因为之前在caffe-master文件夹下编译生成了一些文件导致不能去编译pycaffe,接下来要make clean指令将之前编译的文件清除,然后再执行make pycaffe就可以了。

 

在运行语义分割FCN程序中的主文件infer.py的时候,它显示因为CUDNN版本太低不能用它来加速,所以在master-caffe文件夹下的Makefile.config中将USE_CUDNN := 1注释掉并且重新编译master-caffe,然后才能运行infer.py文件。

 

VIM使用

输入i表示编辑文档

Esc是退出编辑进入下面的命令行

然后再下面的命令行中输入:wq表示退出

 

注意:

不要用sudo pip install ipython来安装ipython

要用sudo apt-get install ipython来安装ipython

更新pip这个软件用下面的指令:

sudo pip install --upgrade pip

 

    编译caffe的时候遇到的“cublas_v2.h:No such file or directory”这个错误,刚开始还在网上搜这个错误的答案,其实看命令窗口就可以发现错误出在哪,仔细看错误提示,其实是说 cublas_v2.h这个头文件找不到了,而这个头文件其实是在/usr/local/cuda这个文件夹中的,最后到/usr/local文件夹下发现cuda这个文件夹没有了,难怪说找不到cublas_v2.h这个头文件!

    其实cuda是装cuda时自动生成的文件夹,之所以突然没有了可能是因为我之前装stardict词典和有道词典的时候运行什么指令将cuda这个文件夹给删了,所以我还得再装一遍cuda!以后装其软件输什么指令或者干其他什么事要输入指令的时候一定要先搞清楚指令的意思再输入!!!不然又可能误删什么东西!!

    

编译caffe的前期安装:

下载对应版本的cuda安装包,我下载的是deb(local)版,

安装CUDA

http://blog.csdn.net/u010837794/article/details/63251725

下面是所有CUDA版本的网页链接

https://developer.nvidia.com/cuda-toolkit-archive

 

安装CUDNN

1、删除原来的cudnn系统路径下的一些文件

 

sudo rm -rf /usr/local/cuda/include/cudnn.h

sudo rm -rf /usr/local/cuda/lib64/libcudnn*   #这里*是通配符,

libcudnn*指的是名字中带有libcudnn的所有文件

 

2、安装刚才解压的cudnn版本,在终端cd到刚解压的cuda文件夹,然后继续输入下面两个指令,这两个指令相当于把解压后的cuda文件夹下的一些文件拷到系统路径下面

 

sudo cp include/cudnn.h /usr/local/cuda/include/

sudo cp lib64/lib* /usr/local/cuda/lib64/       #这里*是通配符,lib*指的是名字中带有lib的所有文件

 

3、在系统路径下建立软链接(解压出来的lib64下面有3个so文件。分别是

libcudnn.so 和 libcudnn.so.5以及 libcudnn.so.5.1.3文件。 并且这3个点so文件大小都一样。其实都是软连接!libcudnn.so链接到libcudnn.so.5,而

libcudnn.so.5.又链接到libcudnn.so.5.1.3。 真正的文件只有

libcudnn.so.5.1.3)

 

cd /usr/local/cuda/lib64

sudo chmod +r libcudnn.so.5.1.10

sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5

sudo ln -sf libcudnn.so.5 libcudnn.so

 

接下来设置环境变量:

sudo gedit /etc/profile

 

在打开的文件中加入如下两句话

export PATH=/usr/local/cuda/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

 

保存后,使环境变量立即生效,

source /etc/profile

 

 

然后cd指令进入/usr/local/cuda/samples,执行下面的命令来build samples

sudo make all -j64

 

全部编译完成后,cd进

/usr/local/cuda/samples/bin/x86_64/linux/release,运行deviceQuery

./deviceQuery

如果出现显卡信息,则驱动及显卡安装成功,结果如下:

 

ipython高版本后,其中的ipython notebook就是jupyter了,用

sudo pip install jupyter安装就可以了

 

运行姿态检测的代码提示说找不到configobj,其实configobj指的是一个库,这个库可以用来读配置文件

sudo pip install configobj安装即可

 

 

 

2017/5/23

sudo pip install ipython表示安装ipython的最新版本

sudo apt-get install ipython表示安装与当前python版本最相容的ipython版本

 

 

安装python 2.7

http://blog.csdn.net/sinat_33186733/article/details/51762499

安装完后,接下来编译caffe

 

但是在编译caffe文件的时候出现了下面这个问题:

无法在so中使用libpython.2.7.a

build error msg:

/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `a local symbol\' can not be used when making a shared object; recompile with -fPIC

/usr/local/lib/libpython2.7.a: could not read symbols: Bad value

 

则返回到python的编译文件包下,输入下面的指令进行重新安装

./configure --prefix=/usr/local/  --enable-shared CFLAGS=-fPIC  

make  

sudo make install

http://blog.csdn.net/kevin_darkelf/article/details/51683456

 

 

再重新编译安装一遍之后再编译caffe,却出现下面这个错误:

 

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_python.so:对‘PyUnicodeUCS4_AsWideChar’未定义的引用

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_python.so:对‘PyUnicodeUCS4_FromEncodedObject’未定义的引用

collect2: error: ld returned 1 exit status

make: *** [.build_release/tools/upgrade_net_proto_binary.bin] 错误 1

 

解决方法是编译python文件的时候在

./configure --prefix=/usr/local/  --enable-shared CFLAGS=-fPIC后面增加--enable-unicode=ucs4

http://blog.chinaunix.net/uid-25847668-id-5753684.html?_t=t

 

 

 

这时编译caffe没问题了,但是运行demo程序的时候发现还需要导入Python的相关包,所以到caffe-master/python中的这个目录中去,然后运行下面这个语句安装相应的包

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

然后却出现了下面这个问题:

 

Traceback (most recent call last):

  File "/usr/local/bin/pip", line 7, in <module>

    from pip import main

  File "/usr/local/lib/python2.7/site-packages/pip/__init__.py", line 21, in <module>

    from pip._vendor.requests.packages.urllib3.exceptions import DependencyWarning

  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py", line 62, in <module>

    from .packages.urllib3.exceptions import DependencyWarning

  File "/usr/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/__init__.py", line 29, in <module>

    import urllib3

ImportError: No module named urllib3

 

发现可能是pip的问题,然后在终端输入pip,结果也有error,也显示说是这个No module named urllib3的问题,

所以然后我又以下面这个原始方式再编译python,编译完后,输入pip显示正确

./configure

make  

sudo make install

 

我就把pip给卸载了,然后再按照常规方法编译python,这时caffe能编译通过,然后再安装pip也没啥问题了

 

安装pip的方法:

Ubuntu14.04上安装pip的方法

Ubuntu14.04上,建议通过下面的方法安装,这是一种通用的方法,也适用于Windows,当然在Windows下手动下载下来就行了

 

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate

sudo python get-pip.py

 

如果在Ubuntu14.04上你用sudo apt-get install Python-pip下载安装,在使用时有可能出现问题

这是因为通过apt-get安装的pip版本太老了,老的pip版本依赖requests.compat.IncompleteRead,而在2.4.0版本的requests中已经移除了

requests.compat.IncompleteRead,解决方法是先卸载pip(命令为sudo apt-get remove python-pip),然后再用上面的方法重新安装。

注意这种方式安装的pip卸载的时候删掉各个路径下的pip文件包就可以了

编译caffe前要安装一些caffe的依赖项

 

 

 

 

2017/5/24

 

anaconda,然后装好了后如果导入不了caffe就去改caffe文件夹下的Makefile.config文件,在配置文件中设置与anaconda相关的配置

 

 

2017/5/25

 

Apt-get安装不了软件包:

这个很难讲,可能是依赖关系问题,也可能是源冲突,或者本来源就不好

sudo apt-get -f install试一下看看

不行的话这样

cd /var/lib/dpkg

sudo mv info info.bak

sudo mkdir info

然后apt-get install 或者 apt-get upgrade

再把info替换回去应该就可以了

 

Vim用不了提示错误

 ImportError: No module named _sysconfigdata_nd; unrecognized arguments:

解决方法

sudo ln -s /usr/lib/python2.7/plat-*/_sysconfigdata_nd.py /usr/lib/python2.7/

然后再

cd .vim/plugin

cp blog.vim ~

rm blog.vim

然后vim就可以用了

 

 

 

 

2017/5/31

之前把python卸载了之后的解决办法是利用远程连接在其他电脑拷贝python的相关文件夹到这个电脑

相关链接:

http://bbs.chinaunix.net/thread-1815457-1-1.html

 

然后发现python相关的包比如pip还有其他的什么包都不能用,比如在终端输入pip然后终端会卡住,什么也不显示,并且sudo apt-get install python-pip又显示说python-pip包是最新的,其实是因为拷过来的python中的库没有在usr/bin下建立软连接,所以应该先将所有的这些python相关包卸载掉,然后再重新安装,这样它们就建立了软连接了

先卸载:

sudo apt-get remove 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

再重新安装:

sudo apt-get install 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

 

ImportError: No module named cv2:

sudo apt-get install python-opencv

 

ImportError: No module named configobj :

pip install configobj

 

ImportError: No module named google.protobuf.internal:

sudo apt-get install python-protobuf

 
spyder:
sudo pip install spyder
sudo apt-get install python-pyqt*

 

 

 

 

2017/6/5

在跑crfasrnndemo时,首先要编译这个程序自带的caffe文件夹,但是caffe文件夹里面的Makefile.config中没有关于opencv的编译选项,所以第一次编译虽然通过了,但是跑demo的时候会有error,我把opencv的选项加进去再编译然后再跑demo就没问题了

以上是关于安装caffe时遇到的各种问题的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 14.04 安装caffe深度学习框架

如何在Windows上安装和使用Caffe

安装caffe碰到的坑(各种.so未找到)

从头开始安装Ubuntu,cuda,cudnn,caffe,tensorflow,ROS

Caffe的各个版本简介

caffe安装过程记载