def parse_json(self, filename: str, classes: list) -> List[Annotation]: with open(filename, 'r') as json_file: json_data = json.load(json_file) images = json_data["images"] categories = json_data["categories"] annotations = [] for anno in json_data["annotations"]: image_id = anno["image_id"] cls_id = anno["category_id"] for info in images: if info["id"] == image_id: annotation = Annotation( info["file_name"].split(".")[0]) annotation.image_size() for category in categories: if category["id"] == cls_id: annotation.class_id = category["name"] bndbox = { "xmin": anno["bbox"][0], "ymin": anno["bbox"][1], "xmax": anno["bbox"][2] + anno["bbox"][0], "ymax": anno["bbox"][3] + anno["bbox"][1] } annotation.bbox = (bndbox["xmin"], bndbox["ymin"], bndbox["xmax"], bndbox["ymax"]) annotations.append(annotation) return annotations