使用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
得到合适的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
- 修改.cfg文件
yolov3-voc.cfg - 这个文件种有三处[yolo]
把每一处的yolo下的改为classes=1 - 同时把上一层的[convolutional]下
filters=18 #filters的数量改成(classes+5+1)3。上图是(1+4+1)3=18
里面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训练数据
网友评论