admin管理员组文章数量:1609966
一、标注数据
1、将获取图片存放到同一个文件夹下
本次标注数据供分为4类(person,dog,tiger,car),由于数据较少所以放在一个文件夹,数据较多时可以选择存放在多个文件夹
2、打开精灵标注助手选择创建文件
由于本项目是目标检测类,所以选择位置标注即可(注意:分类值要用英文的逗号隔开,此处也可以不写分类值,在等会使用的时候进行添加,图片文件夹选择图片所在的路径)
3、进行数据标注
(1)选择矩形框(按一下键盘的R键也可以)
(2)标注物体(鼠标拖拽画框)
(3)选择标签(注意:每次标注完一个物体数都要加标签)
(4)重复(2)(3)直到整张图片的目标物体标注完成
(5)点击下方的对号保存本张图片的标注
(6)点击下一个(或者按键盘方向右键)进行下一张图片的标注
(7)整个文件夹内的所有图片标注完成后点击“导出”,导出格式选择xml,导出路径选择默认就好
4、查看标注的xml文件
在存放图片的文件夹下有一个output的文件夹,标注的数据存放在这里
随便打开其中的一个文件,内容如下:
二、解析数据
1、解析目标
得到所有文件夹下xml中的图片名称,不同类别c物体的中心点坐标和物体框的高和宽
按照(图片名,类别,物体中心点坐标x,物体中心点坐标y,类别,物体中心点坐标x,物体中心点坐标y,...........)格式存放在txt文件中。
2、解析过程
from xml.dom.minidom import parse
import os
files_path = r"E:\person_tiger_car_dog\outputs" #标注助手output的路径
for file in os.listdir(files_path):
file = os.path.join(files_path, file)
dom = parse(file)
root = dom.documentElement
img_name = root.getElementsByTagName("path")[0].childNodes[0].data
fil_name = img_name.split('\\')[-1]
print(fil_name)
objects = root.getElementsByTagName("object")
dic = {"person": 0, "tiger": 1, "car": 2, "dog": 3} #本次共标注了4个类别
with open("./person_tiger_car_dog/1.txt","a+") as f:
f.write(fil_name)
f.write('\t')
for boxes in objects:
item = boxes.getElementsByTagName("item") #循环所有的item()
for box in item:
cls_name = box.getElementsByTagName("name")[0].childNodes[0].data
x1 = int(box.getElementsByTagName("xmin")[0].childNodes[0].data)
y1 = int(box.getElementsByTagName("ymin")[0].childNodes[0].data)
x2 = int(box.getElementsByTagName("xmax")[0].childNodes[0].data)
y2 = int(box.getElementsByTagName("ymax")[0].childNodes[0].data)
print(cls_name, x1, y1, x2, y2)
print(dic[cls_name])
f.write(str(dic[cls_name])) #用字典的键值对表示类别,此处通过键寻找值
f.write('\t') #用空格隔开数据
f.write(str(0.5*(x1+x2)))
f.write('\t')
f.write(str(0.5 * (y1+y2)))
f.write('\t')
# f.write("\r\n")
f.write(str(x2-x1))
f.write('\t')
f.write(str(y2-y1))
f.write('\t')
f.write('\t')
f.write("\n") #每一张图片数据写完后在下一行写入下一张图片中的数据
3、查看解析的txt文件
标注完成后的txt文件如下
版权声明:本文标题:使用精灵标注助手制作yolov3训练数据集(附解析xml代码) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728585588a1164903.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论