使用labelImg图像标注工具制作VOC数据集

https://github.com/tzutalin/labelImg

1.Linux下安装

brew install qt qt4

brew install libxml2
make qt4py2
pythobelImg.py

2.windows下安装

安装安装Anaconda2-4.4.0-Windows-x86_64.exe             添加环境变量

解压labellmage,不能有中文路径,从cmd进入该路径。

[plain]  view plain  copy
  1. conda install pyqt=4  
  2. pyrcc4 -py3 -o resources.py resources.qrc  
  3. python labelImg.py 打开标记程序  

3.标注图像

(1)打开需要标记的图片文件夹

(2)修改保存路径(XML文件夹)

(3)标注ROI区域,填写标签

(4)保存XML文件,有弹框提醒

(5)点击下一张图进行标记

快捷键

Ctrl +u : 打开图片文件夹 
Ctrl +r : 更改结果保存位置 
w:开始画框 
Ctrl +s : 保存 
d: 下一张 
a: 上一张 
del: 删除画的框 
Ctrl++: 图片放大 
Ctrl–: 图片缩小 
↑→↓←: 对框进行移动 
Ctrl+d: 复制当前框的标签和框


4.生成VOC数据集需要的txt

Annotations存放XML文件,

JPEGImages下存放训练图片,

新建一个matlab文件 GetVoc_txt.m用于生成txt文件到ImageSets文件夹下。

[plain]  view plain  copy
  1. clear all;
  2. clc all;
  3. file = dir('Annotations');  
  4. len = length(file)-2;  
  5. %trainval集占所有数据的1/2,可以根据需要设置
  6. num_trainval=sort(randperm(len, floor(1*len/2)));
  7. %train集占trainval集的1/2,可以根据需要设置    
  8. num_train=sort(num_trainval(randperm(length(num_trainval), floor(1*length(num_trainval)/2))));
  9. %trainval集剩下的作为val集
  10. num_val=setdiff(num_trainval,num_train);  
  11.  %所有数据中剩下的作为test集
  12. num_test=setdiff(1:len,num_trainval);  
  13.   
  14. path = 'ImageSets/Main/';  
  15.   
  16. fid=fopen(strcat(path, 'trainval.txt'),'a+');  
  17. for i=1:length(num_trainval)  
  18.     s = sprintf('%s',file(num_trainval(i)+2).name);  
  19.     fprintf(fid,[s(1:length(s)-4) '\n']);  
  20. end  
  21. fclose(fid);  
  22.   
  23. fid=fopen(strcat(path, 'train.txt'),'a+');  
  24. for i=1:length(num_train)  
  25.     s = sprintf('%s',file(num_train(i)+2).name);  
  26.     fprintf(fid,[s(1:length(s)-4) '\n']);  
  27. end  
  28. fclose(fid);  
  29.   
  30. fid=fopen(strcat(path, 'val.txt'),'a+');  
  31. for i=1:length(num_val)  
  32.     s = sprintf('%s',file(num_val(i)+2).name);  
  33.     fprintf(fid,[s(1:length(s)-4) '\n']);  
  34. end  
  35. fclose(fid);  
  36.   
  37. fid=fopen(strcat(path, 'test.txt'),'a+');  
  38. for i=1:length(num_test)  
  39.     s = sprintf('%s',file(num_test(i)+2).name);  
  40.     fprintf(fid,[s(1:length(s)-4) '\n']);  
  41. end  
  42. fclose(fid);  

你可能感兴趣的:(使用labelImg图像标注工具制作VOC数据集)