File size: 1,596 Bytes
46b1f95 5de3983 46b1f95 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
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)) |