Linux Caffe train.txt,基于caffe的图像分类(1)——制作train.txt和val.txt文件

做的标签文件如下:(无打乱)

image/Audi/000001.jpg 0

image/Audi/000002.jpg 0

image/Audi/000003.jpg 0

image/Audi/000004.jpg 0

image文件夹下是各类别文件夹,如下:

20b81a4ecc55b294c6171959e1054504.gif

Audi等文件夹内放的是该类别的图片,最好先对这些图片重命名为统一格式,如000001.jpg,000002.jpg这种格式,重命名代码

下面的代码只做了训练集和验证集,没有做测试集,可以自己修改代码做测试集。

clc;

clear;

%%下面生成顺序的trainval.txt和labels文件

%先设置train占数据集的百分比,余下部分为val

maindir='image\';

wf = fopen('trainval.txt','w');

lbf=fopen('labels.txt','w');

train_percent=0.9;%val_percent=1-train_percent

subdir = dir(maindir);

ii=-1;

numoffile=0;

for i = 1:length(subdir)%第一层目录

if ~strcmp(subdir(i).name ,'.') && ~strcmp(subdir(i).name,'..')

ii=ii+1;

label = subdir(i).name;

fprintf(lbf,'%s\n',label);

label=strcat(label,'/');

subsubdir = dir(strcat(maindir,label));

for j=1:length(subsubdir)

if ~strcmp(subsubdir(j).name ,'.') && ~strcmp(subsubdir(j).name,'..')

fprintf(wf,'%s%s%s %d\n','image/',label,subsubdir(j).name,ii);

numoffile=numoffile+1;

fprintf('处理标签为%d的第%d张图片\n',ii,j-2);

end

end

end

end

fclose(wf);

fclose(lbf);

%%

%下面将trainval的顺序打乱

file=cell(1,numoffile);

fin=fopen('trainval.txt','r');

i=1;

while ~feof(fin)

tline=fgetl(fin);

file{i}=tline;

i=i+1;

end

fclose(fin);

fprintf('\ntrainval.txt共%d行,开始打乱顺序....\n',numoffile);

pause(1);

rep=randperm(numoffile);

fout=fopen('trainval.txt','w');

for i=1:numoffile

fprintf(fout,'%s\n',file{rep(i)});

end

fprintf('生成的trainval.txt已打乱顺序.\n');

fclose(fout);

%%

%下面根据打乱顺序的trainval.txt生成train.txt和val.txt

fprintf('开始生成train.txt和val.txt...\n');

pause(1);

train_file=fopen('train.txt','w');

text_file=fopen('val.txt','w');

trainvalfile=fopen('trainval.txt','r');

num_train=sort(randperm(numoffile,floor(numoffile*train_percent)));

num_test=setdiff(1:numoffile,num_train);

i=1;

while ~feof(trainvalfile)

tline=fgetl(trainvalfile);

if ismember(i,num_train)

fprintf(train_file,'%s\n',tline);

else

fprintf(text_file,'%s\n',tline);

end

i=i+1;

end

fclose(train_file);

fclose(text_file);

fclose(trainvalfile);

fprintf('共有图片%d张!\n',numoffile);

fprintf('Done!\n');

代码将操作分成几个步骤做,如果不希望打乱顺序,可以将打乱顺序部分代码注释掉。

最后,得到四个txt文件:

20b81a4ecc55b294c6171959e1054504.gif

根据train.txt和val.txt生成训练集和验证集的lmdb文件,具体过程请看:基于caffe的图像分类(2)——制作lmdb和计算均值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值