【轉(zhuǎn)載】caffe安裝 ssd配置并在VGG模型上訓練自己的數(shù)據(jù) 原

https://my.oschina.net/u/1046919/blog/777470


最近一直在看深度學習的東西,用到了ssd,上網(wǎng)一搜,找到一篇不錯的博客,http://www.cnblogs.com/objectDetect/p/5780006.html,官網(wǎng), 這篇是連安裝cuda到caffe環(huán)境的一系列http://blog.csdn.net/wopawn/article/details/52302164。經(jīng)過磕磕絆絆,也決定寫一篇相關的博客。

ssd的demo是介紹了在voc數(shù)據(jù)集上訓練和驗證,所以想要簡單的使用ssd訓練自己的數(shù)據(jù),就是做成類似voc 的數(shù)據(jù)再調(diào)用ssd 中的ssd_pascal.py進行訓練。 這里需要說明的是ssd項目中自帶的ssd_pascal.py文件會在VGG的模型上再訓練,以我的理解就是在VGG的模型上做fine-tuning。

現(xiàn)在從頭開始教程:

1 安裝ssd

1.1 首先需要安裝有git

sudo apt-getinstallgit

1.2 git ssd 項目

gitclonehttps://github.com/weiliu89/caffe.gitcdcaffegit checkout ssd(出現(xiàn)“分支”則說明copy-check成功)

記得一定要用git的方法,不要直接下載caffe-master.zip這種壓縮包,里面沒有git的配置,沒用的。

1.3 開始編譯ssd

先安裝一些依賴

sudo apt-getinstalllibprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-getinstall--no-install-recommends libboost-all-dev

ubuntu14.04需要依賴

sudo apt-getinstalllibgflags-dev libgoogle-glog-dev liblmdb-dev

ubuntu16.04需要cuda 8

BLAS:可以通過

sudo apt-getinstall libatlas-base-dev

可以安裝OpenBLAS 或者 MKL,MKL可以使CPU更好的工作。

要python的話可能要安裝

sudo apt-getinstallpython-pip python-numpy? python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython

開始編譯,編譯有兩種辦法:

** 1.3.1 直接make**

cd"<你的caffe項目>"cpMakefile.config.exampleMakefile.config

如果你想直接用CPU而不用GPU,進入Makefile.config 將 #CPU_ONLY:=1這句去掉注釋,像下面這個

# CPU-only switch (uncomment to build without GPU support).CPU_ONLY := 1

如果要改BLAS:

# BLAS choice:#atlasforATLAS (default)#mklforMKL#openforOpenBlasBLAS := atlas

然后執(zhí)行

makeall-j8sudomake installmakeruntest (這個不一定要)makepycaffe

** 1.3.2 用cmake方法安裝**

cd"<你的caffe項目>"mkdir buildcdbuildccmake ..make -j8sudo make installmake runtestmake pycaffe

如果要改BLAS和單用CPU,在ccmake .. 中選擇。

裝好在之后注意配置python caffe 環(huán)境

vim/etc/profile

在最后一行添加

exportPYTHONPATH=/home/........../caffe/python:$PYTHONPATH

然后更新下環(huán)境

source/etc/profile

1.4 驗證pycaffe環(huán)境

pythonimportcaffe

如果沒有問題那就是成功了

如果有錯誤那么就打開主目錄下的.bashrc寫入那句話,再試試看。

2 訓練自己模型

訓練VOC數(shù)據(jù)的方法上面那篇博客有講,這里不再多說。講講訓練自己數(shù)據(jù)。

現(xiàn)在來看一下voc的標簽00001.xml

現(xiàn)在主要更改的是size中的width,height,object中的name和xmin,xmax,ymin,ymax這幾個東西。

所以每幅圖片都要在樣子更改,上面的博客推薦了一個bbox-tool,但是對于我來說不太好用,然后就寫了一個基于opencv的程序,稍后放出。

在ssd中voc的同級目錄新建一個文件夾,講所有圖片和標簽都放進去,做好鏈接?

