我使用的faster-RCNN的代碼是最原始的一個(gè)python版本(https://github.com/smallcorgi/Faster-RCNN_TF)
給自己標(biāo)記數(shù)據(jù)的工具為L(zhǎng)abelImg(https://github.com/tzutalin/labelImg),關(guān)于怎么用這個(gè)工具制作自己的數(shù)據(jù)集,參見(http://www.reibang.com/p/4451e6cc1d67)
因?yàn)榘骋彩浅鯇W(xué)者嘛哟玷,不怎么會(huì)改代碼,因此我把自己的數(shù)據(jù)直接處理成了VOC2007的結(jié)構(gòu)烁巫,這樣我只需要去修改classes的類別,不用擔(dān)心文件的路徑宠能。
修改的文件
- Faster-RCNN_TF/lib/datasets/pascal_voc.py
修改紅色的地方亚隙,可以把其中的類改成自己定義的那些類,但是第一行的background不能動(dòng)棍潘,那個(gè)相當(dāng)于是背景類恃鞋。
如果你想強(qiáng)行來訓(xùn)練PNG圖片的話崖媚,就把圖中黃色圈圈的jpg改成png -
Faster-RCNN_TF/lib/networks/VGGnet_train.py
改成你的類別數(shù) + 1,因?yàn)橛幸粋€(gè)背景類別恤浪。
-
Faster-RCNN_TF/lib/networks/VGGnet_test.py
同上進(jìn)行修改畅哑。
-
Faster-RCNN_TF/tools/demo.py
同1中進(jìn)行修改即可
注:修改完了之后要?jiǎng)h除修改的文件對(duì)應(yīng)的pyc編譯文件
訓(xùn)練自己的數(shù)據(jù)
訓(xùn)練前要把官方的數(shù)據(jù)替換掉,如果你拿原始數(shù)據(jù)訓(xùn)練過水由,還需要把load的數(shù)據(jù)和模型刪掉荠呐。
需要?jiǎng)h除的文件在這三個(gè)目錄下面:
Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/
Faster-RCNN_TF/data/cache/
Faster-RCNN_TF/data/VOCdevkit2007/annotations_cache/
準(zhǔn)備進(jìn)行訓(xùn)練
進(jìn)入Faster-RCNN_TF/lib目錄make一下,再進(jìn)入Faster-RCNN_TF目錄執(zhí)行
./experiments/scripts/faster_rcnn_end2end.sh gpu 0 VGG16 pascal_voc
訓(xùn)練到最后會(huì)報(bào)錯(cuò)砂客,提示 --weights: expected one argument, 這時(shí)候需要添加我們訓(xùn)練好的模型路徑泥张。在訓(xùn)練階段,這個(gè)問題可以通過修改shell腳本faster_rcnn_end2end.sh來解決鞠值,做如下修改:
--weights ${NET_FINAL} \
修改為
--weights output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt \