制作自己的数据集,并使用Faster Rcnn训练模型

一、修改图片名称

使用下面的程序可以快速修改文件夹中的图片名称

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对图片进行标注

VOC框图工具安装与使用【在Ubuntu系统中】【转载】

三、制作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);

四、训练模型,请参考博客

Faster-RCNN+ZF用自己的数据集训练模型(Python版本) 【转载】

阅读更多

没有更多推荐了,返回首页