因为最近想试一下牛掰的目标检测算法SSD。因而乎,本身作了几千张数据(实际只有几百张,利用数据扩充算法好比镜像,噪声,切割,旋转等扩充到了几千张,其实仍是很不够)。因而在网上找了相关的介绍,本身处理数据转化为VOC数据集的格式,在转化为XML格式等等。具体方法能够参见如下几个博客。具体是window仍是Linux请自行对号入座。html
Linux:http://blog.sina.com.cn/s/blog_4a1853330102x7yd.htmlgit
window:http://blog.csdn.net/buaalei/article/details/55094879github
数据转换好之后,接下来的工做就是在window下搭建SSD训练环境了,这里面有不少地雷,我本人也是反复尝试反复修改几天后才得以成功。算法
1 首先看你的电脑配置是否有GPU,若是没有GPU那就很好办了,首先下载SSD模型,连接:https://github.com/conner99/caffe,(固然也要的人是下载window-caffe的,而后再往里面添加SSD相关的文件,可是很明显画蛇添足了)。因此咱们仍是站在巨人的肩膀上吧。ide
2 下载好了ssd的caffe环境,接下来就是安装CUDNN,CUDA,PYTHON等的配置,这里参考的文献不少我就再也不赘叙了,固然若是你是CPU环境,那么不须要配置CUDNN环境。spa
3 安装好了SSD环境后,因为SSD训练还须要第三方库,这里也有提供,连接:http://pan.baidu.com/s/1eSaP3rW 密码:nuja ,具体过程以下:.net
(1)在caffe-master\src\caffe下新建3rdparty文件夹,里面添加hungarian.cpp htm
(2)在caffe-master\include\caffe下新建3rdparty文件夹,里面添加hungarian.hppblog
4 接下来这个必定要改,不改的话会反复出现相似于:error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.exe" ....等错误。我本人在此被坑几天,头发都掉了一地,哎。这里的解决办法是在detection_output_layer.cu,detection_output_layer.cpp两个文件中注释掉全部出现的regex和rv的语句;而后再detection_output_layer.hpp中将语句#include <boost/regex.hpp>注释掉。此外,在libcaffe项目下的bbox_util.cu文件,注释掉thrust相关的内容,以下所示: //#include "thrust/functional.h" //#include "thrust/sort.h"rem
.....
//thrust::sort_by_key(&confidence[0],&confidence[0]+num_remain,&idx[0],
//thrurst::greater<Dtype>());*/
5 上面的执行完毕以后,恭喜你基本上能够生成libcaffe、caffe.exe文件,先编译libcaffe,再caffe(通常都是Release下)。
6 后面就简单了,写一个bat命令,设置好相应的solver.prototxt文件就能够开始训练了。
上面只要按照这个流程来,不要偷懒,基本上没什么大问题,而我老是感受别人说的不必定对,抱着不装南墙不回头精神去配置,结果就是大几天时间挥霍掉了,但愿你们谨慎对待,不过,说实在的本身实现这一过程,从数据采集,数据扩充,转化格式,再到配置SSD环境,再到开始训练,收获良多,或许这就是本身动手的好处吧。这里附上我正在训练的过程,GPU速度杠杠的。
期待能获得好的结果,也祝你们好运。有什么问题欢迎留言交流,哈哈。最后附上一些好的相关博客:
http://blog.csdn.net/gxb0505/article/details/73702451
http://blog.csdn.net/maweifei/article/details/76685755
https://github.com/weiliu89/caffe