1. 程式人生 > >【YOLO初探】之 keras-yolov3訓練自己資料集

【YOLO初探】之 keras-yolov3訓練自己資料集

寫在前面

如何使用官方資料集參看上一篇文章《【YOLO初探】之 使用官方資料集做目標分類》

傳送門:https://blog.csdn.net/plSong_CSDN/article/details/85108256

這裡,筆者使用了260張訓練資料,完成了人臉中“眼睛”、“鼻子”、“嘴巴”的檢測,可以成功檢測出,雖效果不是很好,但是起碼方法是對的,特在此與與大家分享、在文章末尾完全共享了自己的資料集!

大家還是先看一下效果吧,宅男女神上場~~~

原圖
效果圖

 

第一步:準備自己資料集

當然是準備一下自己的原材料。

1)下載VOC2007資料集,注意,請把資料夾裡面的所有檔案,注意是檔案,一個不留的刪除,只保留資料夾框架,可以完成後可以檢查一下,資料夾的大小是不是0。

2)將只保留資料夾的VOC2007資料集放在keras-yolo3-master資料夾下一級目錄下,這樣可以不用修改下面程式的路徑。如下,

3)將自己所有的圖片拷貝到”……\keras-yolo3-master\VOCdevkit\VOC2007\JPEGImages“檔案目錄下,最好都是jpg格式,至於為什麼,筆者未深究,待後續繼續學習。

好了,下一步就可以進行圖片的標記工作了。

第二步:資料標記

1)準備標記工具。使用LabelImg ,大家注意,需要把”“data\predefined_classes.txt”檔案中的內容修改為自己類比,如下,我這裡是三類。

2)開啟abelImg.exe,如果開啟失敗,可以嘗試“管理員身份執行”。選擇“Open Dir”瀏覽到”……\keras-yolo3-master\VOCdevkit\VOC2007\JPEGImages“。如下,

 

標記時常用的幾個快捷鍵,“w”:啟用標記框;“d”:下一張圖片;“a”:上一張圖片。

標記完成後,將生成的“XML”檔案,拷貝到“……\keras-yolo3-master\VOCdevkit\VOC2007\Annotations”中。

3)將“test.py”檔案拷貝到“……\keras-yolo3-master\VOCdevkit\VOC2007”,執行,在“……\keras-yolo3-master\VOCdevkit\VOC2007\ImageSets\Main”資料夾下,自動生成生成test.txt、train.txt、trainval.txt、val.txt檔案


第三步:生成yolo3所需的train.txt,val.txt,test.txt

執行voc_annotation.py檔案,注意在訓練自己的資料集時,需要將裡面的classes換成自己的,例如,“classes = ["eye", "nose", "mouth"]”,其他的不需要改變。

在“……\keras-yolo3-master\目錄下生成的三個以“2007_”打頭的txt檔案,手動刪掉“2007_”。


 第四步:修改引數檔案yolo3.cfg

大家注意,需要修改的地方一共是三處,每一處都要修改三個地方。

                                    filters:3*(5+len(classes));

                                    classes: len(classes) = 3,這裡是"eye", "nose", "mouth"三類

                                    random:改為0

[convolutional]
size=1
stride=1
pad=1
filters=24#這裡
activation=linear


[yolo]
mask = 6,7,8
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=3#這裡
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=0#這裡

第五步:修改model_data

修改“……\keras-yolo3-master\model_data”目錄下的“coco_classes.txt、voc_classes.txt”這兩個檔案,將自己類別填入進去。

第六步:開始訓練

在“……\keras-yolo3-master”建一個“\keras-yolo3-master\logs\000”資料夾,用來存放訓練完成的權重檔案

原始的batch_size = 10,我這裡視訊記憶體不夠,會失敗,我是修改到了batch_size = 2,epochs=200,大概用了6~7小時完成訓練;

loss在20左右,

第七步:測試

1)將訓練完成的權重檔案,D:\cv_project\Fivesenses\keras-yolo3-master\logs\000目錄下的trained_weights.h5,修改名稱為“yolo.h5”,拷貝到“……\keras-yolo3-master\model_data”目錄下。

2)在“……\keras-yolo3-master\”目錄下放一個測試圖片,執行yolo.py,會提示輸入圖片,

3)執行yolo_video.py,可以呼叫攝像頭進行測試,我這邊效果不是很好,可能是處理的速度的問題,後續在進行研究。

最後

資源下載地址:

第一部分:https://download.csdn.net/download/plsong_csdn/10868634

第二部分:https://download.csdn.net/download/plsong_csdn/10868639

第三部分:https://download.csdn.net/download/plsong_csdn/10868657

說明,上面的資源“第一部分”“第二部分”就可以直接執行,“第三部分”是自己訓練資料時候需要的內容。

完整的截圖:

本人也是剛剛開始學習yolo,歡迎大家交流學習,[email protected]


★finished by,songpl,2018.12.22.今天冬至