caffe SSD 代码编译运行流程及问题解决

该文基于以下代码:

https://github.com/weiliu89/caffe/tree/ssd

down下来后,进入目录

-rw-rw-r--  1 ~ ~  23986 8月  13 15:29 Makefile
-rw-rw-r--  1 ~ ~   4402 8月  10 17:05 Makefile.config.example

按照机器配置和环境的情况修改这两个文件,首先复制Makefile.config.example到Makefile.config

cp Makefile.config.example Makefile.config

在config文件里进行修改,如uncomment以下几项:

USE_CUDNN :=1,因为我们需要调用CUDNN运行caffe代码

OPENCV_VERSION :=3,因为机器上的opencv版本号是3.X

CUDA_ARCH := -gencode arch=compute_50,code=sm_50 \-gencode arch=compute_52,code=sm_52 \
             -gencode arch=compute_61,code=sm_61

CUDA_ARCH只保留这几项就行,这是和gpu的算力性能有关的项目,本机器用的是TITAN Xp,因此如果不把较小的注释掉就会报warning。

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

加上hdf5的路径到include中。

这样Makefile的配置文件基本完成。下面对Makefile修改。

常见问题一般都是库找不到,因此主要关注这一段代码:

LIBRARIES += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_serial_hl hdf5_serial # handle IO dependencies
USE_LEVELDB ?= 1
USE_LMDB ?= 1
USE_OPENCV ?= 1ifeq ($(USE_LEVELDB), 1)LIBRARIES += leveldb snappy
endif
ifeq ($(USE_LMDB), 1)LIBRARIES += lmdb
endif
ifeq ($(USE_OPENCV), 1)LIBRARIES += opencv_core opencv_highgui opencv_imgprocifeq ($(OPENCV_VERSION), 3)LIBRARIES += opencv_imgcodecs opencv_videoioendifendif
PYTHON_LIBRARIES ?= boost_python27 python2.7
WARNINGS := -Wall -Wno-sign-compare

第一行中的LIBRARIES += 。。。,如果报错某个库没有找到,可以加入到这一行,如boost_regex m hdf5_serial_hl hdf5_serial 都是添加上的。因为曾经报错boost_regex::XXX没有找到。

报错与解决

~/about-caffe/caffe-ssd$ make all
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
CXX/LD -o .build_release/tools/finetune_net.bin
CXX/LD -o .build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so: undefined reference to `boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >::maybe_assign(boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&)'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::raise_runtime_error(std::runtime_error const&)'
.build_release/lib/libcaffe.so: undefined reference to `boost::cpp_regex_traits<char>::toi(char const*&, char const*, int) const'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::put_mem_block(void*)'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::get_mem_block()'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::verify_options(unsigned int, boost::regex_constants::_match_flags)'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::get_default_error_string(boost::regex_constants::error_type)'
.build_release/lib/libcaffe.so: undefined reference to `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform(char const*, char const*) const'
.build_release/lib/libcaffe.so: undefined reference to `boost::re_detail::cpp_regex_traits_implementation<char>::transform_primary(char const*, char const*) const'
collect2: error: ld returned 1 exit status
Makefile:619: recipe for target '.build_release/tools/convert_imageset.bin' failed
make: *** [.build_release/tools/convert_imageset.bin] Error 1

