该来的还是要来

之前为了偷懒想到使用 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

结语

大功告成,如何训练自己的数据集请看我另一篇文章。「传送门」

如果你有任何疑问,欢迎留言询问。

参考

linux caffe ssd 编译,Ubuntu 16.04 编译 Caffe SSD相关推荐

  1. cmake linux编译,Ubuntu 16.04编译cmake源码

    编译版本:cmake-3.8.0-rc2 为了能够在Ubuntu 16.04中编译出ccmake和cmake-gui,首先需要安装libncurses5-dev sudo apt install li ...

  2. android s905 编译_NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码

    NanoPi K2 (Amlogic S905) Ubuntu 16.04 编译Android 5.1系统源码 1. 下载源码 在这里下载https://www.mediafire.com/folde ...

  3. SSD: how to optimize your Solid State Drive for Linux Mint 17.3, Ubuntu 16.04 and Debian

    原文地址: https://sites.google.com/site/easylinuxtipsproject/ssd Below you'll find a complete how-to for ...

  4. ubuntu 16.04 编译android 7.1,jack报错

    ubuntu 16.04 编译android 7.1,jack报错 Writing client settings in /home/nikos/.jack-settings Installing j ...

  5. Intel 760P NVMe SSD安装UBuntu 16.04 所遇到的问题

    使用NVMe PCIE的SSD安装UBuntu 16.04存在以下几个问题,导致无法进入桌面: (1) Couldn't get size: 0x8000000000000000e (2) radeo ...

  6. linux学习之路——ubuntu 16.04 开机开启数字小键盘解决方法

    linux学习之路--ubuntu 16.04 开机开启数字小键盘解决方法 参考文章: (1)linux学习之路--ubuntu 16.04 开机开启数字小键盘解决方法 (2)https://www. ...

  7. Linux微信运行错误,Ubuntu 16.04 运行微信开发者工具编译出错的解决办法

    最近有折腾小程序的意向,但微信的开发者工具只提供了 Windows 和 Mac 两个版本,对于我这样的 Linux 用户来说不是那么地友好. 经过观察发现,那个开发者工具实际上是基于nw.js开发的, ...

  8. ssd hdd linux分区方案,windows10+ubuntu 16.04+双硬盘(SSD+HDD)分区(图文)

    有一种需求是双系统双硬盘(win10+linux,ssd+hdd),那么处理好两个系统之间的关系和充分发挥ssd的功效则非常重要,网上查了很多资料,发现双硬盘双系统方面的资料相对比较少,所以本文会详细 ...

  9. Ubuntu 16.04编译Android 7.1.2

    折腾了很久,终于搞定了这个环境.记录一下. 准备工作: 1. 首先在Ubuntu官网上下载Ubuntu16.04的官方镜像.官网下载地址(这个找了很久,这里可以直接下载ISO镜像):https://l ...

  10. ubuntu 16.04 编译构建QEMU依赖的软件

    在原生ubuntu 16.04下编译构建QEMU过程中,会遇到若干错误.出现这些错误的原因是系统缺少一些软件.根据过去的经验,缺少的软件包列表如下: python, pkg-config, bison ...

最新文章

  1. TowerKing随笔汇总集
  2. 飞象求职学python_用Python制作markdown编辑器
  3. Hadoop详解(九):Hadoop Streaming和Pipes原理和实现
  4. POJ 2182 Lost Cows (求序列第k大)
  5. 常用损失函数(L1、L2、SSIM和MS-SSIM)对比简介
  6. STL库容器vector at函数
  7. 不只是用于研究:使用Nvivo获取各种定性数据
  8. java 优秀源码_想要快速进阶Java架构师?这份超强(长)学习计划单 请签收!...
  9. 文件内容查看---Linux
  10. python求加速度_如何利用Python 为自然语言处理加速度
  11. java流读取字符串_javaIO之字符流是怎么读取的?
  12. 【教程】一步一步教你如何自定义设置——博客园canvas/JS交互动画背景
  13. 关于svn的安装配置开启服务过程和 eclipse安装SVN插件的方法
  14. HTML判断如果并且,将html转换为js,并且其中含有判断语句
  15. 安徽对口计算机本科分数线,考试查询网:安徽对口高考录取分数线
  16. X264_最简单的视频编码实现(YUV420编码H264)
  17. MySQL数据常用命令
  18. 23-Python-RabbitMQ
  19. ThinkPhp 使用 PHP_XLSXWriter 代替 PHPExcel 百万级数据单次导出
  20. linux开机启动rsync,rsync 开机自动启动

热门文章

  1. kitti数据集坐标转换
  2. 三维重建笔记_重建方法简介与汇总
  3. 吴恩达教授机器学习课程笔记【七】- Part 7 最优模型选择
  4. 端侧机器学习框架 Tensorlfow Lite
  5. Transformer在图像复原领域的降维打击!ETH提出SwinIR:各项任务全面领先
  6. Android之进程间通信AIDL
  7. May the Sunshine be with you!
  8. 把router-link标签渲染成指定的标签
  9. javascript的constructor属性介绍
  10. Struts2(三)