Spaces:
Sleeping
Sleeping
import torch | |
import pycocotools | |
try: | |
import detectron2 | |
except: | |
import os | |
os.system('pip install git+https://github.com/facebookresearch/detectron2.git@9eb4831') | |
import os | |
os.system('pip install git+https://github.com/aim-uofa/AdelaiDet.git') | |
os.system('pip install Pillow==9.5.0') | |
import gradio as gr | |
from detectron2.engine import DefaultPredictor | |
from detectron2.config import get_cfg | |
from adet.config import defaults | |
cfg=get_cfg() | |
cfg.set_new_allowed(True) | |
cfg.merge_from_file("./configs/attn_R_50.yaml") | |
cfg.MODEL.WEIGHTS="tt_e2e_attn_R_50.pth" | |
cfg.MODEL.DEVICE="cpu" | |
voc_size = cfg.MODEL.BATEXT.VOC_SIZE | |
CTLABELS = [' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','}','~'] | |
def decode_recognition(rec): | |
s = '' | |
for c in rec: | |
c = int(c) | |
if c < voc_size - 1: | |
if voc_size == 96: | |
s += CTLABELS[c] | |
else: | |
s += str(chr(CTLABELS[c])) | |
elif c == voc_size -1: | |
s += u'口' | |
return s | |
predictor = DefaultPredictor(cfg) | |
def inference(image): | |
im = image[:,:,::-1] | |
outputs = predictor(im) | |
recs = outputs["instances"].recs | |
scores = outputs["instances"].scores | |
i=0 | |
predictions = [] | |
for rec in recs: | |
transcription = decode_recognition(rec) | |
score = f"{scores[i]:.3f}" | |
predictions.append( | |
{ | |
"transcription":transcription, | |
"score": score | |
} | |
) | |
i+=1 | |
return predictions | |
image=gr.Image(type="numpy", label="Input Image") | |
label=gr.Label() | |
examples=["./hfs_examples/COLEGIO SD.JPG","./hfs_examples/COMITE GUADALUPANO CHICO.JPG","./hfs_examples/COSAUTLAN VER.JPG"] | |
intf=gr.Interface(fn=inference, inputs=image, outputs=["text"], examples=examples) | |
intf.launch(inline=False) |