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
四:測試模型
- 對整個測試集的測試:(預設使用最後儲存的模型)
python examples/ssd/score_ssd_pascal.py
- 對單張圖片測試檢測效果:
作者提供兩種測試檔案:cpp和ipynp檔案
我們使用ipynp檔案, 檔案路徑為:examples/ssd_detect.ipynb
步驟:
- 啟動Terminal:"ctrl+alt+t".
- 轉到主檔案目錄,並取得root許可權:"cd caffe-ssd"."sudo su" 否則會出錯
Permission denied: "/root/data/VOCdevkit/results/VOC2007/SSD_300x300/Main"
- 啟動ipython/jupyter notebook: "ipython notebook",找到ipynb檔案。
- 按照給定的程式碼"shift+enter"走下來即可。