使用labelIImg制作自己的数据集(VOC2007格式)用于Faster-RCNN训练
2018-01-02 17:13
1036 查看
一、数据集文件夹
新建一个文件夹,用来存放整个数据集,或者和voc2007一样的名字:VOC2007然后像voc2007一样,在文件夹里面新建如下文件夹:
二、将训练图片放到JPEGImages
将所有的训练图片放到该文件夹里,然后将图片重命名为VOC2007的“000005.jpg”形式图片重命名的代码(c++,python,matlab),参考:http://blog.csdn.net/u011574296/article/details/72956446
三、标注图片,标注文件保存到Annotations
使用labelIImg 标注自己的图片
1、在git上下载源码:https://github.com/tzutalin/labelImg2、按照网页上的使用方法使用
(1)安装PyQt4和Lxml
(2)在labelImage 的目录下 shift+右键打开cmd 运行一下命令:
pyrcc4 -o resources.py resources.qrc
python labelImg.py
注:这个时候,就会出现labelimage的窗口
(3)labelimg窗口的使用方法:
• 修改默认的XML文件保存位置,可以用“Ctrl+R”,改为自定义位置,这里的路径不能包含中文,否则无法保存。
• 源码文件夹中使用notepad++打开data/predefined_classes.txt,可以修改默认类别,比如改成bus、car、building三个类别。
•“Open Dir”打开需要标注的样本图片文件夹,会自动打开第一张图片,开始进行标注
• 使用“Create RectBox”开始画框
• 完成一张图片后点击“Save”,此时XML文件已经保存到本地了。
• 点击“Next Image”转到下一张图片。
• 标注过程中可随时返回进行修改,后保存的文件会覆盖之前的。
• 完成标注后打开XML文件,发现确实和PASCAL VOC所用格式一样。
每个图片和标注得到的xml文件,JPEGImages文件夹里面的一个训练图片,对应Annotations里面的一个同名XML文件,一 一 对应,命名一致
标注自己的图片的时候,类别名称请用小写字母,比如汽车使用car,不要用Carpascal.py中读取.xml文件的类别标签的代码:
cls = self._class_to_ind[obj.find('name').text.lower().strip()]
写的只识别小写字母,如果你的标签含有大写字母,可能会出现KeyError的错误。
四、ImageSets\Main里的四个txt文件
在ImageSets里再新建文件夹,命名为Main,在Main文件夹中生成四个txt文件,即:test.txt是测试集
train.txt是训练集
val.txt是验证集
trainval.txt是训练和验证集
VOC2007中,trainval大概是整个数据集的50%,test也大概是整个数据集的50%;train大概是trainval的50%,val大概是trainval的50%。
txt文件中的内容为样本图片的名字(不带后缀),格式如下:
根据已生成的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'],'w'); ftest=fopen([txtsavepath 'test.txt'],'w'); ftrain=fopen([txtsavepath 'train.txt'],'w'); fval=fopen([txtsavepath 'val.txt'],'w'); 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);
相关文章推荐
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- windows下使用自己制作的数据集训练faster-rcnn(tensorflow版)用于目标检测
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 制作VOC2007格式数据集用于Faster-RCNN训练
- 制作VOC2007数据集用于Faster-RCNN训练
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
- 将数据集做成VOC2007格式用于Faster-RCNN训练
- 使用py-faster-rcnn训练自己的数据集
- 使用py-faster-rcnn训练自己的数据
- 使用自己的数据训练Faster-RCNN
- Faster RCNN 训练自己的数据集(Matlab,python版本)及制作VOC2007格式数据集
- Faster-RCNN 训练自己数据集的坑记录
- 在cuda8.0+faster-rcnn(python版)下使用kitti数据集进行训练