| | import os |
| | import numpy as np |
| | import cv2 as cv |
| | import xml.dom.minidom as minidom |
| | from tqdm import tqdm |
| |
|
| | class ICDAR: |
| | def __init__(self, root): |
| | self.root = root |
| | self.acc = -1 |
| | self.inputSize = [100, 32] |
| | self.val_label_file = os.path.join(root, "word.xml") |
| | self.val_label = self.load_label(self.val_label_file) |
| |
|
| | @property |
| | def name(self): |
| | return self.__class__.__name__ |
| |
|
| | def load_label(self, label_file): |
| | label = list() |
| | dom = minidom.getDOMImplementation().createDocument(None, 'Root', None) |
| | root = dom.documentElement |
| | dom = minidom.parse(self.val_label_file) |
| | root = dom.documentElement |
| | names = root.getElementsByTagName('image') |
| | for name in names: |
| | key = os.path.join(self.root, name.getAttribute('file')) |
| | value = name.getAttribute('tag').lower() |
| | label.append([key, value]) |
| |
|
| | return label |
| |
|
| | def eval(self, model): |
| | right_num = 0 |
| | pbar = tqdm(self.val_label) |
| | pbar.set_description("Evaluating {} with {} val set".format(model.name, self.name)) |
| |
|
| | for fn, label in pbar: |
| |
|
| | img = cv.imread(fn) |
| |
|
| | rbbox = np.array([0, img.shape[0], 0, 0, img.shape[1], 0, img.shape[1], img.shape[0]]) |
| | pred = model.infer(img, rbbox) |
| | if label.lower() == pred.lower(): |
| | right_num += 1 |
| |
|
| | self.acc = right_num/(len(self.val_label) * 1.0) |
| |
|
| |
|
| | def get_result(self): |
| | return self.acc |
| |
|
| | def print_result(self): |
| | print("Accuracy: {:.2f}%".format(self.acc*100)) |