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