warpctc-caffe这是一个很古老的项目,到目前位置应该有六七年了,对应的caffe版本也很古老。即便新版本的caffe与较新的cuda兼容也不好。
类似问题:warning: enumeration value ‘CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSI not handled in switch解决方案:
报错信息:
下载最新版本的caffe,将你的项目中的里的以下几个文件替换成最新版caffe对应的include和src文件夹里面的:
你的算法原路径/include/caffe/util/cudnn.hpp
你的算法原路径/include/caffe/layers/下面cudnn_开头的所有文件
你的算法原路径/src/caffe/util/cudnn.cpp
你的算法原路径/src/caffe/layers/ 下面cudnn_开头的所有文件
error: ‘accumulate’ is not a member of ‘std’
因为项目中源码用到了numeric::accumulate(),而出错的文件没有包含该库,在出错源文件的预编译部分添加:
#include <numeric>
OpenCV4和OpenCV3
如果安装的是opencv4,编译之前还是要先进行以下几步:
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/layers/window_data_layer.cpp
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/util/io.cpp
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/test/test_io.cpp
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::ImreadModes::IMREAD_GRAYSCALE/g' src/caffe/util/io.cpp
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::ImreadModes::IMREAD_GRAYSCALE/g' src/caffe/test/test_io.cpp
fatal error: caffe/proto/caffe.pb.h: No such file or directory
使用编译预测cpp源文件时出现的错误,解决方法:
进入到CAFFE_ROOT/src/caffe/proto/目录:
protoc caffe.proto --cpp_out=CAFFE_ROOT/include/caffe/caffe/proto
undefined reference to `google::LogMessageFatal::LogMessageFatal(char const*, int)’
编译时没添加链接库,解决方法:
g++ -lglog
如果使用的IDE,可以将链接库作为参数添加进去,不需要每次 编译都添加。
其它方面,参考该文:
记录Ubuntu18.04-cuda10.1-opencv4配置caffe过程