最近做图像分类,数据集的整理真的好费时间,找到一个代码,非常好使,推荐给大家。
实现的功能是,将一个文件夹下的每个子文件夹的一半数据分割出来并保存,生成相应的train.txt,test.txt。
对代码做了轻微的修改
原网址:https://www.cnblogs.com/yymn/articles/4615372.html
自己弄数据集,真是非一般的体验呀。虽然说这样算是正在意义上经历一个完整的项目,被迫学习了很多数据处理的问题。但是搞数据真是太蛋疼了。
想了很多方法,但最后发现其实自己整理的数据,最合理的分配训练集和测试集的方法。就是先把数据全部整到一起,然后按一定比例从中随机选出训练集和测试集(这两个肯定是不能重复的),比如这里的25%作为测试集,75%作为训练集。
编写这个程序一开始,主要是有些函数不知道怎么用。编这程序是发现了即使是matlab编写程序都要用disp输出一些信息,这样更方便查看程序运行进度。其余就是新学习了一些函数,再把之前编写的程序合起来。
clear;close all;clc;
%%
%程序实现的功能
%1、把指定路径的数据(已按类别放置在不同的文件夹中),随机的把其中的75%的划分为训练集,25%划分为测试集
%2、训练集按类别放在指定路径的train文件夹中,测试集按类别放在指定路径的val文件夹中
%3、在train和val文件夹的同级文件夹按照caffe需求生成对应的train.txt和val.txt的label
%%
%程序中用到的之前不清楚的函数如下
%1)disp:用来在界面上显示一些必要的信息,方便查看程序进度。disp(' ')可以起到在界面上换行显示的作用
%2)str2double:带起之前一直使用的str2num,matlab的提示是这样函数效率更高。而且这两个函数输出的数据类型都是double类型。
%3)randperm(n):生成一个1到n直接的随机数列
%4)copyfile(a,b):把文件a复制到路径b,路径b带有最后的\符号
%
%
%
%%
disp('程序开始执行');
%%%%%%需要更改的参数(即两个路径)%%%%%%%%%%%%%%%%%%%%%%%%%%
pathSource='G:\遥感数据库\1\AID';%AID文件夹下有30个文件夹
pathDestination='G:\遥感数据库\deal';%保存分割后数据集以及tr