101_ObjectCategories数据库生成列表&&添加类别号&&打乱顺序

来源:互联网 发布:电脑无法识别9008端口 编辑:程序博客网 时间:2024/06/05 00:14
  1. 准备好101_ObjectCategories数据库
    这里写图片描述
  2. 打开MATLAB,添加extract.m脚本,运行。extract.m代码如下
%trian testclc;ParentFolder='J:\Dataset\101_ObjectCategories\'; %matlab在本地数据库生成list所以路径是反斜杠ParentPath = dir(ParentFolder);NumFolders = length(ParentPath);list = fopen('list.txt','wt');test = fopen('test.txt','wt');for i = 3:NumFolders    label=num2str(i-3);    FolderPath = [ParentFolder ParentPath(i).name];    imageName=dir(FolderPath);    numPic=length(imageName);    count=1;    index = randperm(length(imageName)-2);    for k = 1:4        index = randperm(size(index,2));    end     for j=3:numPic        src=['/' ParentPath(i).name '/' imageName(index(count)+2).name]; %Ubuntu系统下读取list,路径是斜杠        if count<=15            fprintf(list,'%s %s\n',src,label);        else            fprintf(test,'%s %s\n',src,label);        end        count=count+1;     endendfclose(list);fclose(test);

3.对生成的list进行打乱,代码:

fidin_train=fopen('train.txt');fidout_train = fopen('train_rand.txt','wt');fidin_test = fopen('test.txt');fidout_test = fopen('test_rand.txt','wt');index =0;str_train = cell(1);while ~feof(fidin_train)                                             tline=fgetl(fidin_train);   index =index+1;   str_train{index} = tline;endrand_index = randperm(index);for i=1:index    fprintf(fidout_train, '%s\n',str_train{rand_index(i)});endindex = 0;str_test = cell(1);while ~feof(fidin_test)                                                    tline=fgetl(fidin_test);   index =index+1;   str_test{index} = tline;endrand_index = randperm(index);for i=1:index    fprintf(fidout_test, '%s\n',str_test{rand_index(i)});  end
0 0