doc_category_map = {} for category, docs in categories.items(): for doc in docs: doc_category_map[doc] = category.upper() print('#documents in D1 (per categories): to = {}, lg = {} fg = {}'.format( len(categories['to']), len(categories['lg']), len(categories['fg']))) # data to be analyzed results = json.load(open('results/results_proposed.json', 'r')) for doc in results: _, dataset, _, doc_ = doc.split('/') solution = results[doc]['solution'] comp = results[doc]['compatibilities'] if dataset == 'D2': print(comp) continue acc = accuracy(solution) print('{}-{} {:.2f}% {}'.format( dataset, doc_, 100 * acc, doc_category_map[doc_] if dataset == 'D1' else '')) if acc < 0.8: if dataset == 'D1': src1 = '{}/{}.jpg'.format(doc, doc_) else: src1 = 'datasets/D2/integral/{}.TIF'.format(doc_) shutil.copy(src1, 'ignore/{}-{}'.format(dataset, os.path.basename(src1))) if os.path.exists('ignore/{}-{}'.format(dataset, doc_)): shutil.rmtree('ignore/{}-{}'.format(dataset, doc_)) shutil.copytree(doc, 'ignore/{}-{}'.format(dataset, doc_))
import cv2 import numpy as np import json from docrec.strips.strips import Strips from docrec.metrics.solution import accuracy results_prop = json.load(open('results/results_proposed.json', 'r')) results_marques = json.load(open('results/results_best_marques.json', 'r')) for dataset in ['D1', 'D2']: avg_prop = 0 avg_marques = 0 perfect_ls = 0 cnt = 0 for doc in results_prop: _, dataset_, _, doc_ = doc.split('/') if dataset == dataset_: solution_prop = results_prop[doc]['solution'] solution_marques = results_marques[doc]['solution'] avg_prop += accuracy(solution_prop) avg_marques += accuracy(solution_marques) cnt += 1 avg_prop /= cnt avg_marques /= cnt print('{}: avg_prop={} - avg_marques={} => {} '.format( dataset, 100 * avg_prop, 100 * avg_marques, 100 * (avg_prop - avg_marques)))
import os import argparse import matplotlib.pyplot as plt from docrec.metrics.solution import accuracy from docrec.strips.strips import Strips from docrec.compatibility.proposed import Proposed from docrec.solver.solverlocal import SolverLS from docrec.pipeline import Pipeline #path_model = '{}/{}'.format(os.getcwd(), open('best_model.txt').read()) path_model = 'model.npy' # reconstruction pipeline (compatibility algorithm + solver) algorithm = Proposed(path_model, 10, (3000, 31), num_classes=2) solver = SolverLS(maximize=True) pipeline = Pipeline(algorithm, solver) parser = argparse.ArgumentParser(description='Score.') parser.add_argument('-d', '--d', action='store', dest='doc', required=False, type=str, default='datasets/D1/artificial/D001', help='Document.') args = parser.parse_args() strips = Strips(path=args.doc, filter_blanks=True) solution, compatibilities, displacements = pipeline.run(strips) print(compatibilities, displacements, solution) print(accuracy(solution))
import cv2 import numpy as np import json from docrec.strips.strips import Strips from docrec.metrics.solution import accuracy from docrec.metrics.matrix import precision_mc results = json.load(open('results/results_proposed.json', 'r')) total = 0 for doc in results: _, dataset, _, doc_ = doc.split('/') solution = results[doc]['solution'] N = len(solution) last = False for i in range(N - 1): if solution[i] == N - 1 and solution[i + 1] == 0: last = True mistakes = 0 for i in range(N - 1): if solution[i] + 1 != solution[i + 1]: mistakes += 1 if (mistakes == 1) and last: total += 1 else: print(doc, N, '{:.2f}'.format(100 * accuracy(solution))) print('#last={}'.format(total))
import cv2 import numpy as np import json from docrec.strips.strips import Strips from docrec.metrics.solution import accuracy from docrec.metrics.matrix import precision_mc results = json.load(open('results/results_proposed.json', 'r')) perfect_kbh = 0 perfect_ls = 0 for doc in results: _, dataset, _, doc_ = doc.split('/') solution = results[doc]['solution'] compatibilities = np.asarray(results[doc]['compatibilities']) if accuracy(solution) == 1: perfect_ls += 1 if precision_mc(compatibilities, True, True) == 1: perfect_kbh += 1 print('#perfect_kbh={} #perfect_ls={}'.format(perfect_kbh, perfect_ls))