参考了:http://blog.csdn.net/jesse_mx/article/details/52769272,这个作者感觉是个大神
配置环境:SSD+Ubuntu16.04+GT755m+cuda7.5,后来的环境:SSD+Ubuntu16.04+GTX1080TI+cuda8.0
我一开始是用自己的旧电脑配置的,后来发现训练对显卡要求很高,实验室正好配了新电脑,于是在那个电脑上又配置了一遍,情况差不多。
获取源码
SSD采用的是在caffe文件夹中内嵌例程的方式,作者改动了原版caffe,所以需要把原来的caffe文件夹移除,获取源码后把新的caffe要重新编译一次即可。注意把
终端输入:
git clonehttps://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd
编译
终端输入:
cd /caffe
cp Makefile.config.example Makefile.config
修改Makefile和Makefile.config文件:
在Makefile.config文件中将USE_CUDNN :=1取消注释;
INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include后面打上一个空格, 然后添加/usr/include/hdf5/serial, 如果没有这一句会报一个找不到hdf5.h的错误
在Makefile文件中替换
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC$(COMMON_FLAGS) 为NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX)-Xcompiler -fPIC $(COMMON_FLAGS)
修改环境变量,终端输入:
gedit ~/.profile
最后一行加上:“exportPYTHONPATH= /caffe/python:$PYTHONPATH”
保存退出
source ~/.profile
echo $PYTHONPATH
显示/caffe/python:/caffe/python
编译,终端输入:
make –j4
make pycaffe –j4
make test –j4
make runtest –j4
问题及解决办法:
我的电脑很老旧,编译caffe时总是出现各种问题,比如找不到文件之类的,于是我将caffe文件夹放置到了/目录下,所有编译命令加上sudo,之后就可以编译了。
这个办法是我无意中发现的,不知道是不是正常解决途径。
准备模型
直接下载原作者最终弄好的模型:
models_VGGNet_VOC0712_SSD_300x300.tar.gz
解压后将voc0712文件夹放入/caffe/models/VGGNet/之下
下载voc2007和voc2012数据集:
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
终端下载很慢,在windows中下载好,放入文件夹/caffe/data/
解压:
cd /caffe/data
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
将图片转化为LMDB文件,用于训练、测试:
cd /caffe/data
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh
问题及解决办法:
如果之前的环境变量没有配置好就可能会出现错误:no module named caffe或者no module named caffe-proto。(注:环境变量这个东西貌似不是一劳永逸的,我测试了两次,每次都要重新弄一遍,建议最好是每次弄之前输入一次echo $PYTHONPATH检查是不是对应到/caffe/python,这个应该是和我的电脑老旧有关系)
测试
pascal图片集测试:
在caffe根目录下终端输入:
python examples/ssd/score_ssd_pascal.py
注:在运行之前最好先把score_ssd_pascal.py文件打开修改合适的路径。
结果显示:精度为0.776861
测试图如下:
pascal电脑前置摄像头测试:
在caffe根目录下终端输入:
python examples/ssd/ssd_pascal_webcam.py
测试图如下:
是我自己的头像,就不放图片了
问题及解决办法:
如果摄像头及视频测试无法完成时,可能是因为opencv没有配置好,重新配置opencv库即可,有很多资料。我在旧电脑上配置顺风顺水,但是新电脑上出现不少问题,我直接就装了一个完整的opnecv3.2,问题解决。
pascal demo视频测试:
在caffe根目录下终端输入:
python examples/ssd/ssd_pascal_video.py
注:在运行之前最好先把ssd_pascal_video.py文件打开修改到合适的路径。
测试图如下:
我的显卡太次,所以只能跑到3.5帧每秒,论文中是用的Titan X,可以跑到58帧每秒,估计TX1也能跑个几十帧每秒。
后来实验室配了新电脑,在1080TI上面跑是这样的:
速度快得一笔
问题及解决办法:
遇到类似于/usr/bin/ld: 找不到 -lopenblas这种问题时,在命令行中直接输入:apt-get install libxxx-dev
训练模型:
如果显卡比较差不要尝试自己训练模型了,速度极慢,而且感觉对电脑也不好。我是在1080TI上训练的:
下载预训练模型:
https://gist.github.com/weiliu89/2ed6e13bfd5b57cf81d6
将其放入新建的文件夹/home/mx/caffe/models/VGGNet/中
由于之前数据集什么的都下载好了,所以直接在命令行输入:
cd caffe/
python examples/ssd/ssd_pascal.py
迭代次数120k,初始学习率0.0001,在1080TI上跑了大概31个小时,一开始的迭代速度是70次/分钟,但是随着时间推移会变慢。显卡差的话千万不要训练!我在老电脑上训练差点把电脑废了,血泪教训。
在新电脑上训练时出现问题:“check failed :error==cudaSuccess (10 vs .0) invalid device ordinal”
解决办法:修改 examples/ssd/ssd_pascal.py文件,找到gpu=“1,2,3,4”这一行,将其修改成gpu=“0”,也即设置成默认的gpu就没问题了
注:在SSD配置过程中还有不少问题,但是网上能找到,我就不在这里赘述了,我记载的问题都是一些我遇到的找不到解决方法的。