安装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
2017/6/5
在跑crfasrnn的demo时,首先要编译这个程序自带的caffe文件夹,但是caffe文件夹里面的Makefile.config中没有关于opencv的编译选项,所以第一次编译虽然通过了,但是跑demo的时候会有error,我把opencv的选项加进去再编译然后再跑demo就没问题了
以上是关于安装caffe时遇到的各种问题的主要内容,如果未能解决你的问题,请参考以下文章