因爲最近想試一下牛掰的目標檢測算法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