SSD是Caffe的一个分支,源码在github上:https://github.com/weiliu89/caffe/tree/ssd

$ git clone https://github.com/weiliu89/caffe.git
$ cd caffe
$ git checkout ssd

然后编译SSD

$ cp Makefile.config.example Makefile.config
$ make -j8
$ make py
$ make test -j8

在这个过程中会遇到很多很多问题,特此记录

1、hdf5缺失

解决方案

官网下载hdf5:https://www.hdfgroup.org/downloads/hdf5/source-code/

解压后编译安装

$ cd hdf5-1.10.3
$ mkdir build
$ cd build
$ cmake ..
$ sudo make
$ sudo make install

对于新版本的hdf5需要较新版本的cmake,因此需要将cmake更新至3.10以后,此处选择3.12.0

$ cd /usr
$ sudo wget https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz
$ sudo tar zxvf cmake-3.12.0-Linux-x86_64.tar.gz
$ sudo ln -s /usr/cmake-3.12.0-Linux-x86_64/bin/* /usr/bin/

如果提示有冲突,那么需要将原有的cmake相关可执行文件删除

$ sudo rm /usr/bin/cmake #以及其他如ccmake、ctest、cpack、cmake-gui
#然后重新关联
$ sudo ln -s /usr/cmake-3.12.0-Linux-x86_64/bin/* /usr/bin/
$ cmake --version #检查cmake版本,如果为3.12.0则说明安装成功

打开Makefile.config,找到

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

改为

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

然后链接hdf5库

$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libhdf5_serial.so.10.0.2 libhdf5.so
$ sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so

如果还是有问题

$ sudo ln -sf libhdf5_serial.so libhdf5.so
$ sudo ln -sf libhdf5_serial_hl.so libhdf5_hl.so

github上有讨论帖https://github.com/BVLC/caffe/issues/4333

2、opencv3的问题

问题如下

.build_release/lib/libcaffe.so: undefined reference to 'cv::VideoCapture::set(int, double)'
...

解决方案

已安装opencv3及对应的contrib的同学们打开Makefile.config,找到

# OPENCV_VERSION := 3

将这句话前面的#去掉,然后打开Makefile找到

ifeq ($(USE_OPENCV), 1)
LIBRARIES += opencv_core opencv_highgui opencv_imgproc

这里空格然后加上

opencv_imgcodecs opencv_contrib opencv_videoio

3、架构architecture compute_20的问题

问题如下

nvcc fatal   : Unsupported gpu architecture 'compute_20'
Makefile:596: recipe for target '.build_release/cuda/src/caffe/solvers/nesterov_solver.o' failed

解决方案

打开Makefile.config,找到

# CUDA architecture setting: going with all of them.
# For CUDA <.0, comment the lines after *_35 for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
             -gencode arch=compute_20,code=sm_21 \
             -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_61,code=sm_61

第三行和第四行中的结构部分前面加#,改为

# CUDA architecture setting: going with all of them.
# For CUDA <.0, comment the lines after *_35 for compatibility.
CUDA_ARCH := #-gencode arch=compute_20,code=sm_20 \
             #-gencode arch=compute_20,code=sm_21 \
-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_61,code=sm_61

至此基本解决安装编译SSD的问题,接下来从github上下载MobileNet到examples文件夹下:https://github.com/chuanqi305/MobileNet-SSD,运行demo.py,这时又会出现好几种问题,特做以下记录

4、没有安装pycaffe

问题如下

ImportError: No module named _caffe

这是没有配置好python与caffe的接口,需要安装pycaffe

解决方案

$ cd your_caffe_path
$ sudo make pycaffe

5、找不到skimage模块

问题如下

ImportError: No module named skimage.io

找不到skimage模块,那么我们安装此模块

解决方案

$ sudo pip install scikit-image

使用pip安装的过程中,如果pip版本过低,有些库是无法安装的,因此需要用以下的命令升级到最新版的pip

$ sudo pip install --upgrade pip

建议个人使用pip时安装都加上sudo,有些文件权限会有问题。

6、找不到protobuf模块

问题如下

ImportError: No module named google.protobuf.internal

找不到protobuf模块,解决方案类似于上一问题

解决方案

$ sudo pip install protobuf

[环境配置]Ubuntu 16.04+CUDA 9.0+OpenCV 3.2.0下编译基于Caffe的MobileNet-SSD踩过的一些坑的更多相关文章

  1. [环境配置]Ubuntu 16.04 源码编译安装OpenCV-3.2.0+OpenCV_contrib-3.2.0及产生的问题

    1.OpenCV-3.2.0+OpenCV_contrib-3.2.0编译安装过程 1)下载官方要求的依赖包 GCC 4.4.x or later CMake 2.6 or higher Git GT ...

  2. Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解

    随着图像识别和深度学习领域的迅猛发展,GPU时代即将来临.由于GPU处理深度学习算法的高效性,使得配置一台搭载有GPU的服务器变得尤为必要. 本文主要介绍在Ubuntu 16.04环境下如何配置Ten ...

  3. tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390,安装踩坑指南。

    被tensorflow 1.8, ubuntu 16.04, cuda 9.0, nvidia-390折磨了5天,终于上坑,留下指南,造福后人. 1.先把依赖搞清楚: tensorflow 1.8依赖 ...

  4. Ubuntu 16.04: How to install OpenCV

    参考:https://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ 步骤# 1:安装opencv的依赖项 本 ...

  5. OpenCV - Linux(Ubuntu 16.04)中安装OpenCV + OpenCV_Contrib

    近两个月来接触了Linux系统,在老板的建议下翻了Ubuntu的牌子,我安装的版本是16.04,用习惯之后感觉蛮好的,比Windows要强.好啦,废话不说啦,下面开始说在Ubuntu中安装OpemCV ...

  6. 如何配置Ubuntu 16.04 GRUB 2引导加载程序

    正如你所知,GRUB 2 是大多数 Linux 操作系统的默认引导加载程序.GRUB 是 GRand Unified Bootloader 的缩写,它是 Linux 启动时首先要加载的一个程序,此后它 ...

  7. Ubuntu 16.04: How to resolve libqt5x11extras5 (>= 5.1.0) but it is not going to be installed

    Issue: When you install Virtualbox 5.1 on Ubuntu 16.04, you may encounter following error: root@XIAY ...

  8. 配置ubuntu 16.04.1 LTS odoo 10.0开发环境

    使用VMware Fusion 8.5.0创建ubuntu 64bit虚拟机:使用ubuntu-16.04.1-desktop-amd64.iso镜像缺省安装ubuntu,用户名odoo,密码1234 ...

  9. ubuntu16.04下安装配置深度学习环境(Ubuntu 16.04/16.10+ cuda7.5/8+cudnn4/5+caffe)

    主要参照以下两篇博文:http://blog.csdn.net/g0m3e/article/details/51420565   http://blog.csdn.net/xuzhongxiong/a ...

随机推荐

  1. Deadline下:写论文的总结

    终于赶在了11月底截止的时刻提交上了导航年会的论文.三天加上两个半晚上差不多干完了80%的活,无论是否能够被录,这次的写作收获很大. 认识到了: 1. 读文献时,一定要带着问题,如果是我来做,我会怎么 ...

  2. 【接口】常见接口集合(返回JSON)

    转<JSON校验网站…>http://www.bejson.com/go.html?u=http://www.bejson.com/webInterface.html 这里为大家搜集了一些 ...

  3. Angular总结一:环境搭建

    工欲善其事必先利其器,开发 Angular 项目首先要搭建环境.Angular 的环境搭建包括三个方面,开发环境 WebStorm,命令行工具 Angular CLI,以及 nodejs. 一.安装 ...

  4. 基于easyui开发Web版Activiti流程定制器详解(二)——文件列表

    上一篇我们介绍了目录结构,这篇给大家整理一个文件列表以及详细说明,方便大家查找文件. 由于设计器文件主要保存在wf/designer和js/designer目录下,所以主要针对这两个目录进行详细说明. ...

  5. JdkDynamicAopProxy-笔记

    这个接口的继承体系图: 一.AopProxy InvocationHandler就不说了,看看AopProxy的源码. /** * Delegate interface for a configure ...

  6. python and、or以及and-or

    @Python: and.or以及and-or 一.and: 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一. & ...

  7. python第十四课--排序及自定义函数之案例一:选择排序

    案例一:选择排序使用选择排序的思想实现列表数据的升序排序 lt=[45,12,56,-32,-3,44,75,-22,100] length=len(lt) # print('排序前:'+str(lt ...

  8. Kafka设计解析(八)Exactly Once语义与事务机制原理

    转载自 技术世界,原文链接 Kafka设计解析(八)- Exactly Once语义与事务机制原理 本文介绍了Kafka实现事务性的几个阶段——正好一次语义与原子操作.之后详细分析了Kafka事务机制 ...

  9. P1446 [HNOI2008]Cards

    题目描述 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案. 进一步,小春要求染出Sr张红色,Sb张蓝 ...

  10. psql: 致命错误: 对用户"user1"的对等认证失败

    操作系统:Debian8 登录pg时可能会有提示错误: $ psql -U user1 -d exampledb psql: 致命错误: 对用户"user1"的对等认证失败 打开以 ...