fasterRCNN数据集制作(目标检测)(个人笔记)

参考链接:

【数据集制作】VOC2007格式数据集制作和处理教程(Faster-RCNN模型标准输入)_voc2007数据导入-CSDN博客

前提:你需要有数据集图片,与标注好的xml格式的标签

在fasterRCNN源码文件夹中

建立data文件夹,在data中,建立VOC2007文件夹,在VOC2007文件夹中

建立Annotations,ImageSets,JPEGImages三个文件夹,如下

一、Annotations文件夹里面全是xml文件,也就是图片的标签文件

标签的名称需要改成000000,000001这样按顺序的六位数字,代码如下:

import os
import shutil

path = "data/VOCdevkit2007/VOC2007/Annotations"  # XMLFiles文件夹所在路径
filelist = os.listdir(path)  # 该文件夹下所有的文件(包括文件夹)

count = 0
for file in filelist:
    if file.endswith(".xml"):  # 如果是XML文件
        Olddir = os.path.join(path, file)  # 原来的文件路径
        filename = os.path.splitext(file)[0]  # 文件名
        filetype = '.xml'  # 文件扩展名
        Newdir = os.path.join(path, str(count).zfill(6) + filetype)  # 用字符串函数zfill以0补全所需位数
        shutil.move(Olddir, Newdir)  # 重命名
        count += 1
二、JPEGImages文件夹里全是数据集图片,不分训练集数据集,全在里面

图片名称也需要按顺序改成000000,000001,与xml文件对应,代码如下:

"""文件重命名为000000、000001、000002...nnnnn"""
import os
path = "data/VOCdevkit2007/VOC2007/JPEGImages"#JPEGImages文件夹所在路径
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)
count=0
for file in filelist:
    print(file)
for file in filelist:   #遍历所有文件
    Olddir=os.path.join(path,file)   #原来的文件路径
    if os.path.isdir(Olddir):   #如果是文件夹则跳过
        continue
    filename=os.path.splitext(file)[0]   #文件名
    filetype='.jpg'   #文件扩展名
    Newdir=os.path.join(path,str(count).zfill(6)+filetype)  #用字符串函数zfill 以0补全所需位数
    os.rename(Olddir,Newdir)#重命名
    count+=1
三、ImageSets文件夹里面建立一个main文件夹,main文件夹中建立4个txt文档,分别是

每一个文档中,对应写着训练集或者测试集的序号,那我们用代码将其按比例分出来并写进文档

import os
import random

trainval_percent = 0.9#验证集和训练集占的百分比
train_percent = 0.7#训练集占的百分比
xmlfilepath = 'data/VOCdevkit2007/VOC2007/Annotations'#Annotation文件夹所在位置
txtsavepath = 'data/VOCdevkit2007/VOC2007/ImageSets/Main'#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)
#Main文件夹下所对应的四个txt文件夹路径
ftrainval = open('data/VOCdevkit2007/VOC2007/ImageSets/Main/trainval.txt', 'w')
ftest = open('data/VOCdevkit2007/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('data/VOCdevkit2007/VOC2007/ImageSets/Main/train.txt', 'w')
fval = open('data/VOCdevkit2007/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()

这样txt文档里的内容是这样的

到此fasterRCNN的数据集就制作完成了

猜你喜欢

转载自blog.csdn.net/cyh20182808/article/details/135378521