用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数据集,可以进行训练了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值