py-faster-rcnn + ZF 实现自己的数据训练与检测(一)
0.前言
最近兩個星期,一直在看faster rcnn物體檢測,在一段折騰之后,總算能夠訓練自己的數據并進行物體檢測了。這篇博客就當作是對最近整個實驗過程的記錄吧。首先先從最開始如何配置py-faster-rcnn并訓練PASCALVOC2007開始講起,然后再對代碼和數據集進行修改實現自己數據的訓練與檢測。我的實驗平臺是Ubuntu14.04 LTS?
1.配置py-faster-rcnn
(1)這里,首先不用說的,大家肯定都已經在自己的機器上配好了caffe的環境,那各種依賴項的安裝就不必多說。在配置之前,需要安裝一下幾個Python包:cython,python-OpenCV和easydict
[python] view plaincopy(2)從github上clone項目文件,注意:一定要在clone時加入--recursive參數,不然會很麻煩,也不要直接下載
[python] view plaincopy(3)Cython模塊的編譯
[python] view plaincopy
(4)Caffe和Pycaffe的編譯,在編譯之前,主要將makefile.config文件配置好,具體如何配置在你自己安裝caffe框架時肯定已經接觸過。這里也提供一個鏈接:實驗室歐大神的主頁Caffe + Ubuntu 15.04 + CUDA 7.5 新手安裝配置指南
[python] view plaincopy
(5)下載訓練好的模型,運行demo.py看效果
[python] view plaincopy
相信到了這一步,看到運行之后的結果是不是很開心呢,不過在我實驗過程中,執行demo.py時總是出現bug:
[plain] view plaincopy
抓耳撓腮查了好久資料終于找到問題所在:顯卡的計算能力不匹配,如何修改請看這里cudaSuccess( 8 vs.0 )
2.訓練PASCAL VOC 2007的數據
(1)下載pascal voc2007的訓練集,測試集和VOCdevkit
[plain] view plaincopy下載完成之后,將三個壓縮包解壓合并到一起。整體結構如下所示
$VOCdevkit/ # development kit $VOCdevkit/VOCcode/ # VOC utility code $VOCdevkit/VOC2007 # image sets, annotations, etc. # ... and several other directories ... 將VOCdevkit改名為VOCdevkit2007,然后放到data文件夾下,亦可以使用軟連接的方式,這里不再說明。
(2)下載預訓練好的ImageNet模型
cd py-faster-rcnn ./data/scripts/fetch_imagenet_models.sh
下載這個模型和之前的faster rcnn訓練好的模型時,不一定非要執行腳本,直接在腳本中找到資源的URL用迅雷下載更快。然后解壓到data文件夾即可。
(3)使用交替優化來訓練數據
cd py-faster-rcnn ./experiments/scripts/faster_rcnn_alt_opt.sh [GPU_ID] [NET] [--set ...] # GPU_ID is the GPU you want to train on # NET in {ZF, VGG_CNN_M_1024, VGG16} is the network arch to use # --set ... allows you to specify fast_rcnn.config options, e.g. # --set EXP_DIR seed_rng1701 RNG_SEED 1701 #例如命令./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc
默認的迭代次數是[80000, 40000, 80000, 40000]不過這對于我這種想看到實驗能否正常運行的人來說,實在要的等的太久,就在./tools/train_faster_rcnn_alt_opt.py中將迭代次數改為100吧
在程序運行到第一階段的第三部分“訓練fast r-cnn”時,很可能會報錯:out of memory !根據我的經驗所得,修改./lib/fast_rcnn/config.py 中的圖片大小,論文中作者使用的是將短邊縮放為600 pixels,對于我的渣渣電腦而言是吃不消的,所以修改如下:
# Scales to use during training (can list multiple scales) # Each scale is the pixel size of an image's shortest side __C.TRAIN.SCALES = (450, ) # Max pixel size of the longest side of a scaled input image __C.TRAIN.MAX_SIZE = 750
如果對作者論文中其他實驗也感興趣的話,可以嘗試一下experiments文件夾中的其他訓練腳本。最后,所有的輸出結果都在output文件夾
接下將如何在本篇博客的基礎上訓練自己的數據集并進行檢測
未完待續。。。
總結
以上是生活随笔為你收集整理的py-faster-rcnn + ZF 实现自己的数据训练与检测(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caffe框架下目标检测——faster
- 下一篇: py-faster-rcnn + ZF