YOLO学习记录-读取xml文件并对其修改类名 判断ground truth区分大中小目标 s m l

YOLO学习记录-读取xml文件并对其修改类名 判断ground truth区分大中小目标 s m l

  • 代码部分

实现功能:我使用的是VOC数据 ,将现有的数据集进行条件判定重新定义类别名—根据MS coco中 small medium large 目标大小的定义进行分类

代码部分

'''
判断大小进行修改标签
标准: small   (0,32*32]
      medium: (32*32,96*96]
      large : (96*96,∞)

'''
import os, sys
import glob
from xml.etree import ElementTree as ET

# 批量读取Annotations下的xml文件
# per=ET.parse(r'')
xml_dir = r''#原路径
xml_list = glob.glob(xml_dir + '/*.xml')
for xml in xml_list:
    print(xml)
    root = ET.parse(xml)
    p = root.findall('/object')

    for object in p:  # 找出类别节点
        child = object.getchildren()[0]  # 找出类别节点的子节点
        bndbox=object.getchildren()[4]
        xmin = bndbox.getchildren()[0].text
        ymin = bndbox.getchildren()[1].text
        xmax = bndbox.getchildren()[2].text
        ymax = bndbox.getchildren()[3].text
        # print(xmin+' '+ymin+' '+xmax+' '+ymax )
        square = (int(ymax) - int(ymin)) * (int(xmax) - int(xmin))
        # print(square)
        if square<= 1024:
            child.text = 'small'
        elif 1024 < square <= 9216:
            child.text = 'medium'
        else:
            child.text = 'large'

    root.write(xml)
    print('修改完毕!')

网上看到很多类似代码 但没有实现这个功能的 自己也是小白,记录一下有需要的搬走吧

你可能感兴趣的:(YOLO学习记录,xml,python)