我使用的代碼鏈接在這里 https://github.com/smallcorgi/Faster-RCNN_TF
我處理自己數據的標記工具在這里 https://github.com/tzutalin/labelImg
為了最小程度的修改源代碼,我把自己的數據處理成和 VOC2007 文件格式一模一樣的結構。這樣,只需要修改 classes 里的類別就可以了,路徑的問題完全不用管。
修改的文件路徑
/home/deep/jcx/Faster-RCNN_TF/lib/datasets/pascal_voc.py
修改為自己數據的類
/home/deep/jcx/Faster-RCNN_TF/lib/networks/VGGnet_train.py
修改類的個數
/home/deep/jcx/Faster-RCNN_TF/lib/networks/VGGnet_test.py
修改類的個數
以上就是我修改的所有地方,簡單吧 :D
訓練我們的數據
訓練前要把官方的數據替換掉,如果你拿原始VOC數據訓練過,還需要把load的數據和模型刪掉。
需要刪除這兩個目錄下的文件:
/home/deep/jcx/Faster-RCNN_TF/data/cache
/home/deep/jcx/Faster-RCNN_TF/output/faster_rcnn_end2end
開始訓練
首先要到根目錄 Faster-RCNN_TF
然后到lib目錄下執行:
export PATH=$PATH:/usr/local/cuda-8.0/bin/
make
退回到Faster-RCNN_TF執行:
./experiments/scripts/faster_rcnn_end2end.sh gpu 0 VGG16 pascal_voc
★注意:訓練到最后會報錯,提示 --weights: expected one argument, 這時候需要添加我們訓練好的模型路徑。在訓練階段。
開始測試
執行test_net.py 并添加了--weights 的參數。
執行前查看 /home/deep/jcx/Faster-RCNN_TF/data/VOCdevkit2007/annotations_cache/annots.pkl
的緩存文件是不是清空的。
python ./tools/test_net.py --device gpu --device_id 0 --weights /home/deep/jcx/Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt --imdb voc_2007_test --cfg experiments/cfgs/faster_rcnn_end2end.yml --network VGGnet_test
使用 demo.py 檢測從網上找到的相關皮膚病圖片
直接用模型對相關圖片進行目標檢測
首先要把 demo.py
文件里的 CLASSES 要與之前修改的類別保持一致
/home/deep/jcx/Faster-RCNN_TF/tools
在文件根目錄下面執行此命令,開始生成結果:
python ./tools/demo.py --model /home/deep/jcx/Faster-RCNN_TF/output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt
保存標記好的圖片
在 demo.py
里添加我們要保存圖片的路徑