Ubuntu 16.04下Caffe-SSD的应用(一)——编译Caffe-SSD的CPU版本与GPU版本

前言

1.之前用过Caffe的GooglNet做图像分类的相关项目,比起传统的办法,效果要好很多,在目标检测这块,之前也用传统的HOG加SVM实现过车辆,行人和马匹的检测,但正样本要上万张图像,才达到能应用到项目上的准确率。
2.Caffe-SDD微软的一个深度学习框架,SSD全称:Single Shot MultiBox Detector 是目前为止主要的目标检测算法。接下来我会把Caffe-SSD的编译配置、标注图像、训练自己模型、在项目中使用自己的整个流程写下来。
3.我配置的环境是Ubuntu 16.04 LST 64位,Qt5.9,Python2.7,如果只跑CPU版本,就不用配置CUDA库。
4.要使用GPU加速的话,就要安装显卡驱动与cuda,cudnn,是于安装办法请参考我后面给的教程。显卡:https://blog.csdn.net/matt45m/article/details/90247294 ,cuda与cudnn:https://blog.csdn.net/matt45m/article/details/90298040 。

一、环境配置

1.编译前的预操作

sudo apt-get update  #更新软件列表
sudo apt-get upgrade  #更新软件依赖包
sudo apt-get install build-essential #编译工具,通常已安装
sudo apt-get install cmake #安装cmake
sudo apt-get install  git #安装git
sudo apt-get install pkg-config #编译辅助工具,

2.前置依赖包

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev #安装gflags和glog依赖包
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 libatlas-base-dev #ATLAS是线性代数库

3.配置python
(1)安装python相关库

sudo apt-get install python-pip #安装pip
sudo apt-get install python-dev
cat python/requirements.txt | xargs -L 1 sudo pip install

(2)添加软链接

sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy

4.获取caffe-ssd版本
(1)下载caffe

mkdir caffe
cd caffe
git clone https://github.com/weiliu89/caffe.git

开始下载caffe
在这里插入图片描述
(2)在当前目录ls会看到caffe这个文件夹,切换到caffe目录
在这里插入图片描述
更改文件夹名为caffe-sss

mv caffe caffe_ssd

在这里插入图片描述
切换到caffe-ssd目录

cd caffe_ssd

(3)切换到SSD分支

git checkout ssd

如果出现:Branch ssd set up to track remote branch ssd from origin.
Switched to a new branch ‘ssd’,或者“分支"代表成功。
在这里插入图片描述
5.更改配置文件Makefile.config

cp Makefile.config.example Makefile.config  #复制配置文件并把后缀去掉
vim Makefile.config  #用vim打开配置文件

如果用不习惯vim,可以换成gedit打开配置文件

gedit Makefile.config

(1)打开后,如果只使用CPU,把CPU_ONLY:=1打开。
在这里插入图片描述
只用cpu更改

#CPU_ONLY:=1

去掉#改成

CPU_ONLY:=1

(2)如果使用GPU,把USE_CUDNN打开。
在这里插入图片描述
(3)更改python 相关的路径

PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/lib/python2.7/dist-packages/numpy/core/include

把前面的那句用#号注示掉,加上下面这句

PYTHON_INCLUDE := /usr/include/python2.7 \
		/usr/local/lib/python2.7/dist-packages/numpy/core/include

在这里插入图片描述
(4)加入hdf5的目录

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改为:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

在这里插入图片描述
6.修改Makefile文件(注意与下面文件的区别)
在这里插入图片描述
打开Makefile文件,这里没有后缀

gedit Makefile

在这里插入图片描述
找到:

LIBRARIES += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_hl hdf5

改为:

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

在这里插入图片描述
找到:

NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

改成

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

在这里插入图片描述
找到:

LIBRARIES += boost_thread stdc++

修改为:

LIBRARIES += boost_thread stdc++ boost_regex

在这里插入图片描述

二、编译Caffe-SSD

1.编译caffe caffe
(1)开始编译,切换到caffe-ssd目录,make all -j8后面j8是说明使用8个线程一起编译,这样速度会快一些,如是计算机配置不好,只输入make all 就行了,下面有j8的命令是一样的。

cd caffe-ssd
make all -j8

(2)编译过程中报错

AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
/usr/bin/ld: 找不到 -lopenblas
collect2: error: ld returned 1 exit status
Makefile:574: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1

在这里插入图片描述
解决方法:

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

然后清除重新编译:

make clean 
make all -j8

没有报错
在这里插入图片描述
(3)继续编译

make test -j8
make runtest -j8

在这里插入图片描述
(4)编译pycaffe

make pycaffe -j8
CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp
python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
compilation terminated.
Makefile:504: recipe for target 'python/caffe/_caffe.so' failed
make: *** [python/caffe/_caffe.so] Error 1

在这里插入图片描述
这个我在前面装过,但提示没有,一种可能是路径不对,查看路径

python
import numpy as np  
np.get_include()  

可以看到安装的路径
在这里插入图片描述
去Makefile.config文件把对应的路径改成显示出来的这个。
(5)检验python中import caffe是否报错:

python
import caffe

(6)如果报如下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named caffe

解决办法:
把环境变量路径放到 ~/.bashrc文件中,打开文件(注意,这时还是当时caffe编译的路径,不用切换)

sudo gedit ~/.bashrc 

在文件下方写入,保存退出。

export PYTHONPATH=/home/*XXXX* /caffe/python:$PYTHONPATH  #其中XXXX为你的用户名

在这里插入图片描述
在终端写入下面语句,使环境变量生效。

source ~/.bashrc 

(7)继续输入import caffe如果报以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/matt/caffe-ssd/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
  File "/home/matt/caffe-ssd/python/caffe/pycaffe.py", line 15, in <module>
    import caffe.io
  File "/home/matt/caffe-ssd/python/caffe/io.py", line 2, in <module>
    import skimage.io
ImportError: No module named skimage.io

在终端输入:

sudo apt-get install python-skimage

(8)报以下错误

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/linux/caffe/caffe_ssd/python/caffe/__init__.py", line 1, in <module>
    from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
  File "/home/linux/caffe/caffe_ssd/python/caffe/pycaffe.py", line 15, in <module>
    import caffe.io
  File "/home/linux/caffe/caffe_ssd/python/caffe/io.py", line 8, in <module>
    from caffe.proto import caffe_pb2
  File "/home/linux/caffe/caffe_ssd/python/caffe/proto/caffe_pb2.py", line 6, in <module>
    from google.protobuf.internal import enum_type_wrapper
ImportError: No module named google.protobuf.internal

在终端输入

sudo apt-get install python-protobuf

(8)如果没有报错,Caffe-SSD配置完成。
在这里插入图片描述

结语

1.以上Caffe-SSD在Ubuntu下配置完成,之后就是如何应用Caffe-SSD做相关的训练和学习了。
2.关于Caffe-SSD配置遇到的问题,都可以加这个群(487350510)互相讨论学习。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值