用labelImg制作VOC2007数据集进行faster-rcnn的训练
下载
labelImg可以制作COCO和VOC数据集,不过我只用他来制作了VOC数据集
我是linux上进行标注的,labelImg的下载地址这里
安装
安装的步骤README写的很清楚了
我是python2+pyqt4
sudo apt-get install pyqt4-dev-tools
sudo pip install lxml
make qt4py2
#运行labelImg
python labelImg.py
#或者运行这个,这个是运行的时候不用去改图片地址的,不过我通常是运行上面一行,莫得办法,懒得打字
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
labelImg快捷键和快速标记的一些小技巧
保存:Ctrl + s
上一张:a
下一张:d
画框:w
选择要标注的图片路径:Ctrl + u
选择xml的保存路径:Ctrl + r
自动保存:view->自动保存模式,这个是下一张的时候自动保存xml
预设标签:自动选择框的类别
制作自己的VOC数据集
创建下面这样的目录
- VOC2007
- Annotations #存放xml
- ImageSets
- Main #存放 train.txt test.txt val.txt trainval.txt
- JPEGImages #存放图像
文件重命名
#coding=utf-8
import os
path = "/path/to/VOC2007/JPEGImages/"
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)
i=0
for file in filelist: #遍历所有文件
Olddir=os.path.join(path,file) #原来的文件路径
if os.path.isdir(Olddir): #如果是文件夹则跳过
continue
filename=os.path.splitext(file)[0] #文件名
filetype=os.path.splitext(file)[1] #文件扩展名
Newdir="/path/to/VOC2007/JPEGImages/"+ format(str(i), '0>6s') + filetype #以0补全所需位数
os.rename(Olddir,Newdir)#重命名
i=i+1
制作Main里的txt文档
#coding=utf-8
import os
import random
#可以更改这些参数
trainval_percent = 0.66
train_percent = 0.5
xmlfilepath = 'Annotations'
txtsavepath = '/path/to/ImageSets/Main'
total_xml = os.listdir(xmlfilepath)
num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
ftrainval = open('/path/to/VOC2007/ImageSets/Main/trainval.txt', 'w')
ftest = open('/path/to/VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('/path/to/VOC2007/ImageSets/Main/train.txt', 'w')
fval = open('/path/to/VOC2007/ImageSets/Main/val.txt', 'w')
for i in list:
name=total_xml[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
结束
然后你就得到了自己的VOC2007数据集,可以进行训练了