使用YOLOV3-tiny訓練行人檢測器並移植到樹莓派4B上實現

說明

1.這篇文章是在我上篇文章的基礎上繼續往下做,上篇博客,上篇博客在樹莓派4B上實現了目標檢測,這篇文章將實現在筆記本上行人檢測權重,再放到樹莓派裏面。
2.我的筆記本配置系統Ubuntu16.04+cuda8.0+cudnn5.1
硬件7代cpu,顯卡gtx1050,
3. 一共訓練30000次,訓練速度很快,10000次只要半小時左右就完成了,測試檢測結果很好
4.參考 https://github.com/pascal1129/yolo_person_detect

1. 下載YOLO

git clone https://github.com/AlexeyAB/darknet.git
cd darknet/
wget https://pjreddie.com/media/files/yolov3-tiny.weights

權重文件直接下載速度挺慢,可以使用迅雷打開鏈接下載。
我下載了所有權重文件放在百度網盤了,需要的可以根據需要下載
鏈接:https://pan.baidu.com/s/18UCY-6-J9-SBOHCPZLvuAA
提取碼:dhp6

編譯測試

爲了使用GPU修改makefile文件,修改開頭兩行如下,我沒有裝opencv,裝了的可以按照自己配置設置參數,opencv就是將檢測結果顯示出來,沒裝就會保存到目錄下,手動查看。

GPU=1
CUDNN=1

運行測試

sudo ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg

行人檢測訓練

製作數據集

使用voc2007和voc2012數據集,也可以只用一個。
下載地址,官網很慢,推薦複製鏡像站鏈接,去迅雷下載,速度很快。
官網: http://host.robots.ox.ac.uk/pascal/VOC/
鏡像站:https://pjreddie.com/projects/pascal-voc-dataset-mirror/
行人檢測就要抽取數據集中所有的人組成新的數據集,已經有人寫好所有制作的Python文件。

git clone https://github.com/pascal1129/yolo_person_detect.git

下載完畢可以放在darknet目錄下。
我使用的是voc2007和voc2012數據集,如圖,就將數據集的vocdevkit文件放在這個位置
在這裏插入圖片描述
分別運行2007和2012抽取行人的代碼,再運行voc_lable,py,轉換成YOLO支持的格式
生成三個txt文件,裏面存放的是數據集的地址。
是訓練之後轉移到樹莓派上,可以不需要測試集

cat 2007_train.txt 2012_train.txt > train.txt

數據集製作完畢

修改yolov3-tiny文件

在cfg目錄下可以找到yolov3-tiny.cfg,打開修改

batch, sub按需修改
一共二個YOLO層,均需要修改:
classes=1
filters=18		3*(1+1+4)=18
# filters=(classes + coords + 1)*<number of mask>

修改voc.names

在date目錄下找到voc.name

person

配置cfg/voc.data

將裏面的路徑改成自己數據集所在位置,這是我的

classes= 1
train  = /home/hua/darknet/yolo_person_detect-master/make_yolo_dataset/YOLO_VOC2007_2012/train.txt
valid  = /home/hua/darknet/yolo_person_detect-master/make_yolo_dataset/YOLO_VOC2007_2012/2007_test.txt
names = data/voc.names
backup = /home/hua/darknet/backup/

在darknet裏面新建一個backup文件夾,用來存放訓練好的權重
都改完之後,make

訓練

首先下載一個預訓練的權重,tiny版使用的是yolov3-tiny.conv.15

wget https://pjreddie.com/media/files/yolov3-tiny.conv.15

下載很慢,我下載了放在網盤裏,需要的自取

啓動訓練

sudo ./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg yolov3-tiny.conv.15 -gpus 0

每訓練1000次保存一個權重,在backup目錄
可以隨時停止,下一次訓練可以繼續
只要將上面的預訓練權重換成生成的權重就可以繼續訓練
訓練過程不出現大量的nan,就訓練成功了

測試

訓練的差不多,可以測試一下,能夠顯示運行時間,保存檢測後的圖
在這裏插入圖片描述

sudo ./darknet detector test cfg/voc.data cfg/yolov3-tiny.cfg backup/yolov3-tiny_last.weights data/person.jpg

我的測試結果

計算map和recall

sudo ./darknet detector map cfg/voc.data cfg/yolov3-tiny.cfg backup/yolov3-voc_last.weights


sudo ./darknet detector recall cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_final.weights 

我訓練了30000次,測試的map爲70.68,結果還不錯

樹莓派上測試

將權重文件直接複製到樹莓派上,和訓練時一樣修改好各文件,就可以實現行人檢測。
在這裏插入圖片描述

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