SSD的配置安装

本文详细介绍了如何在配备英伟达1070显卡、CUDA8.0和cudnn5的计算机上安装和配置SSD(Single Shot MultiBox Detector)。主要内容包括:安装依赖、配置环境、编译caffe、下载预训练模型及数据集、生成LMDB文件、以及如何进行训练、测试和演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SSD的配置安装

SSD github地址:

https://github.com/weiliu89/caffe/tree/ssd#installation

安装文档:

http://blog.csdn.net/samylee/article/details/51822832

SSD:Single Shot MultiBox Detector 配置问题一览

http://blog.csdn.net/u010733679/article/details/52125597

电脑配置:

显卡英伟达1070,CUDA8.0,cudnn5

第一部分:安装SSD(caffe)

1、从github上下载caffe-ssd,解压

2、安装NVIDIA驱动和CUDA

3、安装caffe依赖

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler python-pip python-dev python-opencv

4、安装Atlas

sudo apt-get install libatlas-base-dev

5、安装cudnn

https://developer.nvidia.com/cudnn

解压

tar -xzvf cudnn-**

cd cuda/lib64

sudo cp * /usr/local/cuda/lib64

cd ../include

sudo cp cudnn.h /usr/local/cuda/include

更新软链接

cd /usr/local/cuda/lib64 (sudo ln -s libcudnn.so libcudnn.so.5)

6、安装caffe
终端输入:

进入caffe根目录, 首先复制一份 Makefile.config , 然后修改里面的内容,主要需要修改的参数包括

USE_CUDNN 是是否使用cudnn加速

CPU_ONLY 是否只使用CPU模式,没有GPU没安装CUDA的同学可以打开这个选项

BLAS (使用intel mkl还是atlas)

MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如我的路径为 /usr/local/MATLAB/R2013b (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)

DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序

cd /home/**(您服务器的名字)/caffe
mkdir build
cd build
cmake ..(cmake和..中间又一个空格)
make all -j8(”‐j8”是使用 CPU 的多核进行编译,可以极大地加速编译的速度)
make install
make test
make runtest
make pycaffe(编译pycaffe)

第三部分:下载数据文件

1、 预训练模型下载

下载地址:链接:http://pan.baidu.com/s/1slpaEO9 密码:loxo

在caffe/models文件夹下新建文件夹,命名为VGGNet,将刚刚下载下来的文件放入这个VGGNet文件夹当中

2、下载VOC2007和VOC2012数据集

在主文件夹下(即/home/**(您服务器的名字)/)新建文件夹,命名为data

终端输入:

cd /home/**(您服务器的名字)/data

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar

wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
解压这三个文件,终端输入:
cd /home/**(您服务器的名字)/data
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar(请严格按照这个顺序解压)

第四部分:生成LMDB文件
终端输入:
cd /home/**(您服务器的名字)/caffe
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh

在运行第三步时如果出现no module named caffe或者是no module named caffe-proto,则在终端输入:

export PYTHONPATH=$PYTHONPATH:/home/**(您服务器的名字)/caffe/Python

然后再次运行第三步

第五部分:训练测试演示
1、 训练
打开caffe/examples/ssd/ssd_pascal.py这个文件,找到gpus=’0,1,2,3’这一行,如果您的服务器有一块显卡,则将123删去,如果有两个显卡,则删去23,以此类推。如果您服务器没有gpu支持,则注销以下几行,程序会以cpu形式训练。(这个是解决问题cudasuccess(10vs0)的方法)

Ifnum_gpus >0:

            # batch_size_per_device =int(math.ceil(float(batch_size) / num_gpus))

iter_size =int(math.ceil(float(accum_batch_size) / (batch_size_per_device * num_gpus)))

# solver_mode =P.Solver.GPU
# device_id =int(gpulist[0])
保存后终端运行:
cd /home/**(您服务器的名字)/caffe
python examples/ssd/ssd_pascal.py
如果出现问题cudasuccess(2vs0)则说明您的显卡计算量有限,再次打开caffe/examples/ssd/ssd_pascal.py这个文件,找到batch_size =32这一行,修改数字32,可以修改为16,或者8,甚至为4(相信大家这个修改可以理解,我就不作说明了),保存后再次终端运行python examples/ssd/ssd_pascal.py
2、 测试
终端输入:
python examples/ssd/score_ssd_pascal.py(演示detection的训练结果,数值在0.718左右)
3、 演示
演示网络摄像头识别效果,终端输入:
python examples/ssd/ssd_pascal_webcam.py

错误:使用cuda8编译时出错:

/usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: ‘type name’ declared as function returning an array

方法:因为gcc版本太低了,升级到5.3即可解决

首先添加ppa到库:

1 sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2 sudo apt-get update

如果提示未安装,还需要先安装它的包:

1 sudo apt-get install software-properties-common

默认在系统中安装的是gcc-4.8,但现在都什么年代了万一有奇怪的更新呢,可以先升级一下,接着就可以选择安装gcc-4.9、gcc-5之类的啦!(注意目前gcc-5实际上是5.3.0,没有5.1或5.2可供选择)

1 sudo apt-get upgrade
2 sudo apt-get install gcc-4.8 g++-4.8
3 sudo apt-get install gcc-4.9 g++-4.9
4 sudo apt-get install gcc-5 g++-5

(非必须)现在可以考虑刷新一下,否则locate等命令是找不到的:

1 sudo updatedb && sudo ldconfig
2 locate gcc

如果是阿里云ECS等做了限制的或者是其他奇怪的系统上,你会发现 gcc -v 显示出来的版本还是gcc-4.8的,因此需要更新一下链接:

1 update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.8 48 \
2 –slave /usr/bin/g++ g++ /usr/bin/g++-4.8 \
3 –slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.8 \
4 –slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.8 \
5 –slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.8
6
7 update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.9 49 \
8 –slave /usr/bin/g++ g++ /usr/bin/g++-4.9 \
9 –slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-4.9 \
10 –slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-4.9 \
11 –slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-4.9
12
13 update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-5 53 \
14 –slave /usr/bin/g++ g++ /usr/bin/g++-5 \
15 –slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-5 \
16 –slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-5 \
17 –slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-5

更新链接不仅仅是为了使用新安装的gcc版本,更重要的是以后可以随时切换。上面的命令是分为3块,每块对应相应的gcc版本,并不是要一股脑全复制粘贴进控制台运行。要注意反斜杠()前要有空格,因为它只提供换行的功能。

于是到这里升级gcc版本就已经完成了。

cuda8.0支持版本为gcc5.3,5.4不支持了,找到/usr/local/cuda/include/host_config.h,113行将3改成4即可。

在命令行输入Python;再输入import caffe时,可能会报以下错误:

can not find module skimage.io
此时只要按照以下命令操作即可:

$ sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython

$ sudoapt-get update