使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)

文章转载自K同学,谨防原文失效
可参考 link1和link2和link3

LabelImg介绍

LabelImg支持文件夹的导入,在标完一张后,在左侧选择Next Image就可以切换到下一张继续了。输出格式部分,目前LabelImg支持YOLO和PascalVOC2种格式,前者标签文件后缀是.txt件,而后者标签文件后缀是.xml件。标签保存在对应的labels文件夹下,与images中的图片文件名一一对应。数据集架构如下:

原文链接:https://blog.csdn.net/weixin_49929808/article/details/120661388
https://blog.csdn.net/weixin_49929808/article/details/120357725?spm=1001.2014.3001.5501

使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)_第1张图片--------------------------------------------------------------分割线---------------------------------------------------------------

第一步: WIN键+R 输入cmd 打开命令行窗口

使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)_第2张图片
第二步: 在命令行窗口中输入pip3 install labelImg,安装 labelImg
使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)_第3张图片
第三步: 输入labelImg 打开labelImg窗口

再次打开时候可以直接使用WIN键+R 输入cmd 打开命令行`窗口,再输入labelImg,即可直接调用。

使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)_第4张图片
第四步:
最上方显示的是当前标注图片的路径

  • Open Dir:待标注图片数据的路径文件夹,即选择JPEGImage文件夹
  • Change Save Dir:保存类别标签的路径文件夹,即选择Annotation文件夹
  • PascalVOC:标注的标签保存成VOC格式,在鼠标点一下就变成YOLO,即此时就会把标注的标签变成YOLO格式
    使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)_第5张图片

标注可以前先进行一些设置

原文链接:https://blog.csdn.net/weixin_41010198/article/details/106378404

点击View显示如下图,然后把如下的几个选项勾上:

  • Auto Save mode:当你切换到下一张图片时,就会自动把上一张标注的图片标签自动保存下来,这样就不用每标注一样图片都按Ctrl+S保存一下了
  • Display Labels:标注好图片之后,会把框和标签都显示出来
  • Advanced Mode:这样标注的十字架就会一直悬浮在窗口,不用每次标完一个目标,再按一次W快捷键,调出标注的十字架。

使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)_第6张图片

✨ 标注小技巧:

W:调出标注的十字架,开始标注
A:切换到上一张图片
D:切换到下一张图片
Ctrl+S:保存标注好的标签
del:删除标注的矩形框
Ctrl+鼠标滚轮:按住Ctrl,然后滚动鼠标滚轮,可以调整标注图片的显示大小
Ctrl+u:选择要标注图片的文件夹
Ctrl+r:选择标注好的label标签存放的文件夹
↑→↓←:移动标注的矩形框的位置
按住ctr键,滚动鼠标可以快速放大、缩小图片

VOC数据标签和格式和YOLO数据标签格式说明

1、VOC数据格式
VOC数据格式,会直接把每张图片标注的标签信息保存到一个xml文件中

例如:我们上面标注的JPEGImage/000001.jpg图片,标注的标签信息会保存到Annotation/000001.xml文件中,000001.xml中的信息如下:

<annotation>
	<folder>JPEGImage</folder>
	<filename>000000.jpg</filename>
	<path>D:\ZF\2_ZF_data\3_stamp_data\标注公章数据\JPEGImage\000000.jpg</path>
	<source>
		<database>Unknown</database>
	</source>
	<size>
		<width>500</width>
		<height>402</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>circle_red</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>168</xmin>
			<ymin>2</ymin>
			<xmax>355</xmax>
			<ymax>186</ymax>
		</bndbox>
	</object>
	<object>
		<name>circle_red</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>2</xmin>
			<ymin>154</ymin>
			<xmax>208</xmax>
			<ymax>367</ymax>
		</bndbox>
	</object>
	<object>
		<name>circle_red</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>305</xmin>
			<ymin>174</ymin>
			<xmax>493</xmax>
			<ymax>364</ymax>
		</bndbox>
	</object>
</annotation>


xml中的关键信息说明:

  • 图片的名字
  • 每个目标的标定框坐标:即左上角的坐标和右下角的坐标
    • xmin
    • ymin
    • xmax
    • ymax

2、YOLO数据格式
YOLO数据格式,会直接把每张图片标注的标签信息保存到一个txt文件中
在这里插入图片描述
例如:我们上面标注的JPEGImage/000001.jpg图片,标注的标签信息会保存到Annotation/000001.txt文件中(同时会生成一个classes.txt文件,也保存到Annotation/classes.txt),000001.txt中的信息如下:

0 0.521000 0.235075 0.362000 0.450249
0 0.213000 0.645522 0.418000 0.519900
0 0.794000 0.665423 0.376000 0.470149

txt中信息说明:

  • 每一行代表标注的一个目标
  • 第一个数代表标注目标的标签,第一目标circle_red,对应数字就是0
  • 后面的四个数代表标注框的中心坐标和标注框的相对宽和高(进行了归一化,如何归一化可以参考这篇博客中的介绍)

同时会生成一个Annotation/classes.txt实际类别文件classes.txt,里面的内容如下:

""""
仅示例
""""
circle_red
circle_gray
rectangle_red
rectangle_gray
fingeprint_red
fingeprint_gray
other

在知乎上有篇文章很专业附了相关视频,文章link,本文仅为自学过程中的笔记,请大家支持原作者

你可能感兴趣的:(Yolov5进阶学习,Yolov5问题解决,YOLO,目标检测,xml)