Caffe: SSD模型


SSD模型配置(訓練)與運行

參考博文:

1. * ssd模型配置及運行demo

2. * SSD: Signle Shot Detector 用於自然場景文字檢測

3. SSD的配置安裝與測試

4. * SSD: Single Shot MultiBox Detector檢測單張圖片

簡介:

SSD基於Caffe框架實現,在Github上可以獲得開源代碼。SSD 是用來檢測物體的,那么同樣可以將 SSD 用來檢測自然場景圖像中的文字。

第一部分:安裝SSD(caffe)

1、安裝Git

終端輸入:

sudo apt-get install git  

2、安裝SSD

在主文件下終端輸入(即/home/***(您的服務器名字)這個目錄):

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd(出現“分支”則說明copy-check成功)

會在examples目錄下出現ssd項目 

第二部分:配置SSD(caffe)

終端輸入:
cd /home/**(您服務器的名字)/caffe

cp Makefile.config.example Makefile.config

打開Makefile.config,開始修改,保存退出;或者從之前caffe項目復制其配置文件到這里
終端輸入:

cd /home/**(您服務器的名字)/caffe
mkdir build
cd build
# 下面的命令都在build目錄下執行
cmake ..(cmake和..中間又一個空格)
make all -j16("‐j16"是使用 CPU 的多核進行編譯,可以極大地加速編譯的速度)
make pycaffe(編譯pycaffe)  

注:編譯最新的caffe使用cudnn,其版本要求至少為v4,否則出錯.[2017-02-21]

第三部分:下載數據文件

1、 預訓練模型下載

下載地址:VGG_ILSVRC_16_layers_fc_reduced.caffemodel

在caffe/models文件夾下新建文件夾,命名為VGGNet,將剛剛下載下來的文件放入這個VGGNet文件夾當中

2、下載VOC2007和VOC2012數據集

在用戶主目錄下(即/home/**(您服務器的名字)/)新建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  

解壓這三個文件,終端輸入(請嚴格按照這個順序解壓):

cd /home/**(您服務器的名字)/data
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar  

 

第四部分:生成LMDB文件

終端輸入:

cd /home/**(您服務器的名字)/caffe
./data/VOC0712/create_list.sh
./data/VOC0712/create_data.sh  
 
        

在運行第三步時如果出現no module named caffe或者是no module named caffe-proto,則在終端輸入:

export PYTHONPATH=$PYTHONPATH:/home/**(您服務器的名字)/caffe/Python

然后再次運行

第五部分:訓練測試演示

1、 訓練
打開caffe/examples/ssd/ssd_pascal.py這個文件,找到gpus='0,1,2,3'這一行,如果您的服務器有一塊顯卡,則將123刪去,如果有兩個顯卡,則刪去23,以此類推。

如果您服務器沒有gpu支持,則注銷以下幾行,程序會以cpu形式訓練。(這個是解決問題cudasuccess(10vs0)的方法) 

#Ifnum_gpus >0:

    # batch_size_per_device =int(math.ceil(float(batch_size) / num_gpus))

#iter_size =int(math.ceil(float(accum_batch_size) / (batch_size_per_device * num_gpus)))

# solver_mode =P.Solver.GPU
# device_id =int(gpulist[0]) 

保存后終端運行:

cd  /home/**(您服務器的名字)/caffe
python examples/ssd/ssd_pascal.py

如果出現問題cudasuccess(2vs0)則說明您的顯卡計算量有限,則編輯文件 vim examples/ssd/ssd_pascal.py ,找到batch_size = 32這一行,修改數字32為16或8或4,保存后再次終端運行 python examples/ssd/ssd_pascal.py 

注意,SSD模型訓練過程中GPU顯存需求略小於 8GB。這意味着4GB或6GB顯存的GPU無法直接訓練SSD[實驗室配置為GT980,顯存6GB,cudnn加速能力5],可以通過減小batchsize來繞過這個問題。

wang@VisInt:~$ nvidia-smi
Tue Feb 21 17:30:36 2017       
+------------------------------------------------------+                       
| NVIDIA-SMI 346.82     Driver Version: 346.82         |                       
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 0000:02:00.0     N/A |                  N/A |
|  0%   37C    P8    N/A /  N/A |     48MiB /  6143MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0            C+G   Not Supported                                         |
+-----------------------------------------------------------------------------+  

2、 測試
終端輸入:

python examples/ssd/score_ssd_pascal.py  

演示detection的訓練結果,數值在0.728左右


3、 用訓練好的 model 進行 predict

>>演示網絡攝像頭識別效果,終端輸入:

python examples/ssd/ssd_pascal_webcam.py  

要求機器上有攝像頭,Linux服務器桌面環境下運行命令  

>>檢測圖片:

jupyter notebook  

打開 ~/caffe/examples/ssd_detect.ipynb

指定好 caffemodel

 

要求在Linux服務器桌面環境下運行命令

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM