YOLO目標檢測,訓練自己的數據集(識別海參)
- 2019 年 10 月 28 日
- 筆記
這篇文章是訓練YOLO v2過程中的經驗總結,我使用YOLO v2訓練一組自己的數據,訓練後的model,在閾值為.25的情況下,Recall值是95.54%,Precision 是97.27%。
需要注意的是,這一訓練過程可能只對我自己的訓練集有效,因為我是根據我這一訓練集的特徵來對YOLO程式碼進行修改,可能對你的數據集並不適用,所以僅供參考。
我的數據集 批量改名首先準備好自己的數據集,最好固定格式,此處以VOC為例,採用jpg格式的影像,在名字上最好使用像VOC一樣類似000001.jpg、000002.jpg這樣。可參照下面示例python程式碼
讀取某文件夾下的所有影像然後統一命名,用了opencv所以順便還可以改格式。
準備好了自己的影像後,需要按VOC數據集的結構放置影像文件。VOC的結構如下
這裡面用到的文件夾是Annotation、ImageSets和JPEGImages。其中文件夾Annotation中主要存放xml文件,每一個xml對應一張影像,並且每個xml中存放的是標記的各個目標的位置和類別資訊,命名通常與對應的原始影像一樣;而ImageSets我們只需要用到Main文件夾,這裡面存放的是一些文本文件,通常為train.txt、test.txt等,該文本文件裡面的內容是需要用來訓練或測試的影像的名字(無後綴無路徑);JPEGImages文件夾中放我們已按統一規則命名好的原始影像。
因此,首先 1.新建文件夾VOC2007(通常命名為這個,也可以用其他命名,但一定是名字+年份,例如MYDATA2016,無論叫什麼後面都需要改相關程式碼匹配這裡,本例中以VOC2007為例) 2.在VOC2007文件夾下新建三個文件夾Annotation、ImageSets和JPEGImages,並把準備好的自己的原始影像放在JPEGImages文件夾下 3.在ImageSets文件夾中,新建三個空文件夾Layout、Main、Segmentation,然後把寫了訓練或測試的影像的名字的文本拷到Main文件夾下,按目的命名,我這裡所有影像用來訓練,故而Main文件夾下只有train.txt文件。上面說的小程式碼運行後會生成該文件,把它拷進去即可。
影像標註 2.標記影像目標區域 python程式碼直接運行之後開始標註, 因為做的是目標檢測,所以接下來需要標記原始影像中的目標區域。相關方法和工具有很多,像labelme 或者labeltool ,這裡需用標註工具,相關用法也有說明,基本就是框住目標區域然後雙擊類別,標記完整張影像後點擊保存即可。操作介面如下:
程式碼篇幅有限
請查看原文
https://blog.csdn.net/xiao__run/article/details/78714659
接下來我們把標註文件改成.XML 文件才能訓練,不多說直接上程式碼
用YOLOv2訓練 按darknet的說明編譯好後,接下來在darknet-master/scripts文件夾中新建文件夾VOCdevkit,然後將整個VOC2007文件夾都拷到VOCdevkit文件夾下。 然後,需要利用scripts文件夾中的voc_label.py文件生成一系列訓練文件和label,具體操作如下: 首先需要修改voc_label.py中的程式碼,這裡主要修改數據集名,以及類別資訊,我的是VOC2007,並且所有樣本用來訓練,沒有val或test,並且只檢測人,故只有一類目標,因此按如下設置
這裡包含了類別和對應歸一化後的位置(i guess,如有錯請指正)。同時在scripts下應該也生成了train_2007.txt這個文件,裡面包含了所有訓練樣本的絕對路徑。
2.配置文件修改 做好了上述準備,就可以根據不同的網路設置(cfg文件)來訓練了。在文件夾cfg中有很多cfg文件,應該跟caffe中的prototxt文件是一個意思。這裡以tiny-yolo-voc.cfg為例,該網路是yolo-voc的簡版,相對速度會快些。主要修改參數如下
程式碼篇幅有限
請查看原文
https://blog.csdn.net/xiao__run/article/details/78714659
也可參考https://blog.csdn.net/shangpapa3/article/details/77483324
Keras 實戰 YOLO v3 目標檢測圖文教程
運行步驟
1.從 YOLO 官網下載 YOLOv3 權重
wget https://pjreddie.com/media/files/yolov3.weights
下載過程如圖:
2.轉換 Darknet YOLO 模型為 Keras 模型
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
轉換過程如圖:
3.運行YOLO 目標檢測
python yolo.py
需要下載一個圖片,然後輸入圖片的名稱,如圖所示:
我並沒有使用經典的那張圖,隨便從網上找了一個,來源見圖片水印:
識別效果:
項目地址:https://github.com/qqwweee/keras-yolo3