yolov3算法檢測單類物體

原文鏈接:https://blog.csdn.net/z649431508/article/details/82191036

轉載: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文件下的目錄。

 


至此所有工作基本上完成,接着就是檢測效果的時候,命令行運行代碼
-

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