Ubuntu 16.04 编译 Caffe SSD

我最开始将这篇文章写于简书,欢迎关注我的简书账号。会发布一些关于论文翻译和模型搭建的内容。「简书文章传送门」
这篇文章我尽量写的详尽,如果你有任何疑问,欢迎留言提问,或者到简书下留言提问。

该来的还是要来

之前为了偷懒想到使用 Docker 回避 Caffe SSD 编译的难题。结果,「天道好轮回,苍天饶过谁」。Docker 镜像内无法调用 GUI 显示以及摄像头,没法跑 ssd_pascal_webcam.py 做实时 Object Detection。所以没办法又得重新尝试编译 Caffe SSD。现在就记录一下,我在编译 Caffe SSD 时候遇到的坑。

如果你仅需要训练出 model 而后移植到别的机器上做推断的话,你可以直接使用我前一篇文章的方法安装 Docker,简单而便捷。「传送门」

下载源码

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd    # 这一步很重要,不要忘记
# 如果你没有 git 的话就使用 「sudo apt-get install git」安装 git

依赖安装

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev

sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

sudo apt-get install cmake build-essential
# 修改 Makefile.config 文件
cp Makefile.config.example Makefile.config
vim Makefile.config
# 修改内容如下

# 第5行,开启 cuDNN 如果你不想用 GPU 就别改这个,去掉第8行的 # 以开启 CPU_ONLY
USE_CUDNN := 1

# 我没有选择开启 OpenCV
# 如果你 CUDA 版本为 9.0 及以上,35 行开始修改如下
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_61,code=sm_61 \
        -gencode arch=compute_61,code=compute_61

# 57 行
BLAS := open

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

# 102 行
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

# 修改好后 :wq 退出并保存
# 修改 Makefile
vim Makefile
# 改动如下

# 181 行
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

# 266 行
LIBRARIES += boost_thread stdc++ boost_regex

# 修改好后 :wq 保存并退出

开始编译

开始编译之前一定要保证你的 protobuf 版本低于3.0。 我使用的版本为 2.6.1

# 使用下面命令查看版本
protoc --version

如果你的版本很高,降级过程如下:
首先在这里下载 protobuf 2.6.1。下载完成后放在你想放的任何目录,然后终端中进入该目录并执行

tar -zxvf protobuf-2.6.1.tar.gz
cd protobuf-2.6.1
./configure
make
make check
sudo make install
# 如果以上 make 命令提示没有权限,则命令前加 sudo
# 完成后检查 protobuf 版本
protoc --verison
# libprotoc 2.6.1
# 编译过程在 Caffe 根目录下进行 ~/caffe/
make all -j8
make py
make test -j8
# 如果提示权限不足,上述命令前均加 sudo
# 如果  make py 过程中提示错误,尝试 sudo apt-get install python-numpy 解决

# 验证是否成功
cd python
python
import caffe
# 若未报错则成功,下一步是添加环境变量
vim ~/.bashrc
# 在文件末尾添加如下内容
export PYTHONPATH=/home/ubuntu/work/caffe_ssd/caffe/python:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
# :wq 保存退出
source ~/.bashrc

结语

大功告成,如何训练自己的数据集请看我另一篇文章。「传送门」
如果你有任何疑问,欢迎留言询问。

参考

https://blog.csdn.net/yhaolpz/article/details/71375762/
https://github.com/rbgirshick/fast-rcnn/issues/52
https://stackoverflow.com/questions/37007495/caffe-didnt-see-hdf5-h-when-compiling
https://stackoverflow.com/questions/48383846/nvcc-fatal-unsupported-gpu-architecture-compute-20-while-cuda-9-1caffeopen
https://github.com/weiliu89/caffe/tree/ssd

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值