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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微风❤水墨

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值