VOC转YOLO:实现XML数据到TXT数据的快速转换

VOC转YOLO:实现XML数据到TXT数据的快速转换

在目标检测领域,数据格式的转换是必不可少的环节。如果您需要将VOC格式的XML数据转换为YOLO格式的TXT数据,本文将为您提供详细的步骤和Python代码示例,帮助您轻松完成转换。

1. 准备工作

在开始转换之前,请确保您已经安装了以下Python库:

  • xml.etree.ElementTree:用于解析XML文件。- os:用于处理文件和目录。

2. 了解数据格式

  • VOC (Visual Object Classes):一种常用的目标检测数据集格式,使用XML文件存储图像标注信息,包括图像名称、类别标签、边界框坐标等。- YOLO (You Only Look Once):一种流行的目标检测算法,使用TXT文件存储图像标注信息,每行代表一个目标,格式为'类别 x_center y_center width height',其中坐标值归一化到[0,1]区间。

3. 转换步骤

  1. 读取VOC格式的XML文件: 使用xml.etree.ElementTree库解析XML文件,获取根元素和相关节点信息,例如图像尺寸、目标类别、边界框坐标等。

  2. 提取目标信息: 遍历XML文件中所有目标节点,提取目标类别和边界框坐标信息。

  3. 转换边界框坐标: 将VOC格式的边界框坐标(左上角和右下角像素坐标)转换为YOLO格式的归一化坐标(中心点坐标和宽高比例)。

  4. 创建YOLO格式的TXT文件: 针对每个图像创建一个对应的TXT文件,将转换后的目标信息写入文件,每行一个目标,格式如上所述。

4. Python代码示例

以下是一个简单的Python代码示例,用于将VOC格式的XML数据转换为YOLO格式的TXT数据:pythonimport xml.etree.ElementTree as ETimport os

def convert_voc_to_yolo(xml_folder, yolo_folder): for filename in os.listdir(xml_folder): if filename.endswith('.xml'): xml_path = os.path.join(xml_folder, filename) tree = ET.parse(xml_path) root = tree.getroot()

        image_width = int(root.find('size/width').text)            image_height = int(root.find('size/height').text)

        yolo_filename = os.path.splitext(filename)[0] + '.txt'            yolo_path = os.path.join(yolo_folder, yolo_filename)

        with open(yolo_path, 'w') as yolo_file:                for obj in root.findall('object'):                    object_class = obj.find('name').text

                bbox = obj.find('bndbox')                    xmin = int(bbox.find('xmin').text)                    ymin = int(bbox.find('ymin').text)                    xmax = int(bbox.find('xmax').text)                    ymax = int(bbox.find('ymax').text)

                x = (xmin + xmax) / (2.0 * image_width)                    y = (ymin + ymax) / (2.0 * image_height)                    width = (xmax - xmin) / float(image_width)                    height = (ymax - ymin) / float(image_height)

                yolo_file.write(f'{object_class} {x} {y} {width} {height}

')

调用示例convert_voc_to_yolo('/path/to/xml/folder', '/path/to/yolo/folder')

使用方法:

  1. 将代码保存为.py文件,例如voc_to_yolo.py。2. 将代码中的/path/to/xml/folder替换为存储VOC格式XML文件的文件夹路径。3. 将代码中的/path/to/yolo/folder替换为存储转换后的YOLO格式TXT文件的文件夹路径。4. 在命令行中运行代码:python voc_to_yolo.py

5. 总结

本文介绍了如何将VOC格式的XML数据转换为YOLO格式的TXT数据,并提供了详细的步骤和Python代码示例。希望本文能帮助您快速完成数据转换,为目标检测任务做好准备。

标签: 常规


原文地址: https://cveoy.top/t/topic/W2P 著作权归作者所有。请勿转载和采集!