darknet调参

2019-01-16  本文已影响17人  yanghedada

使用darknet调参

https://github.com/pjreddie/darknet

1. 数据制作

首先把数据制作成voc格式

这里的lables将会在后面得到

划分好训练集和测试集
split_all_data.py

import json
from collections import defaultdict
import os
import random

trainval_percent = 0.0
train_percent = 1.0
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + '\n'
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftest.write(name)
        else:
            fval.write(name)
    else:
        ftrain.write(name)

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

2 .使用 voc_label.py把xml格式数据转换成txt格式

2. 获取anchors

根据训练文件使用k-means得到anchors

gen_anchors.py

得到合适的anchors

3.修改文件

2.创建一个my.names文件

head 

3.修改voc.data

classes= 1
train  = /home/yanghe/Desktop/YangHE/darknet/2007_train.txt
valid  = /home/yanghe/Desktop/YangHE/darknet/2007_test.txt
names = data/my.names
backup = /home/yanghe/Desktop/YangHE/darknet/results
  1. 修改.cfg文件
    yolov3-voc.cfg
  2. 这个文件种有三处[yolo]
    把每一处的yolo下的改为classes=1
  3. 同时把上一层的[convolutional]下
    filters=18 #filters的数量改成(classes+5+1)3。上图是(1+4+1)3=18
image.png

里面3个yolo层上面的conv层的filters都要修改,修改公式为3 * (classes + 5)。例如我的就是18
所有的的yolo层class改为1

3.训练

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1

4 测试:

测试单张图片:

./darknet detector test cfg/voc.data cfg/yolo-voc.cfg final_voc.weights your_img_path.jpg 

运行上述代码后,会在data文件夹下找到预测后的图片。

测试已有视屏:

./darknet detector demo cfg/voc.data cfg/yolo-voc.cfg final_voc.weights your_video_path.mp4 

测试时会直接弹出一个窗口播放视屏,可以看是实时检测视屏的效果。

测试摄像头实时检测场景:

./darknet detector demo cfg/voc.data cfg/yolo-voc.cfg final_voc.weights 

和测试已有视屏类似,运行该命令后,会调用摄像头,弹出一个窗口显示摄像头拍摄实时场景,并做实时检测。

预测测试集:

./darknet detector valid cfg/voc.data cfg/yolo-voc.cfg final_voc.weights

统计测试集合测试效果:

./darknet detector recall cfg/voc.data cfg/yolo-voc.cfg final_voc.weights

参考博客:
Yolov3训练数据
深度解析
Yolov3训练数据

上一篇下一篇

猜你喜欢

热点阅读