tensorflow+Faster-Rcnn 训练自己的数据集
你好! 这是你第一次写博客
好不容易写的,转载请加地址 谢谢哈
一、 数据集制作
1、 将图片尺寸统一改为与原始图像集差不多大小(500*333),将宽修改为500即可(图片过大会报错!!!);具体代码如下:
file_path = ‘F:\Faster-RCNN-TensorFlow-Python3.5-master\data\VOCdevkit2007\VOC2007\JPEGImages’;% 图像文件夹路径
img_path_list = dir(strcat(file_path,’*.jpg’));%获取该文件夹中所有jpg格式的图像
img_num = length(img_path_list);%获取图像总数量
for j =1:img_num%逐一读取图像
image_name = img_path_list(j).name;% 图像名
image = imread(strcat(file_path,image_name));
J = imresize(image,[500 333]);
imwrite(J,strcat(file_path,image_name));
end
2、 将修改后的图像集替换G:\Faster-RCNN-TensorFlow-Python3.5-master \data\VOCdevkit2007\VOC2007\JPEGImages文件里的图片,并删除Annotations里的xml文件;
3、 对图片进行批量重命名;(可以使用MATLAB或者任何方法,我用的是好压)
4、 修改运行labelImg对图像进行手动打标签;
1) 打开G:\labelImg-master\data目录下的predefined_classes,修改为自己的类别
注意:修改的类别必须是小写字母
2) 运行labelImg.py文件,对待训练图像打标签。
3) 打标签完成后,检查Annotations下xml文件是否对应。
4) matlab运行txt生成文件,生成训练集、测试集图片对应的图片名称
代码如下:
clear;clc;
file = dir(‘Annotations’);
len = length(file)-2;
num_trainval=sort(randperm(len, floor(1len/2)));%trainval集占所有数据的1/2,可以根据需要设置
num_train=sort(num_trainval(randperm(length(num_trainval), floor(1length(num_trainval)/2))));%train集占trainval集的1/2,可以根据需要设置
num_val=setdiff(num_trainval,num_train);%trainval集剩下的作为val集
num_test=setdiff(1:len,num_trainval);%所有数据中剩下的作为test集
path = ‘ImageSets\Main’;
fid=fopen(strcat(path, ‘trainval.txt’),‘a+’);
for i=1:length(num_trainval)
s = sprintf(’%s’,file(num_trainval(i)+2).name);
fprintf(fid,[s(1:length(s)-4) ‘\n’]);
end
fclose(fid);
fid=fopen(strcat(path, ‘train.txt’),‘a+’);
for i=1:length(num_train)
s = sprintf(’%s’,file(num_train(i)+2).name);
fprintf(fid,[s(1:length(s)-4) ‘\n’]);
end
fclose(fid);
fid=fopen(strcat(path, ‘val.txt’),‘a+’);
for i=1:length(num_val)
s = sprintf(’%s’,file(num_val(i)+2).name);
fprintf(fid,[s(1:length(s)-4) ‘\n’]);
end
fclose(fid);
fid=fopen(strcat(path, ‘test.txt’),‘a+’);
for i=1:length(num_test)
s = sprintf(’%s’,file(num_test(i)+2).name);
fprintf(fid,[s(1:length(s)-4) ‘\n’]);
end
原文:https://blog.csdn.net/liuweizj12/article/details/53233900 ,感谢这个博主提供的代码
5、 修改G:\Faster-RCNN-TensorFlow-Python3.5-master\lib\datasets文件夹下的pascal_voc.py中的类别,修改或添加训练类别。
6、 修改F:\Faster-RCNN-TensorFlow-Python3.5-master\lib\config文件夹下的config.py文件,修改参数
7、将 F:\Faster-RCNN-TensorFlow-Python3.5-master\data\cache里面文件删除
8、 运行train.py文件,产生检测模型。观察loss值变化情况。
9、F:\Faster-RCNN-TensorFlow-Python3.5-master\data\demo图片更换
10、修改demo.py中以下四处,第一处修改为自己的类别。第二处修改为自己训练生成的模型。第三处修改为待识别图像的编号。 第四处为识别的种类。
11.运行demo.py文件
运行成功则出现以下图片: