py-faster-rcnn + ZF 实现自己的数据训练与检测(二)
0.前言
在前面的一篇博客中,介紹了如何實現(xiàn)py-faster-rcnn的配置以及在PASCAL VOC 2007上面的訓(xùn)練,本節(jié),來講訴如何制作并訓(xùn)練自己的數(shù)據(jù)集。如果自己使用的是matlab版本的faster rcnn的話,請移步這里:http://blog.csdn.NET/sinat_30071459/article/details/50546891
1.制作自己的數(shù)據(jù)集
訓(xùn)練模型最頭疼的估計就是數(shù)據(jù)集的整理與標記了,本例中我以人臉識別為例來說明數(shù)據(jù)集的安排。首先,這里為了方便,我沒有更改VOC2007的任何格式,只是將data/VOCdevkit2007/VOC2007/Annotations和ImageSets以及JPEGImages文件夾的內(nèi)容進行了替換。假設(shè)你的數(shù)據(jù)集已經(jīng)進行了標記,所做的標記框已經(jīng)輸出到txt文檔中,如下所示。
0001.jpg f 67 55 195 201 0001.jpg f 339 49 479 206 從左到右依次是圖片名稱,打框的標簽和框的4個坐標
然后是將文檔中的數(shù)據(jù)寫入xml文件,如何制作數(shù)據(jù)可以參考這篇文章http://blog.csdn.net/liumaolincycle/article/details/50540487,這里不在贅述。不過和它不同的是,我為了方便,依然使用原有的數(shù)據(jù)集名稱,只是對相應(yīng)的文件進行了替換。最后是生成4個txt文檔,分別為train.txt? trainval.txt? test.txt 和 val.txt。據(jù)我發(fā)現(xiàn),在實驗時好像只用到了trainval.txt和test.txt,他們兩個構(gòu)成完整的一個數(shù)據(jù)集。最后,可以將原有的一些SegmenttationClass和SegmentationObject等文件夾刪除,在我的實驗中,所需要的完整結(jié)構(gòu)如下所示。
2.訓(xùn)練自己的數(shù)據(jù)
自己的數(shù)據(jù)集制作完成之后,就可以著手對文件進行修改以便訓(xùn)練了
(1)prototxt配置文件
file1:models/pascal_voc/ZF/faster_rcnn_alt_opt/stage1_rpn_train.pt file2:models/pascal_voc/ZF/faster_rcnn_alt_opt/stage1_fast_rcnn_train.ptfile3:models/pascal_voc/ZF/faster_rcnn_alt_opt/stage2_rpn_train.pt file4:models/pascal_voc/ZF/faster_rcnn_alt_opt/stage2_fast_rcnn_train.ptfile5:models/pascal_voc/ZF/faster_rcnn_alt_opt/fast_rcnn_test.pt 修改上面5個pt文件,將類別數(shù)量改成自己的類別數(shù)量+1(檢測時,背景也要作為1類),比如我的是人臉檢測,就一個類別,就要將pt文件中的類別改為2,再將bbox預(yù)測層改為8(2*4),以stage1_fast_rcnn_train.pt為例
[plain] view plaincopy
在使用自己的數(shù)據(jù)進行訓(xùn)練時,基本上都會報錯:assert(boxes[:,2] >= boxes[:,0]).all() ,主要是因為自己的圖片數(shù)據(jù)沒有統(tǒng)一整理過而導(dǎo)致的,將該文件加入幾行修改如下:
[python] view plaincopy
如果是在報錯之后再修改這個文件的話,記得在修改之后將data/cache/里面的pki文件刪除后再重新運行
修改到這里時,訓(xùn)練前的準備工作已經(jīng)完成了,現(xiàn)在可以直接進行訓(xùn)練。
cd py-faster-rcnn
./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc
訓(xùn)練完成之后,將output中的最終模型拷貝到data/faster_rcnn_models中,接下來測試訓(xùn)練完成的模型。
3.測試結(jié)果
修改./tools/demo.py
和上面的pascal_voc.py一樣,將類別改成自己的類別,然后將加載的模型改為自己訓(xùn)練出來的模型。以我的為例
[python] view plaincopy
執(zhí)行./tools/demo.py --net myzf即可得到如下的訓(xùn)練結(jié)果
總結(jié)
以上是生活随笔為你收集整理的py-faster-rcnn + ZF 实现自己的数据训练与检测(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: py-faster-rcnn + ZF
- 下一篇: Windows+Caffe(Faster