问题类型:【undefined reference to `boost::re_detail::】

解决方案:看到一个说法是由于boost的版本过低,应该大于1.60,而本机的boost为1.58,所以手动下载一个boost进行安装,这里用的是1.68版本号的boost库,安装好之后问题解决。(安装boost参考本文:https://blog.csdn.net/this_capslock/article/details/47170313)

另一个问题是在make pycaffe时候,出现:

~/about-caffe/caffe-ssd$ make py
CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp
/usr/bin/ld: cannot find -lboost_python
collect2: error: ld returned 1 exit status
Makefile:501: recipe for target 'python/caffe/_caffe.so' failed
make: *** [python/caffe/_caffe.so] Error 1

问题类型:【cannot find -lboost_python】,但是实际上在makefile中已经把boost_python 添加上了:

PYTHON_LIBRARIES ?= boost_python python2.7

这里的解决方案是吧上面一句改为:

PYTHON_LIBRARIES ?= boost_python27 python2.7

即将boost_python改为boost_python。

最后caffe和pycaffe都编译成功,运行ssd的python脚步,报错:

~/about-caffe/caffe-ssd$ python examples/ssd/ssd_pascal.py
Traceback (most recent call last):File "examples/ssd/ssd_pascal.py", line 2, in <module>import caffe
ImportError: No module named caffe

错误类型:【No module named XXX】,这种情况有两种可能的原因,一是没有make pycaffe;另一种是没有把pycaffe的路径加入环境变量。这里我们make过了pycaffe,因此需要手动用加入pycaffe到环境变量。

caffe_root = '~/about-caffe/caffe-ssd/'
if caffe_root + 'python' not in sys.path:sys.path.append(caffe_root + 'python')
# sys.path.insert(0, caffe_root + 'python')import caffe

这样就可以运行了。

接下来就是讲lmdb数据换成需要训练的自己的数据集,对ssd的caffe模型进行训练了~

2018年8月13日16:14:04

你以为钟情于天使,其实是中了邪魔。 —— 剧作家,塞万提斯 【堂吉诃德】

caffe SSD 代码编译运行流程及问题解决相关推荐

  1. 该段代码编译运行后显示的是蓝色背景,白色闪烁字的效果

    int main(int argc,char **argv) {         printf("\033[44;37;5m hello world\033[0m\n");     ...

  2. 在线代码编译运行工具

    在线代码编译运行工具 如果需要学习语言,比如练习一些算法,或者跑一些别人写的代码,有一些语言特性不太了解需要写一些简单的 demo 做一些验证,那么先搭建一个环境去跑就有一点麻烦了,无需搭建本地环境的 ...

  3. java花开程序_java代码的运行流程

    1. 运行流程的概览图 2.  具体流程 2.1 java源文件编译为class字节码 java代码是运行在Java虚拟机上的.但是java是一门面向对象的高级语言,它不仅语法非常复杂,抽象程度也非常 ...

  4. 代码编译突然变缓慢问题解决办法(codeblock)

    问题描述: 之前用codeblock写的代码编译一般十分快,只需零点几秒,不知道什么时候开始(可能是把360全家桶卸干净开始的吧~~)编译一份十分短的代码都有好久,等的十分不耐烦.编译好,运行输入数据 ...

  5. cmd命令行进行C++代码编译运行;实现进程调度和存储管理

    最近刚考完一门,也算是有点闲暇时间,写个博客,就当做操作系统实验的笔记吧.        客官先别急着白嫖点个赞再看吧求求了 文章目录 一.在cmd命令行下编译运行C++源代码 1.进入目标目录 2. ...

  6. VTK Example代码编译运行

    在VTK源码包的Example中,每个模块的例子都有一个CMakeList文件,可之间编译运行.  但VTK版本更新快,模块经常小改,而对于VTK6.x的Example的CMakeLists却没有改动 ...

  7. OpenCV神经网络ANN代码编译运行与解读(一)

    运行环境搭建:参考<VS2013安装OpenCV4.1版本并搭建一个小程序> 基于OpenCV4.1.0中neural_network.cpp的例子代码. 参考了<OpenCV3[神 ...

  8. OpenCV神经网络ANN代码编译运行与解读(二)

    [转载自]<OpenCV笔记(4)实现神经网络(ANN)> 作者的原文参考了:<OpenCV中使用神经网络 CvANN_MLP> 实际上的预测结果是并非一个确定值,所以即使用训 ...

  9. caffe 源码阅读与运行流程

    bvlc:Berkeley Vision and Learning Center. pb:protobuf 的简写: 0. 运行流程 .prototxt ⇒ ImageDataParameter ⇒ ...

最新文章

  1. 入门架构——单机高性能
  2. Cookie对象的应用
  3. 提高代码质量 CheckStyle FindBugs PMD
  4. 感谢您的提问_感谢您的反馈,我们正在改进的5种方法
  5. ARM处理器工作模式
  6. tomcat是否有必要配置环境变量(摘)
  7. emacs java自动import,在Java模式如何我配置Emacs,这样就不会自动对齐方法参数
  8. vscode中文支持xp_VSCode (Visual Studio Code) V1.43.0下载并设置成中文语言的方法
  9. 思科模拟器叫什么_扫盲!通过型号快速识别思科路由器,交换机,服务器等设备...
  10. CentOS网络配置解决方案
  11. python函数超时,用装饰器解决 func_timeout
  12. 深入Atlas系列:客户端网络访问基础结构(上) - WebRequest的工作流程与生命周期...
  13. 虎虎生威 | 年终盘点,好文合辑!
  14. 计算机初中信息技术教学软件,初中信息技术教学工作计划精选
  15. linux未找到命令rpm,RPM命令执行失败:bash: rpm: 未找到命令...
  16. mysql中update语句怎么设置变量_MySQL数据库update语句使用详解
  17. 任务一:统计基础知识-样本与总体、均值与方差、二项分布、泊松分布
  18. 舞蹈链算法与数独求解
  19. 小程序中实现搜索功能
  20. 斐尔可圣手二代蓝牙设置问题

热门文章

  1. LeetCode 69.X的平方根
  2. 提高篇-深度优先搜索DFS与剪枝-《算法笔记》同步笔记总结与补充
  3. SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用
  4. 最好用的网易邮箱工具-网易邮箱助手_我是亲民_新浪博客
  5. Markdown基本使用
  6. 安卓移动微信页调试大法
  7. linux与python什么关系,如何处理Linux / Python依赖关系?
  8. yun yun de
  9. 仿优信二手车品牌选择demo
  10. 【ADB】adb命令的安装和使用(超级详细,命令大全)