Caffe 工程的一些编译错误以及解决方案
2016-05-11 11:51
519 查看
本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/51371936
整理一下最近遇到caffe工程的一些编译错误以及解决方法。
cuDNN出现版本不匹配,在工程
解决方案是这样的,下载v3版本,解压后,在终端进入所在文件夹下(这里仍然以v3版本为例):
首先,我是已经配置过了opencv的,可以这样查询安装版本:
因为编译好了,理所当然,输出结果是
所以出现上面的错误,应该是
然后再重新编译:
文章链接: http://blog.csdn.net/yhl_leo/article/details/51371936
整理一下最近遇到caffe工程的一些编译错误以及解决方法。
1 cuDNN
cuDNN当前最新版本是v5,近两三年的一些caffe工程,使用的版本不尽相同,其中以v2/v3版本的最为常见,所以使用的时候一定要搞清楚(当然如果作者没说,那就自己依次尝试吧)。cuDNN出现版本不匹配,在工程
make的时候,会报如下错误(以安装v4版本,编译v3版本的程序为例):
... NVCC src/caffe/layers/deconv_layer.cu NVCC src/caffe/layers/cudnn_conv_layer.cu src/caffe/layers/cudnn_conv_layer.cu(81): error: argument of type "cudnnAddMode_t" is incompatible with parameter of type "const void *" detected during instantiation of "void caffe::CuDNNConvolutionLayer<Dtype>::Forward_gpu(const std::vector<caffe::Blob<Dtype> *, std::allocator<caffe::Blob<Dtype> *>> &, const std::vector<caffe::Blob<Dtype> *, std::allocator<caffe::Blob<Dtype> *>> &) [with Dtype=float]" (157): here ... 20 errors detected in the compilation of "/tmp/tmpxft_00002703_00000000-16_cudnn_conv_layer.compute_50.cpp1.ii". make: *** [.build_release/cuda/src/caffe/layers/cudnn_conv_layer.o] Error 1 make: *** Waiting for unfinished jobs....
解决方案是这样的,下载v3版本,解压后,在终端进入所在文件夹下(这里仍然以v3版本为例):
$ cd lib64/ $ sudo cp lib* /usr/local/cuda/lib64/ $ cd ../include/ $ sudo cp cudnn.h /usr/local/cuda/include/ $ cd /usr/local/cuda/lib64/ $ sudo rm -r libcudnn.so libcudnn.so.7.0 $ sudo ln -sf libcudnn.so.7.0.64 libcudnn.so.7.0 $ sudo ln -sf libcudnn.so.7.0 libcudnn.so $ sudo ldconfig
2 OpenCV
我使用的版本是3.1.0,在编译工程的时候,遇到如下BUG:
... CXX/LD -o .build_release/tools/convert_imageset.bin .build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)’ .build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)’ .build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)’ collect2: error: ld returned 1 exit status make: * [.build_release/tools/convert_imageset.bin] Error 1 ...
首先,我是已经配置过了opencv的,可以这样查询安装版本:
$ pkg-config --modversion opencv
因为编译好了,理所当然,输出结果是
3.1.0
所以出现上面的错误,应该是
opencv_imgcodecs链接的问题,比较有效的解决方案是,把opencv需要的lib添加到
Makefile文件中,找到
LIBRARIES(在
PYTHON_LIBRARIES := boost_python python2.7前一行)并修改为:
LIBRARIES += glog gflags protobuf leveldb snappy \ lmdb boost_system hdf5_hl hdf5 m \ opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
3 make
每次需要重新编译的过程中,首先需要清除掉以往编译的结果:$ make clean
然后再重新编译:
$ make all -j12 $ make distribute $ make pycaffe $ make matcaffe
-j12的含义是
run 12 jobs in parallel,看自己机器的性能,自己设置,可以更快编译。
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- Android Studio中配置OpenCV库开发环境的教程
- 基于C++实现kinect+opencv 获取深度及彩色数据
- OpenCV 2.4.3 C++ 平滑处理分析
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python环境搭建之OpenCV的步骤方法
- Python+Opencv识别两张相似图片
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- Some Notes of Caffe Installation
- Some Notes of Python Interfaces Pycaffe (Caffe)
- TensorFlow人工智能引擎入门教程之十二 Caffe转换tensorflow并 跨平台调用
- TensorFlow人工智能引擎入门教程所有目录
- Android OpenCV教程 四 JavaCameraView改变获取的图片