trainval.txt 存放訓練用的圖片路徑,格式類似

data1/image1.jpg data1/image.xml

test.txt 存放測試用的圖片路徑,格式和trainval.txt相同

test_name_size.txt 存放測試用的圖片,格式類似測試 “ 圖片名 高 長“

imagetest1300300

labelmap_indoor.prototxt 標簽的名字,注意label 0 這類一定會存在,就是圖片bounding box以外的數(shù)據(jù)標簽

數(shù)據(jù)做好之后運行create_data.sh進行整理數(shù)據(jù),create_data.sh里面可能有些路徑錯誤,可以自行改到自己的數(shù)據(jù)目錄。

運行create_data.sh之后會在當前目錄和ssd的examples下新建一個數(shù)據(jù)目錄,名字是當前目錄的名字。

3 訓練

打開ssd_pascal.py需要修改的有一下幾點:

train_data和test_data , 指向examples中你的數(shù)據(jù),例如

train_data="examples/indoor/indoor_trainval_lmdb"# The database file for testing data. Created by data/VOC0712/create_data.shtest_data="examples/indoor/indoor_test_lmdb"

num_test_image該變量修改成自己數(shù)據(jù)集中測試數(shù)據(jù)圖片的數(shù)量

num_classes 該變量修改成自己數(shù)據(jù)集中 標簽類別數(shù)量數(shù) + 1

gpus = "0,1,2,3" 電腦有幾個gpu就寫多少個,如果有一個就寫gpus="0",兩個就寫gpus="0,1",以此類推。

最后到caffe的根目錄運行, ps:你的ssd_pascal.py的目錄是example/yourSSD/ssd_pascal.py

pythonexample/yourSSD/ssd_pascal.py

4 測試

有好幾種測試的方法,

4.1 python

在caffe的根目錄運行ssd_pascal_webcam.py這個文件,這是使用攝像頭實時測試的軟件,讀取的caffemodel是在caffe/models/VGGNet/VOC0712/SSD_300x300_webcam下最新的model,所以記得在這個文件夾中放入模型。 還要更改下ssd_pascal_webcam.py中l(wèi)abel_map_file到你的labelmap_voc.prototxt

pythonexamples/ssd/ssd_pascal_webcam.py

4.2 c++

編譯完SSD后,C++版本的的可執(zhí)行文件存放目錄: .build_release/examples/ssd/ssd_detect.bin

測試命令 ./.build_release/examples/ssd/ssd_detect.bin models/VGGNet/indoor/deploy.prototxt models/VGGNet/indoor/VGG_VOC0712_SSD_300x300_iter_60000.caffemodel pictures.txt

ssd自帶ssd_detect.cpp,可以拿來使用。

** 4.2.1 用qt** .pro件定義中需要引入你的caffe配置,例如

LIBS += /home/xxx/caffe/build/lib/libcaffe.so INCLUDEPATH += /home/xxx/caffe/includeINCLUDEPATH += /home/xxx/caffe/build/include

可能還會有一些編譯問題:

error while loading shared libraries: libglog.so.0: cannot open shared object file: No such file or directory 解決

LIBS +=/usr/lib/x86_64-linux-gnu/libglog.so

libcaffe.so.1.0.0-rc3: cannot open shared object file: No such file or directory 解決:在/etc/ld.so.conf.d/下新建caffe.conf文件,在caffe.conf中加入到libcaffe.so.1.0.0-rc3的位置,基本上是在build的lib里。

** 4.2.2 使用cmake**

如果是使用cmake,注意安裝ssd的時候一定要make install

然后CMakeLists.txt

find_package(OpenCV REQUIRED)find_package(Caffe REQUIRED)#option (CPU_ONLY"Use CPU or use GPU"ON)#option (USE_OPENCV"Use CPU or use GPU"ON)include_directories( ${Caffe_INCLUDE_DIRS} )add_definitions(${Caffe_DEFINITIONS})# ex. -DCPU_ONLYadd_executable(ssd_detect ssd_detect.cpp )

使用cpu或者gpu可以在選項里面定義。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容