1 目录组织
准备数据集时尽量按照VOC的文件夹命名形式(xx/VOCdevkit/VOC2007形式)以及组织形式(VOC2007下),在该目录下有第三个文件夹如下所示(Annotations/ ImageSets/JPEGImages)。
注意其中ImgeSets下还有一个Main文件夹
文件夹说明:
JPEGImages中存放要训练的图片。
Annotations中这XML信息,XML文件名与训练图片的文件名一一对应。
ImageSets中存放文件夹Main,Main中存放四个txt文件,train存放着用于训练图片名字集合,test存放着用于测试的名字集合。这四个空白文件需要提前建立好
2 准备素材图片
将选取的图片放置于放于目录:JPEGImages下
3 对图片进行标注:XML文件的生成
labelImg工具快捷键:
Ctrl + s | 保存 |
+------------+--------------------------------------------+
| Ctrl + d | Copy the current label and rect box |
+------------+--------------------------------------------+
| Space | 标记当前图片已标记 |
+------------+--------------------------------------------+
| w | 创建一个矩形 |
+------------+--------------------------------------------+
| d | 下一张图片 |
+------------+--------------------------------------------+
| a | 上一张图片 |
一定要注意不要点击空格,这样会修改图片的格式,造成原图像无法使用
4 train test val trainval的划分
fenge.py文件如下,用来生成Main文件夹下的四个文件
import os
import random
trainval_percent = 0.8
train_percent = 0.6
xmlfilepath ='VOC2007/Annatations'
txtsavepath = 'VOC2007/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('VOC2007/ImageSets/main/trainval.txt', 'w')
ftest = open('VOC2007/ImageSets/main/test.txt', 'w')
ftrain = open('VOC2007/ImageSets/main/train.txt', 'w')
fval = open('VOC2007/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:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
5 依照目标检测与位姿估计(一)中操作修改基本参数。
完成训练需要以下几个文件