本文叙述使用Matlab做VOC里的txt文件
数目比例:
trainval 约整个数据集的50%
test 约整个数据集的50%
train 约trainval的50%
val 约trainval的50%
代码:
clear;clc;
file = dir('/home/COCO/VOC/dataset/train_labels'); %数据集地址
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 = '/home/coco/Matlab/'; % 四个txt文件存放的地址
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);
The end!