在进行目标检测训练时,有时候下载的或者别人给的数据集只有图片和voc格式的标注信息,没有类别,转换yolo格式进行目标检测训练时就非常被动,这里给出一个python代码参考,可以统计xml文件所有的类别及总类别数,yolov5、yolov7、yolov8通用,效果如下图
核心代码为找到object下的name,提取文本
for obj in root.findall('object'):
name = obj.find('name').text
names_set.add(name)
完整代码如下
import os
import xml.etree.ElementTree as ET
names_set = set()
folder_path = r'F:dataset\xml' #此处修改为自己的xml文件夹路径
for filename in os.listdir(folder_path):
if filename.endswith('.xml'):
tree = ET.parse(os.path.join(folder_path, filename))
root = tree.getroot()
for obj in root.findall('object'):
name = obj.find('name').text
names_set.add(name)
# 输出所有的name
print(len(names_set))
for name in names_set:
print(name)