您的位置:首页 > 大数据 > 人工智能

VOC数据集制作2——ImageSets\Main里的四个txt文件

2016-11-19 20:12 3187 查看
一、数据集文件数据分析

ImageSets里Main文件夹,用到4个文件: 

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

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

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

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

分析VOC2007数据集发现:

train.txt           中有2501个数据

val.txt              中有2510个数据

trainval.txt      中有5011个数据

test.txt            中有4952个数据

        

JPEGImages共有9963 个图片

所以,得到以下结论:

trainval大概是整个数据集的50%,

test  也大概是整个数据集的50%;

train   大概是trainval的50%,

val      大概是trainval的50%

二、生成四个txt文件代码:

matlab代码:

clear;clc;

file = dir('Annotations');
len = length(file)-2;

num_trainval=sort(randperm(len, floor(1*len/2)));%trainval集占所有数据的1/2,可以根据需要设置
num_train=sort(num_trainval(randperm(length(num_trainval), floor(1*length(num_trainval)/2))));%train集占trainval集的1/2,可以根据需要设置
num_val=setdiff(num_trainval,num_train);%trainval集剩下的作为val集

num_test=setdiff(1:len,num_trainval);%所有数据中剩下的作为test集

path = 'ImageSets\Main\';

fid=fopen(strcat(path, 'trainval.txt'),'a+');
for i=1:length(num_trainval)
s = sprintf('%s',file(num_trainval(i)+2).name);
fprintf(fid,[s(1:length(s)-4) '\n']);
end
fclose(fid);

fid=fopen(strcat(path, 'train.txt'),'a+');
for i=1:length(num_train)
s = sprintf('%s',file(num_train(i)+2).name);
fprintf(fid,[s(1:length(s)-4) '\n']);
end
fclose(fid);

fid=fopen(strcat(path, 'val.txt'),'a+');
for i=1:length(num_val)
s = sprintf('%s',file(num_val(i)+2).name);
fprintf(fid,[s(1:length(s)-4) '\n']);
end
fclose(fid);

fid=fopen(strcat(path, 'test.txt'),'a+');
for i=1:length(num_test)
s = sprintf('%s',file(num_test(i)+2).name);
fprintf(fid,[s(1:length(s)-4) '\n']);
end
fclose(fid);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: