- faster-rcnn提出论文: 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
- faster-rcnn 的算法详解可看这篇博文(清晰易懂,良心博文!): http://blog.csdn.net/shenxiaolu1984/article/details/51152614
- faster-rcnn Python版本源码地址:https://github.com/rbgirshick/py-faster-rcnn
- 基本按照官网上的readme
1.电脑上已经有可运行caffe所需的环境
2.下载faster-rcnn python版本源码
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
3. 进入/py-faster-rcnn/lib 进行编译,build the Cython modules
cd py-faster-rcnn/lib
make
- 如果重新升级或者降级numpy依赖包,需要重新去掉之前生成的文件,重新make; 否则会报这里面的错
问题:
python setup.py build_ext --inplace running build_ext cythoning utils/bbox.pyx to utils/bbox.c Error compiling Cython file: ------------------------------------------------------------ ... # Copyright (c) 2015 Microsoft # Licensed under The MIT License [see LICENSE for details] # Written by Sergey Karayev # -------------------------------------------------------- cimport cython ^ ------------------------------------------------------------ utils/bbox.pyx:8:8: Compiler crash in AnalyseDeclarationsTransform File 'ModuleNode.py', line 122, in analyse_declarations: ModuleNode(bbox.pyx:1:0, full_module_name = 'utils.cython_bbox') File 'Nodes.py', line 408, in analyse_declarations: StatListNode(bbox.pyx:8:0) File 'Nodes.py', line 408, in analyse_declarations: StatListNode(bbox.pyx:8:8) File 'Nodes.py', line 7396, in analyse_declarations: CImportStatNode(bbox.pyx:8:8, module_name = u'cython') File "/home/dsp/anaconda2/lib/python2.7/site-packages/Cython/Utils.py", line 148, in search_include_directories path = os.path.join(dir, dotted_filename) File "/home/dsp/anaconda2/lib/python2.7/posixpath.py", line 73, in join path += '/' + b UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 10: ordinal not in range(128) building 'utils.cython_bbox' extension gcc -pthread -B /home/dsp/anaconda2/compiler_compat -Wl,--sysroot=/ -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/dsp/anaconda2/lib/python2.7/site-packages/numpy/core/include -I/home/dsp/anaconda2/include/python2.7 -c utils/bbox.c -o build/temp.linux-x86_64-2.7/utils/bbox.o -Wno-cpp -Wno-unused-function utils/bbox.c:1:2: error: #error Do not use this file, it is the result of a failed Cython compilation. #error Do not use this file, it is the result of a failed Cython compilation. ^ error: command 'gcc' failed with exit status 1 Makefile:2: recipe for target 'all' failed make: *** [all] Error 1
- 先各种百度,安装cython等;结果发现时路径的坑
- 神坑:路径;py-faster-rcnn存放位置路径中不能有中文,否则报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position
- 最后放到 /home/uername/ 下直接makec成功
4.编译/py-faster-rcnn/caffe-fast-rcnn
cd py-faster-rcnn/caffe-fast-rcnn
make -j32 && make pycaffe
- Makefile.config文件直接用的本机配置caffe的文件
- 问题:
dsp@dsp-PowerEdge-R730:/home/user/ran/Desktop/protobuf-2.6.1$ protoc [libprotobuf FATAL google/protobuf/stubs/common.cc:61] This program requires version 3.4.0 of the Protocol Buffer runtime library, but the installed version is 2.6.1. Please update your library. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library. (Version verification failed in "google/protobuf/any.pb.cc".) terminate called after throwing an instance of 'google::protobuf::FatalException' what(): This program requires version 3.4.0 of the Protocol Buffer runtime library, but the installed version is 2.6.1. Please update your library. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library. (Version verification failed in "google/protobuf/any.pb.cc".) Aborted (core dumped)
这个问题是服务器上的错误:http://blog.csdn.net/m0_37477175/article/details/78233983
https://www.cnblogs.com/javaee6/p/4849051.html
https://github.com/BVLC/caffe/issues/5711
前面两种方法都是了没有解决,后面github上的issue也没有给出解决方法,看以后能不能解决!!!
In file included from ./include/caffe/util/device_alternate.hpp:40:0, from ./include/caffe/common.hpp:19, from ./include/caffe/blob.hpp:8, from src/caffe/blob.cpp:4: ./include/caffe/util/cudnn.hpp:8:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录
- 按照:解决方法: 用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc ,http://blog.csdn.net/xmzwlw/article/details/48270225 没有作用;后面还有一串错误
In file included from ./include/caffe/util/device_alternate.hpp:40:0, from ./include/caffe/common.hpp:19, from ./include/caffe/blob.hpp:8, from ./include/caffe/layers/loss_layer.hpp:6, from src/caffe/layers/loss_layer.cpp:3: ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./include/caffe/util/cudnn.hpp:21:10: warning: enumeration value ‘CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING’ not handled in switch [-Wswitch] switch (status) { ^ ./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::setConvolutionDesc(cudnnConvolutionStruct**, cudnnTensorDescriptor_t, cudnnFilterDescriptor_t, int, int, int, int)’: ./include/caffe/util/cudnn.hpp:108:70: error: too few arguments to function ‘cudnnStatus_t cudnnSetConvolution2dDescriptor(cudnnConvolutionDescriptor_t, int, int, int, int, int, int, cudnnConvolutionMode_t, cudnnDataType_t)’ pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION)); ^ ./include/caffe/util/cudnn.hpp:15:28: note: in definition of macro ‘CUDNN_CHECK’ cudnnStatus_t status = condition; \ ^ In file included from ./include/caffe/util/cudnn.hpp:5:0, from ./include/caffe/util/device_alternate.hpp:40, from ./include/caffe/common.hpp:19, from ./include/caffe/blob.hpp:8, from ./include/caffe/layers/loss_layer.hpp:6, from src/caffe/layers/loss_layer.cpp:3: /usr/local/cuda/include/cudnn.h:500:27: note: declared here cudnnStatus_t CUDNNWINAPI cudnnSetConvolution2dDescriptor( cudnnConvolutionDescriptor_t convDesc, ^ In file included from ./include/caffe/util/device_alternate.hpp:40:0, from ./include/caffe/common.hpp:19, from ./include/caffe/blob.hpp:8, from ./include/caffe/layers/loss_layer.hpp:6, from src/caffe/layers/loss_layer.cpp:3: ./include/caffe/util/cudnn.hpp: In function ‘void caffe::cudnn::createPoolingDesc(cudnnPoolingStruct**, caffe::PoolingParameter_PoolMethod, cudnnPoolingMode_t*, int, int, int, int, int, int)’: ./include/caffe/util/cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDescriptor(cudnnPoolingDescriptor_t, cudnnPoolingMode_t, cudnnNanPropagation_t, int, int, int, int, int, int)’ pad_h, pad_w, stride_h, stride_w)); ^ ./include/caffe/util/cudnn.hpp:15:28: note: in definition of macro ‘CUDNN_CHECK’ cudnnStatus_t status = condition; \ ^ In file included from ./include/caffe/util/cudnn.hpp:5:0, from ./include/caffe/util/device_alternate.hpp:40, from ./include/caffe/common.hpp:19, from ./include/caffe/blob.hpp:8, from ./include/caffe/layers/loss_layer.hpp:6, from src/caffe/layers/loss_layer.cpp:3:
View Code
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:caffe版faster-RCNN环境搭建 - Python技术站