1. 程式人生 > >SSD:Single Shot MultiBox Detector 心得 (持續更新中。。。)

SSD:Single Shot MultiBox Detector 心得 (持續更新中。。。)

對於文章程式碼的一些理解, 以此來省去用A4紙記錄的苦惱

SSD文章連結:http://arxiv.org/pdf/1512.02325v2.pdf

SSD程式碼連結:https://github.com/weiliu89/caffe/tree/ssd

一:先說說程式碼配置編譯遇到的問題:

(1)按照程式碼教程編譯caffe 都通過了,執行creat_lis.py通過,但是執行creat_data.py時提示  AttributeError: 'module' object has no attribute 'LabelMap'

方法:新增環境變數"export PYTHONPATH=/path/to/CaffeSSD/python:$PYTHONPATH"然後"source ~/.bashrc"

(2) 執行creat_data.py提示 undefine cudnn_v4

方法: 重新連結一下cudnn . 祥見歐新宇配置caffe教程 ”安裝配置nVidia cuDNN 加速Caffe模型運算“部份。

(3) 執行 python 某個py 檔案時提示:

    Traceback (most recent call last):
     File "examples/ssd/ssd_pascal.py", line 4, in <module>
      import caffe
     ImportError: No module named caffe


方法:在那個py檔案加入

import sys
sys.path.append("/home/duan/caffe-ssd/python")

二:資料集處理部分

為了能直接用別人的程式碼處理自己的資料,就需要知道怎樣處理資料集

(1)需要生成trainval.txt等檔案, 執行 "cd$CAFFE_ROOT"以及 "./data/VOC0712/create_list.sh"
檔案內容格式為:[圖片路徑 對應的xml檔案路徑]

(2)生成lmdb檔案, 執行"./data/VOC0712/create_data.sh"(核心程式碼為"/build/tools/convert_annoset"中所提到的convert_annoset部分,會在後續講解)

三:訓練模型

code中使用VOC2007和2012的train_val資料集進行訓練和驗證,使用VOC2012的test進行測試

訓練模型的程式碼為 "python examples/ssd/ssd_pascal.py"(主目錄為caffe-ssd)

訓練的模型儲存在 "$CAFFE_ROOT/models/VGGNet/VOC0712/SSD_300x300/"

job file, log file, python script 儲存在 "$CAFFE_ROOT/jobs/VGGNet/VOC0712/SSD_300x300/"

我60k迭代後的mAP=0.71534

四:測試模型

  1. 對整個測試集的測試:(預設使用最後儲存的模型)
    python examples/ssd/score_ssd_pascal.py
  2. 對單張圖片測試檢測效果:

作者提供兩種測試檔案:cpp和ipynp檔案

我們使用ipynp檔案, 檔案路徑為:examples/ssd_detect.ipynb

步驟:

  1. 啟動Terminal:"ctrl+alt+t".
  2. 轉到主檔案目錄,並取得root許可權:"cd caffe-ssd"."sudo su" 否則會出錯
    Permission denied: "/root/data/VOCdevkit/results/VOC2007/SSD_300x300/Main"
  3. 啟動ipython/jupyter notebook: "ipython notebook",找到ipynb檔案。
  4. 按照給定的程式碼"shift+enter"走下來即可。