Я работаю над обнаружением объектов с помощью yolo (darkflow). У меня есть набор данных и метки для набора данных. Но проблема в том, что мне нужны аннотации в формате XML, но у меня есть в формате .txt. Как преобразовать TXT в xml?
Это образец TXT-файла.
001.jpg 528 412 162 52 001
Я написал код для преобразования TXT в xml
import os
import xml.etree.cElementTree as ET
from lxml import etree
import cv2
def text_to_xml(file):
filename = file.split('.')[0]
extention = file.split('.')[1]
image = cv2.imread(os.path.join(folder, file))
height, width, depth = image.shape
f = open(filename+'.txt', 'r')
content = f.readlines()[0]
content = content.split('\t')
xmin, xmax, ymin, ymax = content[1], content[2], content[3], content[4]
f.close()
annotation = ET.Element('annotation')
ET.SubElement(annotation, 'folder').text = folder
ET.SubElement(annotation, 'filename').text = filename + '.jpg'
ET.SubElement(annotation, 'segmented').text = '0'
size = ET.SubElement(annotation, 'size')
ET.SubElement(size, 'width').text = str(width)
ET.SubElement(size, 'height').text = str(height)
ET.SubElement(size, 'depth').text = str(depth)
ob = ET.SubElement(annotation, 'object')
ET.SubElement(ob, 'name').text = 'sign'
ET.SubElement(ob, 'pose').text = 'Unspecified'
ET.SubElement(ob, 'truncated').text = '0'
ET.SubElement(ob, 'difficult').text = '0'
bbox = ET.SubElement(ob, 'bndbox')
ET.SubElement(bbox, 'xmin').text = str(xmin)
ET.SubElement(bbox, 'ymin').text = str(ymin)
ET.SubElement(bbox, 'xmax').text = str(xmax)
ET.SubElement(bbox, 'ymax').text = str(ymax)
xml_str = ET.tostring(annotation)
root = etree.fromstring(xml_str)
xml_str = etree.tostring(root, pretty_print=True)
return xml_str
if __name__ == '__main__':
folder = './images/'
for file in os.listdir(folder):
if file.split('.')[1] == 'jpg':
text_to_xml(file)
Но когда я тренирую модель с преобразованными файлами xml, модель ничего не обнаруживает. Так что, думаю, я где-то напутал.