您的位置:首页 > 其它

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

2017-01-29 15:15 1116 查看
之前配置好了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 

根据自己的要求做了修改,确定好路径后直接在原来的路径上对所有图片重命名,效果如下:



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);

效果跟要求的一样,如下:



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

3 将txt转成xml
   直接用的博客里面的程序,地址http://download.csdn.net/download/sinat_30071459/9531172,修改路径后即可,会弹出你做的标记的框框。。。会一直闪到结束,效果如下:



生成后的文件效果如下:



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~制作完毕~辛苦了辛苦了~吃饭,晚上接着干~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: