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
此时只要按照以下命令操作即可:$ sudoapt-get update