Darknet YoloV4 Windows10下數據訓練及測試(二)darknet訓練自己的數據

環境:windows10+ cundn10.0+ cudnn7.6 vs2015編譯 opencv3.4.6 顯卡RTX2080 8G顯存

據測試cundn10.0+ cudnn7.6和cudn10.0+ cudnn7.3都可以

github:https://github.com/AlexeyAB/darknet

2、darknetV4訓練自己的數據

yolo4訓練的方法與yolo3基本相同。

yolov4.conv.137爲yoloV4的預訓練模型:https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137

a)、darknet數據集製作

國內交通標誌數據集:共包含1465張640*640的交通標誌圖片,一共標註了6類交通標誌,分別是:直行、左轉、右轉、禁行、禁鳴、人行橫道,("straight", "left","right", "stop ", "nohonk", "crosswalk")。標註信息均保存在xml文件下載地址:https://www.kesci.com/home/dataset/5ea92354366f4d002d730fca 下載解壓後的數據集格式:一個是xml何對應的圖片

寫腳本xml2voc2007轉換爲voc2007格式

import os
import numpy as np
import codecs
import json
from glob import glob
import cv2
import shutil
from sklearn.model_selection import train_test_split

saved_path = "C:/Users/nyy/Desktop/traffic_datasets/voc/"  # 保存路徑

創建要求文件夾
if not os.path.exists(saved_path + "Annotations"):
    os.makedirs(saved_path + "Annotations")
if not os.path.exists(saved_path + "JPEGImages/"):
    os.makedirs(saved_path + "JPEGImages/")
if not os.path.exists(saved_path + "ImageSets/Main/"):
    os.makedirs(saved_path + "ImageSets/Main/")


# 6.split files for txt
txtsavepath = saved_path + "ImageSets/Main/"
ftrainval = open(txtsavepath + '/trainval.txt', 'w')
ftest = open(txtsavepath + '/test.txt', 'w')
ftrain = open(txtsavepath + '/train.txt', 'w')
fval = open(txtsavepath + '/val.txt', 'w')
total_files = glob("C:/Users/nyy/Desktop/traffic_datasets/Annotations/*.xml")
total_files = [i.split("/")[-1].split(".xml")[0] for i in total_files]
print(total_files);
test_filepath = ""
for file in total_files:
    ftrainval.write(file + "\n")
# test
# for file in os.listdir(test_filepath):
#    ftest.write(file.split(".jpg")[0] + "\n")
# split
train_files, val_files = train_test_split(total_files, test_size=0.15, random_state=42)
# train
for file in train_files:
    ftrain.write(file + "\n")
# val
for file in val_files:
    fval.write(file + "\n")

ftrainval.close()
ftrain.close()
fval.close()
#ftest.close()

之後採用darknet自帶的voc_label.py腳本轉換爲darknet需要的txt格式

需按照數據格式修改兩個部分

sets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
classes = ["straight", "left","right", "stop ", "nohonk", "crosswalk"]

b)、訓練數據

darknet.exe detector train data/vocTR.data yolov4_TR.cfg yolov4.conv.137 -map

vocTR.data :classes= 80
train  = data/voc/2007_train.txt
valid  = data/voc/2007_val.txt
#difficult = data/difficult_2007_test.txt
names = data/vocTR.names
backup = backupTR/

yolov4-TR.cfg:按照顯存大小進行合理修改

batch=24

subdivisions=16

width=608

height=608

channels=3

momentum=0.949

decay=0.0005

angle=0

saturation = 1.5

exposure = 1.5

hue=.1

 

learning_rate=0.0001

burn_in=200

max_batches = 6000

policy=steps

steps=4800,5400

scales=.1,.1

filters=33

classes=6

按照官網要求把filters=255改爲filters=(6 + 5)x3

change [filters=255] to filters=(classes + 5)x3;

在cmd進入

輸入命令行:darknet.exe detector train data/vocTR.data yolov4_TR.cfg yolov4.conv.137 -map,

 

經過10h的訓練

c)、測試

sign_1245.jpg

sign_1155.jpg

sign_1415.jpg

本訓練的數據集只有直行、左轉、右轉、禁行、禁鳴、人行橫道,("straight", "left","right", "stop ", "nohonk", "crosswalk")這六類;要識別其他的需要相應類型的數據集。

訓練模型下載地址:

yolov4_TR.cfg:https://download.csdn.net/download/niuyuanye/12386318

vocTR.data:https://download.csdn.net/download/niuyuanye/12386326

classes= 6
train  = data/voc/2007_train.txt
valid  = data/voc/2007_val.txt
difficult = data/voc/2007_test.txt
names = data/vocTR.names

darknet.exe detector test data/vocTR.data yolov4-TR.cfg backupTR/yolov4-TR_best.weights -i 0 -thresh 0.25 sign_1245.jpg -ext_output

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