目标检测与位姿估计(四):VOC格式自有数据集制作

准备VOC格式的数据集

首先要准备数据集,参考https://blog.csdn.net/sinat_36391198/article/details/102761170的文件组织形式

1 目录组织

handvoc是你自己数据集的名字,在该目录下有第三个文件夹如下所示。

目标检测与位姿估计(四):VOC格式自有数据集制作_第1张图片

注意其中ImgeSets下还有一个Main文件夹

文件夹说明:

JPEGImages中存放要训练的图片。

Annotations中这XML信息,XML文件名与训练图片的文件名一一对应。

ImageSets中存放文件夹Main,Main中存放四个txt文件,train存放着用于训练图片名字集合,test存放着用于测试的名字集合。这四个空白文件需要提前建立好

目标检测与位姿估计(四):VOC格式自有数据集制作_第2张图片

2 准备素材图片

将选取的图片放置于放于目录:JPEGImages下

目标检测与位姿估计(四):VOC格式自有数据集制作_第3张图片

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文件如下

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 然后依照目标检测与位姿估计(一)中操作修改基本参数。完成训练需要以下几个文件

 

你可能感兴趣的:(目标检测与位姿估计)