1. 程式人生 > >Darknet yolo 環境搭建以及訓練測試自己的資料集

Darknet yolo 環境搭建以及訓練測試自己的資料集

Darknet yolo環境搭建

Darknet是一個c語言實現的神經網路框架,它執行速度快,易安裝,支援CPU和GPU兩種模式。
Yolo是執行在Darknet上的一個神經網路,二者搭配一起使用。

在Ubuntu下依次輸入以下命令 即可下載Darknet

git clone https://github.com/pjreddie/darknet
cd darknet
make

接下來下載權重檔案

wget https://pjreddie.com/media/files/yolo.weights

執行檢測器

./darknet detect cfg/yolo.cfg yolo.weights
data/dog.jpg

輸出如下:
執行結果
以上是檢測單張圖片的做法,如果想連續檢測多張圖片,那麼可以輸入命令而不指定後面的檔案:

./darknet detect cfg/yolo.cfg yolo.weights

接下來會提示輸入圖片路徑
這裡寫圖片描述

在此處輸入路徑

 ./data/horses.jpg

此時會顯示檢測結果,並提示輸入下一張想檢測的圖片的路徑,如果想停止檢測,可按ctrl+c退出。
這裡寫圖片描述

預設情況下,YOLO僅顯示以0.25以上的置信度檢測到的物件。可以通過將該-thresh 標誌傳遞給該yolo命令來進行更改。例如,要顯示所有檢測,可以將閾值設定為0:

./darknet detect cfg/yolo.cfg
yolo.weights data/dog.jpg -thresh 0

訓練測試自己的資料集

準備資料
環境安裝好了,接下來試著訓練自己的資料集。
首先我們需要準備自己的資料集,使用固定格式的jpg影象,可下載freename重新命名工具對檔案進行重新命名,在名字上最好使用像VOC一樣類似000001.jpg、000002.jpg這樣。
設定檔案結構
按照圖片上的目錄結構自己建立資料夾
這裡寫圖片描述
資料夾Annotation中主要存放xml檔案;
而ImageSets我們只需要用到Main資料夾,這裡面存放的是一些文字檔案,通常為train.txt、test.txt等;
JPEGImages資料夾中放我們已按統一規則命名好的原始影象。
其他資料夾暫時不用管。
注:VOC資料夾可命名為voc+年份。如VOC2017。
用labelimg軟體進行資料標註,然後把xml檔案和原始的jpg檔案拷貝到對應的資料夾下。
生成相關檔案


按darknet的說明編譯好後,接下來在darknet-master/scripts資料夾中新建資料夾VOCdevkit,然後將整個VOC2017資料夾都拷到VOCdevkit資料夾下。
接下來修改scripts資料夾下的voc_label.py檔案,來生成相關檔案。
將檔案中的sets和class改成自己的資料集名和類別。
這裡寫圖片描述
修改好後在該目錄下執行命令:python voc_label.py,之後則在資料夾scripts\VOCdevkit\VOC2007下生成了資料夾lable,裡面有各個圖片對應的txt檔案。同時在scripts\下應該也生成了train_2007.txt這個檔案,裡面包含了所有訓練樣本的絕對路徑。
配置檔案修改
開啟cfg資料夾,可以看到下面有許多cfg字尾的檔案,類似於caffe中的prototxt
這裡寫圖片描述
選擇tiny-yolo-voc.cfg進行修改
修改最後一層卷積層中的filter,根據自己的引數計算(filter=num×(classes + coords + 1))
這裡寫圖片描述
以及region下的classes,修改為自己的類別。
這裡寫圖片描述
接著需要修改cfg資料夾中的voc.data檔案。也是按自己需求和路徑修改。
執行訓練
輸入下面的命令進行訓練

./darknet detector train ./cfg/voc.data cfg/tiny-yolo-voc.cfg  

結果如圖:
這裡寫圖片描述

訓練完成後會根據迭代次數儲存訓練的權重模型,然後就可以拿來測試了。
測試命令:

./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg results/tiny-yolo-voc_6000.weights data/images.jpg