准备跑一下faster-rcnn的demo,参考了这篇博客,测试过程中出现一些问题,记下来方便查询。
**
一,cudnn版本不匹配(不支持)相关报错。
**
- 编译caffe-fast-rcnn,因为我用的CUDA10版本,CUDNN为7。相比于rbg的原版py-faster-rcnn内的caffe来说,版本新了很多,所以会出现CUDNN相关的报错,解决办法是用新版的caffe里的cudnn相关文件替换py-faster-rcnn内的caffe的对应文件。需要替换的文件如下:
include/caffe/layers/cudnn_relu_layer.hpp,
src/caffe/layers/cudnn_relu_layer.cpp,
src/caffe/layers/cudnn_relu_layer.cu
include/caffe/layers/cudnn_sigmoid_layer.hpp,
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cu
include/caffe/layers/cudnn_tanh_layer.hpp,
src/caffe/layers/cudnn_tanh_layer.cpp,
src/caffe/layers/cudnn_tanh_layer.cu
以及:
include/caffe/util/cudnn.hpp
此外,还需改py-faster-rcnn/caffe-fast-rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu文件中的以下地方:
cudnnConvolutionBackwardData_v3
替换为
cudnnConvolutionBackwardData
cudnnConvolutionBackwardFilter_v3
替换为
cudnnConvolutionBackwardFilter
二,proto相关问题
./include/caffe/util/cudnn.hpp:8:34: fatal error: caffe/proto/caffe.pb.h: No such file or directory
重新生成caffe.pb.h:
解决方法: 用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc
cd 到 ./src/caffe/proto 文件夹后
语句: protoc --cpp_out=/home/path/to/caffe/include/caffe/ caffe.proto
注意:caffe.proto前面有空格
参考这里
二,链接库问题
问题描述: error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory
解决办法: 确认/etc/profile中的路径包含了cuda10.0的安装路径及相应的库文件
export PATH=$PATH:/usr/local/cuda-10.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-10.0/lib64
生效:
source /etc/profile
使配置文件生效,再次执行。
若仍提示相同的错误,则执行以下命令,将相应的库文件复制到/usr/lib
sudo cp /usr/local/cuda-10.0/lib64/libcudart.so.10.0 /usr/local/lib/libcudart.so.10.0 && sudo ldconfig
sudo cp /usr/local/cuda-10.0/lib64/libcublas.so.10.0 /usr/local/lib/libcublas.so..0 && sudo ldconfig
sudo cp /usr/local/cuda-10.0/lib64/libcurand.so10.0 /usr/local/lib/libcurand.so.10.0 && sudo ldconfig
10ps. ldconfig命令是一个动态链接库管理命令,是为了让动态链接库为系统共享
重新编译:
make clean
make all -j8
make pycaffe
**
问题描述:
ImportError: libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory
原因分析:
因为编译好了caffe-fast-rcnn后,没有export 编译好的caffe-fast-rcnn/.build_release/lib路径,导致找不到该路径下的一些动态链接库,如 libcaffe.so.1.0.0-rc3
解决办法:
临时方案:
export LD_LIBRARY_PATH=/home/path/to/caffe-fast-rcnn/.build_release/lib:$LD_LIBRARY_PATH
如果一直要使用这个caffe-fast-rcnn,那么也可以写到~/.bashrc里:
sudo vim ~/.bashrc
export LD_LIBRARY_PATH=/home/wangshun/caffe/.build_release/lib:$LD_LIBRARY_PATH
source ~/.bashrc
三,caffe python接口打不开,找不到caffe模块
**
问题描述:
>>>import caffe Traceback (most recent call last):
>File "<stdin>", line 1, in <module> ImportError: No module named caffe
解决思路
基本思路是把caffe中的python导入到解释器中
解决方法
放到配置文件中,可以永久有效果,命令操作如下:
A.把环境变量路径放到 ~/.bashrc文件中,打开文件
sudo vim ~/.bashrc
在文件中写入:
export PYTHONPATH=~/caffe/python:$PYTHONPATH
生效:
source ~/.bashrc
四,python版本不同导致的错误
问题:
指令:
cd $FRCN_ROOT
./tools/demo.py
问题:
File “demo.py”, line 137
print ‘\n\nLoaded network {?}’.format(caffemodel)
^
SyntaxError: invalid syntax
解决:
python3的环境下
修改print ‘\n\nLoaded network {?}’.format(caffemodel)为
print (’\n\nLoaded network {?}’.format(caffemodel))
或者,修改当前用户的~/.bashrc,使用/usr/bin/下的 python2.7:
vi ~/.bashrc
添加:
export PATH="/usr/bin:$PATH"