轉載:https://blog.csdn.net/z649431508/article/details/82191036
yolov3是目前目標檢測類檢測效果和檢測速度最好的算法,原版的yolov3檢測的物體種類衆多,本文實在原有yolov3上將多累物體檢測簡化爲單類物體檢測,本文的原始代碼基於github上copy的,源碼下載地址爲:https://github.com/qqwweee/keras-yolo3
根據作者提供的代碼我們可以測試、訓練我們的數據集,原文已做詳細敘述如何訓練測試代碼,不做過多敘述。
單類物體檢測假設我們是在源碼基礎上檢測‘person’這個類別,我們需要對其中的yolo.cfg文件做修改,
將其中的classes修改爲1,所有的filters=255的值修改爲filters=18(計算方式爲(classes+5)*3),然後將coco_class.txt和voc_class.txt文件中的類別全部修改成‘person’
再將voc_annocation.py文件中的classes修改成只有‘person’一個類。
然後需要準備數據集,將數據集放在運行代碼的同一級目錄下。注意數據集下載需要將訓練集和測試集裏面的數據放在一起,我這裏已經將其數據整理,https://download.csdn.net/download/z649431508/10638245
運行voc_annocation.py生成2007_train.txt和2007_test.txt,2007_val.txt文件。
然後通過命令行cd到運行代碼的同一級目錄,執行
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
1
生成預訓練權重。
然後運行
python train.py
開始訓練
訓練過程可能會出現val_loss=nan的情況,我在訓練過程中發現在訓練到50Epoch以後val_loss開始降低,或者按照網上的說法可以調整cfg文件的batch大小,將其調大,也能改善val_loss。
訓練完成後會生成一個logs文件夾,裏面的000文件夾下會有訓練好的權重文件,trained_weights_final.h5是我們所需要的文件,再次修改yolo.py文件中的代碼,將其中的modelpath換成自己生成的trained_weights_final.h5文件下的目錄。
然後需要準備數據集,將數據集放在運行代碼的同一級目錄下。注意數據集下載需要將訓練集和測試集裏面的數據放在一起,我這裏已經將其數據整理,https://download.csdn.net/download/z649431508/10638245
這裏寫圖片描述
運行voc_annocation.py生成2007_train.txt和2007_test.txt,2007_val.txt文件。
然後通過命令行cd到運行代碼的同一級目錄,執行
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
1
生成預訓練權重。
然後運行
python train.py
開始訓練
訓練過程可能會出現val_loss=nan的情況,我在訓練過程中發現在訓練到50Epoch以後val_loss開始降低,或者按照網上的說法可以調整cfg文件的batch大小,將其調大,也能改善val_loss。
訓練完成後會生成一個logs文件夾,裏面的000文件夾下會有訓練好的權重文件,trained_weights_final.h5是我們所需要的文件,再次修改yolo.py文件中的代碼,將其中的modelpath換成自己生成的trained_weights_final.h5文件下的目錄。
至此所有工作基本上完成,接着就是檢測效果的時候,命令行運行代碼
-