VOC数据集里面的txt文件的做法

本文叙述使用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!

你可能感兴趣的:(Matlab)