之前配置好了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~制作完毕~辛苦了辛苦了~吃饭,晚上接着干~