Spaces:
Runtime error
Runtime error
# Copyright (c) OpenMMLab. All rights reserved. | |
import os.path as osp | |
import xml.etree.ElementTree as ET | |
from mmengine.fileio import list_from_file | |
from mmdet.registry import DATASETS | |
from .xml_style import XMLDataset | |
class WIDERFaceDataset(XMLDataset): | |
"""Reader for the WIDER Face dataset in PASCAL VOC format. | |
Conversion scripts can be found in | |
https://github.com/sovrasov/wider-face-pascal-voc-annotations | |
""" | |
METAINFO = {'classes': ('face', ), 'palette': [(0, 255, 0)]} | |
def __init__(self, **kwargs): | |
super(WIDERFaceDataset, self).__init__(**kwargs) | |
def load_annotations(self, ann_file): | |
"""Load annotation from WIDERFace XML style annotation file. | |
Args: | |
ann_file (str): Path of XML file. | |
Returns: | |
list[dict]: Annotation info from XML file. | |
""" | |
data_infos = [] | |
img_ids = list_from_file(ann_file) | |
for img_id in img_ids: | |
filename = f'{img_id}.jpg' | |
xml_path = osp.join(self.img_prefix, 'Annotations', | |
f'{img_id}.xml') | |
tree = ET.parse(xml_path) | |
root = tree.getroot() | |
size = root.find('size') | |
width = int(size.find('width').text) | |
height = int(size.find('height').text) | |
folder = root.find('folder').text | |
data_infos.append( | |
dict( | |
id=img_id, | |
filename=osp.join(folder, filename), | |
width=width, | |
height=height)) | |
return data_infos | |