自制VOC2007数据集——train、trainval、val、test文件的生成

文件用途

VOC2007/ImageSets/Main文件夹里面存放 test.txt train.txt trainval.txt val.txt四个文件。

train.txt 是用来训练的图片文件的文件名列表 (训练集)

val.txt是用来验证的图片文件的文件名列表 (验证集)

trianval.txt是用来训练和验证的图片文件的文件名列表

test.txt 是用来测试的图片文件的文件名列表 (测试集)

train是网络模型在训练的时候用的,而val是网络模型在训练过程中测试用的。val是不影响训练的。在训练的时候可以得到train和val这两个数据集的误差率,利用这个误差率可以绘制出学习曲线,通过观察学习曲线,可以发现一些网络模型的问题,然后再根据这些问题去调整网络参数。test就是网络模型训练完毕测试用的。

生成文件

对于自制VOC2007数据集中所有的图片以及xml文件,需要划分比例,划分为训练集train、测试集test、以及验证集val,按照一定比例划分,我采用的比例为train:val:test=6:2:2 (我看网上有好几种比例,比如说还有8:1:1和2:1:1,小白我不知道哪种比较常用,也不知道这些比例的选择有什么依据,如果有大佬愿意教一下我的话欢迎留言)

生成上面四个文件的代码如下:

import os
import random

trainval_percent = 0.8
train_percent = 0.75
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('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()

 

  • 19
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值