Yiyao Wang
Fix the two FP16 models of CRNN(#131)
e6dbb4e
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))