Exemplo n.º 1
0
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_))
Exemplo n.º 2
0
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)))
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
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))