在Windows下想嘗試弄個YOLO試試,先從v2版本開始吧,本文主要記錄複現代碼出現的問題,以及使用自己資料庫測試出現的問題。
代碼位址:https://github.com/experiencor/keras-yolo2(選了一個高星)
一.代碼複現
環境:Windows10下使用Anaconda + Pycharm 顯示卡1080Ti
為了用gpu肯定是conda install keras-gpu,一定要保證有cuda和cudnn
另外還需要imgaug、opencv-python、h5py
環境配置可參見https://blog.csdn.net/hesongzefairy/article/details/86748178
環境配置好了之後,運作程式之前需要按照作者得要求下載下傳資料集
https://github.com/experiencor/raccoon_dataset
下好的資料集有四個檔案夾,就訓練和測試來說,images存放的是訓練圖檔,annodations存的是label,data中是做好的csv檔案。

接下來我們需要調整設定檔案config.json
{
"model" : {
"backend": "Full Yolo",
"input_size": 416,
"anchors": [3.99,0.99, 4.24,1.88, 7.68,4.21, 12.37,9.31, 114.44,49.19],
"max_box_per_image": 10,
"labels": ["raccoon"]
},
"train": {
"train_image_folder": "/home/hesongze/PycharmProjects/keras-yolo2-master/raccoon_dataset-master/train_small/",
"train_annot_folder": "/home/hesongze/PycharmProjects/keras-yolo2-master/raccoon_dataset-master/train_lasmall/",
"train_times": 8,
"pretrained_weights": "full_yolo_raccoon.h5",
"batch_size": 5,
"learning_rate": 1e-4,
"nb_epochs": 1000,
"warmup_epochs": 3,
"object_scale": 5.0 ,
"no_object_scale": 1.0,
"coord_scale": 1.0,
"class_scale": 1.0,
"saved_weights_name": "full_yolo_test.h5",
"debug": true
},
"valid": {
"valid_image_folder": "",
"valid_annot_folder": "",
"valid_times": 1
}
}
最關鍵的幾個點:
- backend的選擇:這裡選擇Full Yolo是加載之前Yolo的權重,能夠加快自己訓練集的收斂速度,但是這個backend需要自己去下載下傳,作者自己提供的權重并沒有Full Yolo https://github.com/rodrigo2019/keras_yolo2/releases/tag/pre-trained-weights
- 設定label為“raccoon”,如果使用自己的資料集就換成自己對應的label
- 資料集的位址設定,設定好train_image_folder和train_annot_folder才能順利讀取圖檔和label
- 最後需要運作gen_anchors.py(python gen_anchors.py -c config.json)擷取anchors,将輸出得結果複制到config.json相應位置即可
完成以上這些設定後,就可以啟動訓練程式了。
python train.py -c config.json
測試程式
python predit.py -c config.json -w /path/best_weight.h5 -i -/path/image
那麼使用自己的資料集時,最簡單的方法就是将圖檔的名字按照作者這樣命名,寫一個python腳本就可以實作,并且作者在資料集的網址中給出了做label的程式(draw boxes.ipynb)以及xml和csv的轉化檔案,非常友善!