使用faster rcnn训练自己的数据-制作数据集

之前配置好了faster rcnn,生成了demo,激动死了,准备来试试自己的数据,今天先制作数据集~
1.首先制作需要的数据格式,在这里我是根据这篇博客http://blog.csdn.net/sinat_30071459/article/details/50723212来制作的,根据自己的要求做了少许的修改。对图像数据进行重命名的matlab程序如下:
clc; 
clear;  
maindir='E:\faster_rcnn-master\正样本\'; 
name_long=6; %图片名字的长度,如000123.jpg为6,最多9位,可修改 
num_begin=1; %图像命名开始的数字如000123.jpg开始的话就是123 
 
subdir = dir(maindir); 
n=1; 
 
for i = 1:length(subdir) 
  if ~strcmp(subdir(i).name ,'.') && ~strcmp(subdir(i).name,'..')
     subsubdir = strcat(maindir,subdir(i).name);  
            img=imread(subsubdir); 
            str=num2str(num_begin,'%09d'); 
            newname=strcat(str,'.jpg'); 
            newname=newname(end-(name_long+3):end); 
            system(['rename ' subsubdir ' ' newname]); 
            num_begin=num_begin+1;  
  end   
end 


根据自己的要求做了修改,确定好路径后直接在原来的路径上对所有图片重命名,效果如下:
使用faster rcnn训练自己的数据-制作数据集_第1张图片

2.画方框
   因为我的系统是win10的,所以博客里的工具都用不上,不过没关系,大家可以根据自己的要求写一个画方框的小程序,由于我的数据集都是单目标的,所以只设定了一个目标名称human~代码如下:
%%%%%%以下程序为画框
clc;
clear;
maindir='E:\faster_rcnn-master\正样本\'; 
savefile='E:\faster_rcnn-master\正样本\output.txt';
sub=dir(maindir);
 fp = fopen(savefile,'wt');
for i=1:length(sub)
    if ~strcmp(sub(i).name,'.') && ~strcmp(sub(i).name,'..')
        adress=strcat(maindir,sub(i).name);
        picture=imread(adress);
         imshow(picture);
          k = waitforbuttonpress;              % 等待鼠标按下
         point1 = get(gca,'CurrentPoint');    % 鼠标按下了
         finalRect = rbbox;                   %
         point2 = get(gca,'CurrentPoint');    % 鼠标松开了
         point1 = point1(1,1:2);              % 提取出两个点
         point2 = point2(1,1:2);
         %%%将两个点另存到文件里
         string=strcat(sub(i).name,' human  ');
         fprintf(fp, '%s%s%s%s%s%s%s', string,' ',num2str(point1(1)),' ',num2str(point1(2)),' ',num2str(point2(1)),' ',num2str(point2(2)));
         fprintf(fp,'\n');
    end
end
fclose(fp);

效果跟要求的一样,如下:
使用faster rcnn训练自己的数据-制作数据集_第2张图片
分别是:图片名称 目标名 左上角坐标  右下角坐标
直接复制进去代码,修改你的图片路径(注意是全路径,最后一个有个反斜杠,不然路径会不正确),然后弹出一个图片画一个框即可,松开鼠标自动进入下一张图片的绘制,还好我的数据量不是很大。。。500多张,真的画得想吐血了。。。

3 将txt转成xml
   直接用的博客里面的程序,地址http://download.csdn.net/download/sinat_30071459/9531172,修改路径后即可,会弹出你做的标记的框框。。。会一直闪到结束,效果如下:
使用faster rcnn训练自己的数据-制作数据集_第3张图片

生成后的文件效果如下:
使用faster rcnn训练自己的数据-制作数据集_第4张图片

4  新建一个文件夹,名字为Annotations,将xml文件全部放到该文件夹里。
5 新建一个文件夹,名字为JPEGImages,将所有的训练图片放到该文件夹里
6 新建文件夹,命名为ImageSets,在ImageSets里再新建文件夹,命名为Main。
然后生成4个txt文件,主要就是打乱顺序进行测试和训练,在这里使用博客中的代码,注意我的matlab版本是r2014a,使用博客中的代码生成的文件格式有问题,没有换行,在这里只需要改一个地方,把fopen(~,'w')中的参数‘w’改成'wt'就行了。运行程序之后会自动在Main下生成4个文件。

7 数据算制作好了,然后新建一个文件夹把这三个文件放进去,就是Annotations、ImageSets和JPEGImages。
  或者替换voc2007数据集中的Annotations、ImageSets和JPEGImages。后期方便训练。

OK~制作完毕~辛苦了辛苦了~吃饭,晚上接着干~

你可能感兴趣的:(caffe)