本教程主要针对在faster rcnn上训练自己的数据集,制作pascal VOC格式的数据集(当然如果嫌弃下面方法太麻烦的话,直接下载exe文件,打开就可以直接使用,简直不要太简便)

安装环境:win10 + Python 3.5.1

安装步骤:

1、labelImg源码下载地址:https://github.com/tzutalin/labelImg,解压到指定目录:

2、安装labelImg所需依赖:PyQt5、lxml,win+R并输入cmd进入命令行窗口,

  • PyQt5安装,命令行输入:pip install PyQt5 -i https://pypi.douban.com/simple

  • lxml安装,命令行输入:pip install lxml,若这样可以安装成功,后面的踩坑步骤可忽略。

本人在采用上述安装方法时报错,于是上网百度,可以下载lxml与本机环境匹配版本的.whl文件,下载地址:https://pypi.org/project/lxml/#files

查看本机所需版本的方法:在命令行中输入python; import pip; print(pip.pep425tags.get_supported())可以获取到:

通过上图可以看出本机应该下载的版本和红色框里的格式类似,因此下载lxml-4.3.4-cp35-cp35m-win32.whl保存到python的安装目录D:\Program Files\Python35\Lib\site-packages中,并重命名为lxml-4.3.4-cp35-none-win32.whl,再次进入命令行界面,并使用cd命令跳转到D:\Program Files\Python35\Lib\site-packages下,输入pip install lxml-4.3.4-cp35-none-win32.whl安装lxml依赖包,即可安装成功,成功之后输入pip list可以看到lxml和PyQt5包已经安装成功。

3、上面两步成功后,在命令行窗口用cd命令进入labelImg源码解压目录中,输入:pyrcc5 -o resources.py resources.qrc

4、第三步命令执行后,会在labelImg源码解压目录中生成resources.py文件,将其移动到同级目录的libs中

5、最后一步,命令行中输入python labelImg.py,稍等片刻,labelImg图形用户界面成功打开。

使用教程:

labelImg-master目录下文件如下图:

其中data目录下的predefined_classes.txt文件为预先定义好的label值,可以根据实际数据集修改label值。

制作数据集

  1. 在任意目录下创建两个文件夹,一个data_picture文件夹存储需要标注的图片,另外一个data_xml文件夹存储与voc数据集格式一样的xml文件;
  2. 在labelImg界面ctrl+R选择标注图片时生成的xml文件保存的路径;
  3. 点击labelImg界面的open dir选择创建的文件夹data_picture,就可以导入需要标注的图片,图片列表显示在标注界面的右下角,如下图所示:                                                                                                                                                                      
  4. 点击界面左下角,选中create\nRectBox就可以在图片上进行标注,标注好的区域及标签会显示在右边中间位置(上图右边中间红色框的person即为已经标注的位置),图片标注完成之后,点击按钮save即可保存生成和图片名命名相同的xml文件到data_xml文件夹下。

图片批量处理:

1、 图片可能分辨率太大,不利于训练,把他们缩小到跟voc数据集里的图片差不多大小

#coding=utf-8
import os  #打开文件时需要
from PIL import Image
import reStart_path='C:\\Users\\zcy\\Desktop\\transform\\' #你的图片目录
iphone5_width=333 #图片最大宽度
iphone5_depth=500 #图片最大高度list=os.listdir(Start_path)
#print list
count=0
for pic in list:path=Start_path+picprint pathim=Image.open(path)w,h=im.size#print w,h#iphone 5的分辨率为1136*640,如果图片分辨率超过这个值,进行图片的等比例压缩if w>iphone5_width:print picprint "图片名称为"+pic+"图片被修改"h_new=iphone5_width*h/ww_new=iphone5_widthcount=count+1out = im.resize((w_new,h_new),Image.ANTIALIAS)new_pic=re.sub(pic[:-4],pic[:-4]+'_new',pic)#print new_picnew_path=Start_path+new_picout.save(new_path)if h>iphone5_depth:print picprint "图片名称为"+pic+"图片被修改"w=iphone5_depth*w/hh=iphone5_depthcount=count+1out = im.resize((w_new,h_new),Image.ANTIALIAS)new_pic=re.sub(pic[:-4],pic[:-4]+'_new',pic)#print new_picnew_path=Start_path+new_picout.save(new_path)print 'END'
count=str(count)
print "共有"+count+"张图片尺寸被修改"

2、按照一定的规律批量重命名图片

#coding=utf-8
import os  #打开文件时需要
from PIL import Image
import reclass BatchRename():def __init__(self):#我的图片文件夹路径self.path = 'C:\\Users\\zcy\\Desktop\\transform'def rename(self):filelist = os.listdir(self.path)total_num = len(filelist)i = 10000 #图片编号从多少开始,不要跟VOC原本的编号重复了n = 6for item in filelist:if item.endswith('.jpg'):n = 6 - len(str(i))src = os.path.join(os.path.abspath(self.path), item)dst = os.path.join(os.path.abspath(self.path), str(0)*n + str(i) + '.jpg')try:os.rename(src, dst)print 'converting %s to %s ...' % (src, dst)i = i + 1except:continueprint 'total %d to rename & converted %d jpgs' % (total_num, i)
if __name__ == '__main__':demo = BatchRename()demo.rename()

