Labib Asari
move setting description outside for loop in evaluation scripts (#134)
5de3983
import lmdb
import os
import numpy as np
import cv2 as cv
from tqdm import tqdm
class IIIT5K:
def __init__(self, root):
self.root = root
self.acc = -1
self.inputSize = [100, 32]
self.val_label = self.load_label(self.root)
@property
def name(self):
return self.__class__.__name__
def load_label(self, root):
lmdb_file = root
lmdb_env = lmdb.open(lmdb_file)
lmdb_txn = lmdb_env.begin()
lmdb_cursor = lmdb_txn.cursor()
label = list()
for key, value in lmdb_cursor:
image_index = key.decode()
if image_index.split('-')[0] == 'image':
img = cv.imdecode(np.fromstring(value, np.uint8), 3)
label_index = 'label-' + image_index.split('-')[1]
value = lmdb_txn.get(label_index.encode()).decode().lower()
label.append([img, value])
else:
break
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 img, value in pbar:
rbbox = np.array([0, img.shape[0], 0, 0, img.shape[1], 0, img.shape[1], img.shape[0]])
pred = model.infer(img, rbbox).lower()
if value == pred:
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))