DeepLearning: 数据预处理1:文件(夹)更名与label的获取(matlab代码)

统计、更名

clear;close all ;clc

% dir_path 指定到训练数据集和测试数据集的父目录
dir_path = '/home/li/lilai/myMatlabcode/code1/data';
% 获取dir_path下的文件(夹)
dir_list = dir(dir_path);
dir_list_num = length(dir_list);

%%%%%%%%%%%%%%%%%%%%%%%%%%
% part1:获取对应关系
% 创建新旧文件夹对应关系的txt文件


fid = fopen('old_new.txt','wt');
fprintf(fid,'%s','原文件    新文件    样本数目');
fprintf(fid,'\n\n');

%第一层循环:遍历训练和测试
for i = 3:dir_list_num

    if(i<4)
        disp "开始处理测试数据集。。。"
        fprintf(fid,'%s%s%s',dir_list(i).name',':','test');
        fprintf(fid,'\n');
    else
        disp "开始处理训练数据集。。。"
        fprintf(fid,'\n\n');
        fprintf(fid,'%s%s%s',dir_list(i).name',':','train');
        fprintf(fid,'\n');
    end

    dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
    dir_sub1_list_num = length(dir_sub1_list);

    count_num = 0;
    for j= 3:dir_sub1_list_num
        dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
        dir_sub2_list_num = length(dir_sub2_list)-2;
        count_num = count_num+dir_sub2_list_num;
        fprintf(fid,'%s%s%s%s%d',dir_sub1_list(j).name,':',num2str(j-3,'%02d'),'    ',dir_sub2_list_num);
        fprintf(fid,'\n');
    end
    fprintf(fid,'%s%d','总计样本数目为:',count_num);

end

fclose(fid);


%%%%%%%%%%%%%%%%%%%%%%%%%%
% part2:
=


for i = 3:dir_list_num
    if(i<4)
        disp "开始处理测试数据集名称。。。"
        name_new = [dir_path,'/','test'];
    else
        disp "开始处理训练数据集名称。。。"
        name_new = [dir_path,'/','train'];
    end

    %原文件夹路径+名称
    name_old = [dir_path,'/',dir_list(i).name];
    %更改名称
    movefile(name_old,name_new);

end

%%%%%%%%%%%%%%%%%%%%%%%%%%
% part3:


% 重新获取dir_path下的文件(夹)
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
%第一层循环:遍历训练和测试
for i = 3:dir_list_num
    if(i<4)
        disp "开始处理测试数据集子目录名称。。。"
    else
        disp "开始处理训练数据集子目录名称。。。"
    end
    dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
    dir_sub1_list_num = length(dir_sub1_list);

    %第二层循环:遍历训练和测试下的子目录

    for j = 3:dir_sub1_list_num

        %原文件夹路径+名称
        name_old = [dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name];

        %新文件夹路径+名称
        name_new = [dir_path,'/',dir_list(i).name,'/',num2str(j-3,'%02d')];

        %更改名称
        movefile(name_old,name_new);

    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%
% part4:


% 重新获取dir_path下的文件(夹)
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
%第一层循环:遍历训练和测试
for i = 3:dir_list_num

    if(i<4)
        disp "开始处理测试数据集图片。。。"
    else
        disp "开始处理训练数据集图片。。。"
    end
    dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
    dir_sub1_list_num = length(dir_sub1_list);

    %第二层循环:遍历训练和测试下的子目录

    for j = 3:dir_sub1_list_num
        dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
        dir_sub2_list_num = length(dir_sub2_list);
        %第三层循环:遍历图片
        for k = 3:dir_sub2_list_num
            name_old = [dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/',dir_sub2_list(k).name];

            name_new = [dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/','idx__',num2str(k-3,'%03d')];

            movefile(name_old,name_new);

        end
    end
end

获取路径列表和对应label

clear; close all ;clc;
dir_path = '/home/li/lilai/myMatlabcode/code1/data';
dir_list = dir(dir_path);
dir_list_num = length(dir_list);
for i = 3:dir_list_num
    if strcmp(dir_list(i).name,'test')
        fid1 = fopen('val.txt','w');
        dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
        dir_sub1_list_num = length(dir_sub1_list);
        for j = 3:dir_sub1_list_num
            dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
            dir_sub2_list_num = length(dir_sub2_list);
            for k = 3:dir_sub2_list_num
                fprintf(fid1,'%s%s%d',[dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/',dir_sub2_list(k).name],' ',str2num(dir_sub1_list(j).name));
                fprintf(fid1,'\n');
            end
        end
        fclose(fid1);
    end

    if strcmp(dir_list(i).name,'train')
        fid2 = fopen('train.txt','w');
        dir_sub1_list = dir([dir_path,'/',dir_list(i).name]);
        dir_sub1_list_num = length(dir_sub1_list);
        for j = 3:dir_sub1_list_num
            dir_sub2_list = dir([dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name]);
            dir_sub2_list_num = length(dir_sub2_list);
            for k = 3:dir_sub2_list_num
                fprintf(fid2,'%s%s%d',[dir_path,'/',dir_list(i).name,'/',dir_sub1_list(j).name,'/',dir_sub2_list(k).name],' ',str2num(dir_sub1_list(j).name));
                fprintf(fid2,'\n');
            end
        end
        fclose(fid2);
    end

end

你可能感兴趣的:(深度学习)