3、生成训练和测试需要的txt文件索引(就是voc数据集中的main文件夹下的txt文件),程序是根据这个索引来获取图像的。

# !/usr/bin/python
# -*- coding: utf-8 -*-
import os
import random  trainval_percent = 0.8  #trainval占比例多少
train_percent = 0.7  #test数据集占比例多少
xmlfilepath = 'Annotations'
txtsavepath = '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('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('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()

参考链接

https://www.e-learn.cn/content/qita/821279

https://blog.csdn.net/qq_34809033/article/details/80589868

https://blog.csdn.net/Bryan_QAQ/article/details/90763167

https://blog.csdn.net/zcy0xy/article/details/79614862

图像标注工具labelImg安装及使用教程,制作voc数据集相关推荐

  1. 图像标注工具labelimg的安装和使用教程

    图像标注工具labelimg的安装和使用教程 一.安装labelimg (1)首先通过Win+R快捷打开windows的"运行"对话框,在对话框中输入cmd进行终端界面. (2)在 ...

  2. ❀YOLOv5学习❀图像标注工具LabelImg的下载,配置和使用。

    LabelImg是图形图像注释工具.它是用Python编写的,并将Qt用于其图形界面.批注以PASCAL VOC格式(ImageNet使用的格式)另存为XML文件.此外,它还支持YOLO格式.下载这个 ...

  3. 图像标注工具-LabelImg

    我们知道,图片标注主要是用来创建自己的数据集,方便进行深度学习训练.推荐一款比较好用的图片标注工具LabelImg,重点介绍其安装和使用过程. 这款工具是全图形界面,用Python和QT写的,最牛的是 ...

  4. 将txt文件转为xml文件以适配图像标注工具labelimg或Pascal VOC XML 格式

    labelimg作为图像领域目标检测.图像语义分割等领域常见的标注工具,输出的数据格式是Pascal VOC,实际工作中,我们经常需要把其他标注格式为txt的文件转为VOC的xml文件格式,下面的代码 ...

  5. Mac下图像标注工具labelImg的安装

    目标检测时需要对训练数据进行标注,标注工具为labelImg,其在Mac下的安装教程如下: # Install PyQt4, it must be this version brew install ...

  6. 图片标注工具LabelImg安装及使用

    环境:win10 + python3.6(/3.5) + PyQt5 + lxml + labelImg ** labelImg下载安装: ** 1.首先是python3.6/3.5的安装,注意pip ...

  7. Windows下深度学习标注工具LabelImg安装和使用指南

    https://cloud.tencent.com/developer/news/325876 转载于:https://www.cnblogs.com/NEU-2015/p/10614385.html

  8. python图像标记工具怎么用_图片标注工具LabelImg使用教程

    1.进入labelImg-master文件夹,在空白处使用 "Shift+鼠标右键" ,选择在此处打开命令窗口,依次输入下面语句即可打开软件. pyrcc4 -o resource ...

  9. 资源 | 深度学习图像标注工具汇总

    作者 | chaibubble 来源 | CSDN 网站 对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上限.世界上最遥远的距离就是我们用同一个模型,但是却有不同的任务.但是数据 ...

最新文章

  1. SKU表管理之删除SKU表数据
  2. 云炬随笔20211012(1)
  3. 9于word没有注册类_XPage系列这次升级后终于是全自动化注册了!
  4. 博弈论——关于Nim游戏和SG函数的几个链接
  5. Spring+EhCache缓存实例(详细讲解+源码下载)
  6. http 二进制_浅谈HTTP协议
  7. new string(abc)创建了几个对象_面试题系列第2篇:new String()创建几个对象?有你不知道的...
  8. 后端薪资要比前端高吗?什么技术是公司的核心技术?前端技术算不算核心技术?
  9. class AT where T:new()相关知识点
  10. 平时碰到系统CPU飙高和频繁GC,你会怎么排查?
  11. 版本管理工具之ClearCase
  12. QT 使用全局钩子监听鼠标事件和键盘事件
  13. ocr初始化失败怎么办_应用程序正常初始化失败怎么办
  14. 微信小程序网易云音乐
  15. 技术文摘11 fang money 技术 资料
  16. linux http error 401,出现HTTP: 401 的时候的解析思路
  17. 我的编程之路点滴记录(三)
  18. 安装mysql提示oxc000007b_Win7出现oxc000007b怎么办?解决win7重装系统出现oxc000007b的方法...
  19. 能自我学习的AI 能辨识20种乐器声音
  20. OSI TCP/IP

热门文章

  1. 香港十大黄金交易公司2019最新排名
  2. BAT等大厂十年研发经历,总结了12开发条经验
  3. 生物信息实用数据库与论坛
  4. Python学习-Scipy库信号处理signal(过滤、快速傅里叶变换、信号窗函数、卷积)
  5. 深度学习——day42 基于时空Transformer的社交网络信息传播预测模型
  6. 做一个检测钩子程序的工具
  7. Struts2:OGNL表达式
  8. Android利用 libsuperuse执行shell命令或获取root权限
  9. MATLAB矩阵运算函数
  10. 纪念亚伦·斯沃茨:2013,记住这位年轻人