利用yolov3 進行目標檢測(可自定義檢測的類別)

最近在研究車輛檢測相關算法,因yolo算法的速度和精度基本均能滿足要求,原版的yolo v3算法是檢測多類物體,本人是在原來代碼的基礎上修改爲檢測單目標車輛,並基於預訓練權重在VOC2007數據集上進行訓練。
源代碼:https://github.com/qqwweee/keras-yolo3
原作者已經給出了訓練和測試方法,在此不再贅述。

要實現只檢測“car”這一類別,要修改的地方有一下幾個:

1、修改yolo.cfg文件
將yolo.cfg文件的classes修改爲1,所有的filters=255的值修改爲filters=18(計算方式爲(classes+5)*3)。(爲了不改變yolo.cfg,我是直接將yolo.cfg另存爲car.cfg,再做修改)
注意:filters僅僅是Yolo層前的filters修改爲18

2、修改類別文件
將coco_class.txt和voc_class.txt文件中的類別全部修改成‘car’ ,或在該目錄下新建object_classes.txt文件,寫入car。

3、修改voc_annocation.py, 生成數據集
將voc_annocation.py 中的classes修改成只有“car”一個,
在這裏插入圖片描述
準備數據集VOC2007, 然後運行voc_annocation.py生成2007_train.txt和2007_test.txt,2007_val.txt文件
在這裏插入圖片描述
4、生成預訓練權重文件yolo_weights.h5

下載 yolov3.weights ,放到工程根目錄下,cmd下切換到工程目錄下,使用命令:

python convert.py -w car.cfg yolov3.weights model_data/yolo_weights.h5

注意,此處的car.cfg 爲前面新建的,如果直接在原yolo.cfg上改的,則使用yolo.cfg在這裏插入圖片描述
在這裏插入圖片描述
5、進行訓練
運行 train.py 文件,注意更改訓練文件目錄(annotation_path),類別文件目錄(classes_path)。
訓練完成後會生成一個logs文件夾,裏面的000文件夾下會有訓練好的權重文件,trained_weights_stage_1.h5 是第一階段訓練得到的(只訓練後三層),trained_weights_final.h5是最終得到的訓練權重文件(全訓練)。

6、測試

修改yolo.py文件,將其中的model_path換成自己生成的trained_weights_final.h5文件的目錄, classes_path 改成 待檢測的目標類文件object_classes.txt.
在這裏插入圖片描述
最後就是加載圖片或視頻進行測試了。
在這裏插入圖片描述
也可根據需要,對應做上面的修改以滿足指定類別物體的檢測。
初學者,以上如有不正確之處請指出,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章