作者:木凌
时间:2016年11月。
博客连接:http://blog.csdn.net/u014540717
QQ交流群:554590241
在上一篇用YOLOv2模型训练VOC数据集中,我们尝试用YOLOv2来训练voc数据集,但我想训练自己的数据集,那么YOLOv2如何做fine-tuning呢?我们一步一步来做~
1 准备数据
1.1 建立层次结构
首先在darknet/data文件夹下创建一个文件夹fddb2016,文件层次如下
--fddb2016
--Annotations
2002_07_19_big_img_130.xml
2002_07_25_big_img_84.xml
2002_08_01_big_img_1445.xml
2002_08_08_big_img_277.xml
2002_08_16_big_img_637.xml
2002_08_25_big_img_199.xml
2003_01_01_big_img_698.xml
.
.
.
--ImageSets
--Main
test.txt
trainval.txt
--JPEGImages
2002_07_19_big_img_130.jpg
2002_07_25_big_img_84.jpg
2002_08_01_big_img_1445.jpg
2002_08_08_big_img_277.jpg
2002_08_16_big_img_637.jpg
2002_08_25_big_img_199.jpg
2003_01_01_big_img_698.jpg
.
.
.
--labels
trainval.txt中存放的是图片的名称,我们来看一下
2002_08_11_big_img_591
2002_08_26_big_img_265
2002_07_19_big_img_423
2002_08_24_big_img_490
2002_08_31_big_img_17676
2002_07_31_big_img_228
.
.
.
1.2 xml2txt
因为yolo读取的是txt文档,所以我们要将xml的benchmark修改为txt格式,程序如下所示:
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import cv2
#sets=[('fddb2016', 'train'), ('fddb2016', 'val')]
#classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", <