天天看點

Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)

實驗目的:

不得不說,現在深度學習真的是火,去年年底部落客在做人臉識别這個應用的時候,選擇的是faster rcnn,還沒捂熱乎,現在又再看SSD的東西了。SSD和faster rcnn都是目前比較經典的基于caffe深度學習架構的一種方法,是目前比較先進的目标檢測方法,還有YOLO,不過在項目組裡面部落客被安排到了SSD這一邊,是以本文就主要說一下安裝配置SSD一路上比較坑的地方。目前把faster rcnn放一邊而去選擇SSD,其中一個最大的原因就是實時性的問題,因為未來需要在嵌入式端部署生産環境,我們選擇了NVIDIA TX1,使用faster rcnn的話,一秒鐘差不多也就5張左右,可能也沒仔細去優化過,但是畢竟局限性擺着這兒,是以從實時性上考慮得話我們選擇了SSD。

實驗環境:

訓練平台:NVIDIA K80

預測平台:NVIDIA TX1

語言        :C++,python

架構        :caffe

方法        :SSD

備注:  部落客最近開始接手這件事的,是以目前一切部署都在k80上,demo示範也成功了,之後沒問題的話就在TX1 上搭建環境了。根據faster rcnn的部署經驗,不會有什麼相容性問題的。

實驗步驟:

1.資料準備

ssd在github上的項目首頁:weiliu89/caffe

(進入到首頁以後,大家跟着裡面的配置步驟來,部署caffe這裡就不在多說了)

首頁上給出的幾個檔案:

# Download the 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
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
           

這裡因為網絡的問題,一般下得很慢,貼一下我放到百度雲網盤中的資源:

連結:http://pan.baidu.com/s/1c1AwrRy 密碼:ly70

這些是VOC的訓練集,友善大家自己去親手操作訓練,不過我們今天的目的主要是運作demo,是以需要模型檔案還有prototxt檔案,在首頁的最後,作者給出了自己最新的預訓練好的模型檔案,還有網絡檔案:

Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)

在我的百度雲網盤裡面也準備好了(這裡我下載下傳的是07++12的模型打包):

連結:http://pan.baidu.com/s/1kVoJ6GR 密碼:leo6

有的人可能從github上clone比較慢,我這裡提供一份在Windows上clone下來的,同樣也是ssd分支的源碼壓縮包(需要注意的是,裡面的腳本檔案,是dos格式的,在vim裡面用 set ff=unix将其改為unix格式):

連結:http://pan.baidu.com/s/1c19auCK 密碼:rog6

目前來看,所有需要準備的東西全部齊全了,我們可以進行到下一步了。

2.實驗開始

根據github首頁上的步驟來做,在caffe路徑下,建議大家在環境中将其路徑定義為$CAFFE_ROOT,這樣之後的一些腳本檔案就不用改太多了。

cp Makefile.config.example Makefile.config
make -j8
# Make sure to include $CAFFE_ROOT/python to your PYTHONPATH.
make py
make test -j8
# (Optional)
make runtest -j8
           

在這一步,有幾個坑,第一個Makefile.config檔案,如果你自己的電腦不是 cuda8.0的話,把config檔案中的:

CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
               -gencode arch=compute_20,code=sm_21 \
               -gencode arch=compute_30,code=sm_30 \
               -gencode arch=compute_35,code=sm_35 \
               -gencode arch=compute_50,code=sm_50 \
               -gencode arch=compute_52,code=sm_52 \
               #-gencode arch=compute_61,code=sm_61
           

最後一句注釋掉,不然之後報錯會有不支援compute_61的錯誤;第二個坑就是,部落客之前給伺服器搭建環境的時候caffe的版本還比較老,SSD這個方法用的是目前最新的caffe版本吧貌似,是以主要注意的Linux系統的依賴庫有(boost,hdf5),一開始我以為之前都搭建過caffe了,依賴庫什麼的全部搞定了,後來才想明白貌似caffe在全年年底的時候有過更新,不管怎樣,大家在Linux下多敲一些指令,把依賴庫都搞定吧,是以這裡關于搭建環境推薦兩篇部落格,選擇合适你的地方看就好:

GTX1070+CUDA8.0+Ubuntu16.04+Caffe+SSD 深度學習架構搭建 細節一步到位版 

SSD安裝及訓練自己的資料集 

3.demo示範

環境部署成功之後就開始demo的示範了,這裡先跳過了caffe使用SSD訓練自己的資料集,直接用官方的模型和網絡檔案來先示範下demo,先推薦一個部落格:

SSD: Single Shot MultiBox Detector檢測單張圖檔

網絡上能搜到的大多數示範都挺無聊的,浪費大家時間,隻是把官方首頁上的東西搬過來,甚至于一張圖檔的效果都沒有,官方給出的python的腳本是讀取網絡攝像頭的,但是對于單張圖檔的檢測,也給出了C++和python的接口,這裡先說python的,檔案是examples/ssd_detect.ipynb,這裡需要用到ipython和jupyter庫,這裡其實我挺搞不懂,幹嘛不直接寫一個py檔案好了,不過這也就留給我當做之後的任務吧。

具體的操作在上面貼出來的部落格裡面已經有了,我說幾個遇到的問題:

第一:就是每個接觸caffe的人都能會心一笑的路徑問題,一共就幾個檔案,caffemodel檔案,prototxt檔案,一定要把路徑确認好,推薦還是使用絕對路徑比較靠譜;

第二:在deploy.prototxt檔案的最後,如下圖所示:

Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)

第一個是輸出檔案的路徑,一定要修改過來;第二個圓圈比較重要,在作者github首頁上弄下來的data檔案夾中,是沒有data/VOC0712/test_name_size.txt這個檔案的,大家需要到data路徑下的相應位置,找到一個名字叫做create_list.sh的腳本,将裡面data的路徑修改為自己的,也就是我給大家的第一個百度雲盤連結裡面的那些檔案到時候放到你的系統中的位置,訓練完之後才有這個txt檔案。

第三:上圖中最後其實并不是4952,原本是1w+的,但是官方給的資料集中其實隻有4952張圖檔,沒去數過,反正運作create_list那個腳本,輸出的統計資訊就是4952張圖檔,改一下就好了。

然後主要的問題就這些了,現在可以看一看效果了。

實驗效果:

Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)
Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)
Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)
Ubuntu上配置caffe+SSD及demo示範(附帶問題彙總)

以上便是這一次實驗的目的,至于性能什麼的還沒來得及去感受,這應該是之後幾天的任務了,了解下cpp下的demo,然後梳理一下自己寫一個python的接口檔案出來,有什麼問題歡迎大家一起留言溝通。或者QQ上聯系:435977170.。

上一篇: keras Input

繼續閱讀