基於keras的YOLOv3在VOC資料集上訓練測試
阿新 • • 發佈:2018-12-15
一、編譯環境
- windows7
- Anaconda+python3.6+keras+tensroflow+pyCharm
二、步驟
-
測試
- 從上文第二個github上下載工程,並用pyCharm開啟,keras-yolo3-master。
- 下載yoloV3權重檔案
https://pjreddie.com/media/files/yolov3.weights
- 將darknet下的yolov3配置檔案轉換成keras適用的h5檔案:
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
-
執行預測影象程式
python yolo_video.py --image
輸入測試影象路徑:
-
輸出測試結果
- 從結果來看,預訓練權重檢測結果尚可。
-
訓練
- 下載VOC2007資料集合得到VOCtrainval_06-Nov-2007.tar和VOCtest_06-Nov-2007.tar,分別解壓命名為VOC2007和VOC2007_test放在資料夾VOCdevkit下。
- 根據使用VOC資料集的年份修改voc_annotation.py檔案中的sets。
ets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')] classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"]
- 執行程式碼
python voc_annotation.py
得到3個txt檔案:2007_val.txt,2007_train.txt,2007_test_test.txt
- 為了加快訓練速度,下載darknet網路的預訓練權重
https://pjreddie.com/media/files/darknet53.conv.74
將darknet53.conv.74改名為darknet53.weights,並轉化為keras能夠接受的權重形式。
python convert.py -w darknet53.cfg darknet53.weights model_data/darknet53_weights.h5
-
修改train.py的34行,將weights_path='model_data/yolo_weights.h5'修改為weights_path='model_data/darknet53_weights.h5',執行程式碼
-
python train.py
訓練過程:
-
訓練結束:
-
第一階段訓練結束,訓練50次得到trained_weights_stage_1.h5,此時的loss=34,似乎下降明顯,但是val_loss=4399依然很大。Train.py的71行開始會在不釋放當前訓練結果的前提下進行第二階段的訓練,但是似乎由於視訊記憶體耗盡的緣故,訓練沒有持續下去。
-
對第一階段的訓練結果進行測試,
修改yolo.py的程式碼
#"model_path": 'model_data/yolo.h5', "model_path": 'model_data/trained_weights_stage_1.h5', "anchors_path": 'model_data/yolo_anchors.txt', #"classes_path": 'model_data/coco_classes.txt', "classes_path": 'model_data/voc_classes.txt',
執行程式碼
python yolo_video.py --image
測試結果如下:
-
可以看出測試結果很不好。所以,應該嘗試繼續訓練。