前言
1.我的环境是windows10,vs2015,cuda9.1,cudnn7.1。
2. darknet加yoloV3,用cmake和vs2015编译成darknet.exe。
3. 我的目录结构是在darknet目录下新建了一个build的目录,这个目录就是vs生成工程的目录,在windows下,所有的操作都在这个目录里面完成。
一、数据准备
1.我使用的数据格式是VOC2007,关于这个数据集,可以看我之后博客。
2.标注工具用的是LabelImag的win版本。可以从这里下载,不用安装,直接运行,但存在的路径不能有中文。标注使用也可以看我之后的博客。
3.标注时按VOC形式标注,也可以选yolo的方式标注,如果一开始用yolo方法标注,之后就不用转换那么麻烦。这两种标注的标签,一种是xml,一种是txt。
VOC格式:
YOLO格式:
4.标注好的数据对应存在VOC2007目录Annotations里面,标注的图像放在JPEGImages里面。标注好的数据是一一对应的。
二.处理VOC2007数据
1.在darknet的工程目录下,darknet\build\darknet\x64\data\下,新建立一个VOCdevkit目录,把VOC2007的目录放到里面。
2.VOC2007当时下面只有三个目录。
Annotations里面就标签文件:
JPEGImages里面是对应的图像文件:
ImageSets下面有一个Main目录,但当前为空:
3.用python创建Main目录里面的train.txt,val.txt,test.txt和trainval.txt这四个文件。
(1)在VOC2007目录下创建一个python代码,我这里命名CreateMainDirTex.py
CreateMainDirTex.py的代码如下:
import os
import random
trainval_percent = 0.1
train_percent = 0.9
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(</