path = 'G:\Faster_CNN\cars\';%所有图片存放的路径
D = dir([path '*.bmp']);%将该路径下的所有文件读取成一个结构体
for i = 1:length(D)%遍历每一张图片
image_name = D(i).name;%每一张图片的名字
I = imread(strcat(path,image_name));%读取每一张图片
nz = strcat('%0',num2str(6),'d');%给该图片重命名名字的位数
temp_id = sprintf(nz,i);%按序数给所有图片命名,前面补0
name2 = strcat(temp_id,'.jpg');
imwrite(I,name2);%以新名字保存图片
end
ps:该程序时matlab程序,尽可能使用2014+的版本运行程序,在Linux系统中,可以参靠该教程 安装matlab
二、利用lablabelImg对图片进行标注
三、制作ImageSets/Main/的.txt文件
matlab的程序为:
%%
%该代码根据已生成的xml,制作VOC2007数据集中的trainval.txt;train.txt;test.txt和val.txt
%trainval占总数据集的50%,test占总数据集的50%;train占trainval的50%,val占trainval的50%;
%上面所占百分比可根据自己的数据集修改,如果数据集比较少,test和val可少一些
%%
%注意修改下面四个值
xmlfilepath='E:\Annotations';
txtsavepath='E:\ImageSets\Main\';
trainval_percent=0.5;%trainval占整个数据集的百分比,剩下部分就是test所占百分比
train_percent=0.5;%train占trainval的百分比,剩下部分就是val所占百分比
%%
xmlfile=dir(xmlfilepath);
numOfxml=length(xmlfile)-2;%减去.和.. 总的数据集大小
trainval=sort(randperm(numOfxml,floor(numOfxml*trainval_percent)));
test=sort(setdiff(1:numOfxml,trainval));
trainvalsize=length(trainval);%trainval的大小
train=sort(trainval(randperm(trainvalsize,floor(trainvalsize*train_percent))));
val=sort(setdiff(trainval,train));
ftrainval=fopen([txtsavepath 'trainval.txt'],'wt');
ftest=fopen([txtsavepath 'test.txt'],'wt');
ftrain=fopen([txtsavepath 'train.txt'],'wt');
fval=fopen([txtsavepath 'val.txt'],'wt');
for i=1:numOfxml
if ismember(i,trainval)
fprintf(ftrainval,'%s\n',xmlfile(i+2).name(1:end-4));
if ismember(i,train)
fprintf(ftrain,'%s\n',xmlfile(i+2).name(1:end-4));
else
fprintf(fval,'%s\n',xmlfile(i+2).name(1:end-4));
end
else
fprintf(ftest,'%s\n',xmlfile(i+2).name(1:end-4));
end
end
fclose(ftrainval);
fclose(ftrain);
fclose(fval);
fclose(ftest);
四、训练模型,请参考博客