ubuntu16.04+caffe some tips:
1、caffe对python3.6不是很支持,会报一个非常厉害的错误,目前在网上没找到解决方案:Dynamic module does not define module export function(pyinit_caffe)。官网上都说不建议用高版本的python3.6之类的,看到网上有人说配python3.5、3.6什么的是一个adventure~~因此最终选择python2.7,用的anaconda,因为后期安装包的时候真的会舒服很多,用自带的2.7真的可能很糟心。。。
2、这些是cuda,cuDNN都弄好的情况下单独配置的caffe。
3、首先是ubuntu下装anaconda,这个地方一定要用清华的镜像源,速度快到爆炸:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
可以直接bash他的sh文件,权限不够就加sudo,按照提示一步步安装,但是有一个安装路径,最好是不要安装到/root下,要不然到时候访问起来会在图形界面访问起来会比较麻烦(不过应该可以通过更改权限来解决吧,对这个不是很懂,不做研究)。因此将它放在了/usr/local/下面。
4、网上下载得到caffe-master(就是放置caffe文件的,名字可能不一样)文件。。。可以参考:
(1)、https://blog.youkuaiyun.com/yhaolpz/article/details/71375762
(2)、https://blog.youkuaiyun.com/qq_31261509/article/details/78755968
在第二个链接中对于它的一个Makefile.config的配置USE_LMDB:=0才能在我的机器上生效。
主要是需要配置一下Makefile.config文件。
最后来编译caffe-master文件夹下的文件:
sudo make clean -j8
sudo make all -j8
sudo make test -j8
sudo make runtest -j8
#(-j8表示指定8个线程来工作)
最后sudo make runtest -j8如果输出PASS则表示编译成功。出现“libcudnn.so.7 cannot open shared object file:No such file or directory”,则可以参考上面的链接2。
5、比较糟心的是caffe的python2.7接口的配置:
先将caffe-master文件夹下的接口依赖项安装好:
sudo pip install -r /path/to/caffe-master/python/requirements.txt
在这个地方,它自动安装的时候,可能会没问题,也可能一路飘红,这样就找到对应的飘红的地方,查找错误的解决,一般是因为某个东西版本低了,或者是没安装,按照用pip install应该都可以解决。
对于可能出现这个错误:
error: python-dateutil 1.5 is installed but python-dateutil>=2.4.0 is required by set(['vobject'])
我们可以重装一下dateutil差不多可以解决:https://github.com/odoo/odoo/issues/11122
sudo apt-get remove --auto-remove python-dateutil
sudo apt-get purge --auto-remove python-dateutil
sudo apt-get install python-dateutil
6、最后可以在caffe-faster-rcnn目录下
make pycaffe
应该就是没问题的了。
不过在这里最好可以去配置一下环境变量:
sudo gedit ~/.bashrc
#在最后添加:
export PYTHONPATH:=/path/to/caffe/python:$PYTHONPATH
#保存退出后
source ~/.bashrc
嗯,就这样,差不多。
caffe配置的错误以及解决:
- problem 1:
- solution:
# 依赖项未安装好
sudo apt-get install git
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 libatlas-base-dev
sudo apt-get install python-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
- problem2:
- question3
- solution:
- 这个错误是因为没有在编译的时候/usr/bin/ld下没找到我opencv编译得到的lopencv_imgcodecs文件,注意这个文件只有opencv3才会有。将对应的-lopencn_imgcodercs.so的文件(这个文件应该是在opencv的lib下)做成软连接放在/usr/lib下即可。
problem4:在sudo make test -j8时的错误
solution:
找到文件$caffe_root/src/caffe/test/test_smooth_L1_loss_layer.cpp
#删除下面语句
#include "caffe/version_layers.hpp"
problem5:(sudo make runtest -j8)
libcudnn.so.7 cannot open shared object file: No such file or directory
solution:
#其中的数字改成自己机器上对应的就可以了,后面的ldconfig是使更改生效,这个还是一个lib指向的问题
sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 && sudo ldconfig
problem7: (在python demo.py测试faster rcnn网络的时候)
ImportError:no module named gpu_nms
solution:
在py-faster-rcnn的lib中make
problem8:(还是运行demo的时候)
syncedmem.hpp:18]Check failed:error == cudaSuccess(30 VS. 0) unknows error,
solution:
sudo python xxx.py
感谢:http://blog.youkuaiyun.com/qq_26569761/article/details/51737154
caffe与cudnn版本不匹配的问题解决:https://blog.youkuaiyun.com/jmt330/article/details/78568876,一般会出现在比较新的caffe项目上