Linux 编译SSD Caffe目标检测代码
2017-12-06 23:55
337 查看
引言
SSD: Single Shot MultiBox Detector 是ECCV 2016上发表的目标检测的论文(https://arxiv.org/pdf/1512.02325.pdf),作者在github上公布了代码,地址为https://github.com/weiliu89/caffe/tree/ssd.但是编译的时候确出现了 Type name declared error
/usr/include/boost/property_tree/detail/json_parser_read.hpp: In constructor ‘boost::property_tree::json_parser::json_grammar<Ptree>::definition<Scanner>::definition(const boost::property_tree::json_parser::json_grammar<Ptree>&)’: /usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array
代码Repository 的Issues中#54 #83等建议使用gcc 5.3或5.4编译caffe,以下是安装GCC5.4和用gcc 5.4编译caffe的过程。
系统基本环境
操作系统:Red Hat 4.8.5-11GCC 版本:gcc 4.8.5
编译安装过程
安装GCC5.4
下载
GCC5.4可以从官网下载,也可以从镜像下载,我们这里从清华大学的镜像下载,地址为:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
解压
tar -xf gcc-5.4.0.tar.gz cd gcc-5.4.0
安装gcc5.4依赖库
gcc 5.4.0依赖于 gmp, mpc, mpfr 三个库,gcc5.4提供了下载脚本并在编译的时候安装./contrib/download_prerequisites
配置编译选项
./configure --prefix=/home/share/local --enable-languages=c,c++,fortran --disable-multilib
在里/home/share/local是我安装gcc-5.40的路径,可以改成自己路径。
编译安装
make -j8 make install
编译之后需要将bin的路径加到PATH中,并且将lib64(如果有lib的话也加进去)的路径加到LD_LIBRARY_PATH中
export PATH=/home/share/local/bin:$PATH export LD_LIBRARY_PATH=/home/share/local/lib64:/home/share/local/lib:$LD_LIBRARY_PATH
安装Protobuf-3.4.1
下载
protobuf-3.4.1下载地址解压
tar -xf protobuf-cpp-3.4.1.tar.gz cd protobuf-3.4.1/
配置编译选项
./configure --prefix=/home/share/local
在里/home/share/local是安装路径
编译安装
make -j8 make install
安装Boost 1.56.0
下载
Boost 1.56.0下载地址https://sourceforge.net/projects/boost/files/boost/1.56.0/boost_1_56_0.tar.bz2/download解压
tar -jxf boost_1_56_0.tar.bz2 cd boost_1_56_0/
配置编译选项
./bootstrap.sh --prefix=/home/share/local
在里/home/share/local是安装路径
编译安装
./b2 -j8 ./b2 install ...failed updating 4 targets... ...skipped 12 targets... ...updated 11322 targets...
安装gflags-2.2.0
下载
gflags-2.2.0 下载地址https://codeload.github.com/gflags/gflags/tar.gz/v2.2.0解压
tar -xf gflags-2.2.0.tar.gz cd gflags-2.2.0/
z这里我们使用cmake 配置编译选项,cmake版本是cmake 3.8.2
配置编译选项
ccmake .. -DCMAKE_INSTALL_PREFIX=/home/share/local/ -DBUILD_SHARED_LIBS=ON
使用ccmake命令配置时,最开始按c健进行configure, 然后再按一次c键确认configure,然后按g键进行生成Makefile,进行编译。
编译安装
make -j8 make install
安装glog
下载
git clone https://github.com/google/glog.git cd glog/
这里我们仍然使用cmake 配置编译选项,好处是可以很方便地找到我们刚编译的gflags,否则容易和已安装的gflags混淆。
配置编译选项
ccmake .. -DCMAKE_INSTALL_PREFIX=/home/share/local/ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_COMPILER=/home/share/local/bin/g++ -DCMAKE_C_COMPILER=/home/share/local/bin/gcc
使用ccmake命令配置时,最开始按c健进行configure, 然后再按一次c键确认configure,然后按g键进行生成Makefile,进行编译。
编译安装
make -j8 make install
安装leveldb
下载
git clone https://github.com/google/leveldb.git cd leveldb
编译安装
make -j8 cp -av out-shared/libleveldb.so* /home/share/local/lib/ cp -av include/leveldb /home/share/local/include/
编译SSD caffe代码
其他依赖库似乎不用重新用gcc 5.4编译,可以使用原来的依赖库,现在我们来编译ssd的代码下载
git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd
编译
make -j8
相关文章推荐
- Caffe使用step by step:r-cnn目标检测代码
- Ubutnu系统下用QT等IDE调用Caffe、SSD框架,编译Caffe实现分类检测等工程应用的方法
- 使用SSD目标检测c++接口编译问题解决记录
- Linux源码与编译出的目标文件汇编代码的一致性问题
- SSD+caffe︱Single Shot MultiBox Detector 目标检测(一)
- SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
- 目标检测Faster_r_cnn代码的使用(python+caffe版本)
- 目标检测之SSD(single shot multibox detector)的pytorch代码阅读总结
- Caffe使用step by step:faster-rcnn目标检测matlab代码
- python+opencv+caffe+摄像头做目标检测的实例代码
- SSD+caffe︱Single Shot MultiBox Detector 目标检测(一)
- 目标检测:SSD目标检测中PriorBox代码解读
- SSD+caffe︱Single Shot MultiBox Detector 目标检测(一)
- [目标检测|SSD实践一]caffe-ssd基线
- 1.预处理,生成预编译文件(.文件): Gcc –E hello.c –o hello.i 2.编译,生成汇编代码(.s文件): Gcc –S hello.i –o hello.s 3.汇编,生成目标文件(.o文件): Gcc –c hello.s –o hello.o 4.链接,生成可执行文件: linux笔记
- caffe层代码解读:SSD目标检测之MultiBox
- 关于目标检测ssd实现代码中permute layer和flatten layer的作用
- 目标检测:Mobilenet-SSD实现步骤
- 目标检测——CodeBook 算法测试代码
- linux下ssd电子盘速度检测