ContourNet-ABI / app.py
Cyril666's picture
First model version
33fa924
import os
os.system('pip install --upgrade --no-cache-dir gdown')
os.system('gdown -O ./model_ctw.pth 16qgtD4UOhp0q5e2RYXE1dvuTz_ylZMyb')
#os.system('unzip model_ctw.zip')
os.system('gdown -O ./workdir.zip 10HxLehcJMY9rLd_OyH40HmrySZItuNDt')
os.system('unzip workdir.zip')
os.system('pip install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"')
os.system('python setup.py build develop --user')
import cv2
import pandas as pd
import gradio as gr
from det_demo import DetDemo
from maskrcnn_benchmark.config import cfg
from demo import get_model, preprocess, postprocess, load
from utils import Config, Logger, CharsetMapper
import torch
def infer(img):
filepath = './input.png'
img.save(filepath)
config = Config('configs/rec/train_abinet.yaml')
config.model_vision_checkpoint = None
model = get_model(config)
model = load(model, 'workdir/train-abinet/best-train-abinet.pth')
charset = CharsetMapper(filename=config.dataset_charset_path, max_length=config.dataset_max_length + 1)
cfg.merge_from_file('./configs/det/r50_baseline.yaml')
# manual override some options
cfg.merge_from_list(["MODEL.DEVICE", "cpu"])
det_demo = DetDemo(
cfg,
min_image_size=800,
confidence_threshold=0.7,
output_polygon=True
)
image = cv2.imread(filepath)
print(image.shape)
result_polygons, result_masks, result_boxes = det_demo.run_on_opencv_image(image)
patchs = [image[box[1]:box[3], box[0]:box[2], :] for box in result_boxes]
patchs = [preprocess(patch, config.dataset_image_width, config.dataset_image_height) for patch in patchs]
patchs = torch.cat(patchs, dim=0)
res = model(patchs)
result_words = postprocess(res, charset, 'alignment')[0]
visual_image = det_demo.visualization(image.copy(), result_polygons, result_masks, result_boxes, result_words)
print(visual_image.shape)
cv2.imwrite('result.jpg', visual_image)
return ['result.jpg', pd.DataFrame(result_words)]
blocks = gr.Blocks()
input_image = gr.Image(label="image", type="pil")
output_image = gr.Image(label="out_img", type="filepath")
output_word = gr.Dataframe(label="out_word", headers=['word'])
with blocks:
gr.Markdown('''
<center><h1 id="title">张博强毕设展示</h1></center>
<center> 西北工业大学 航海学院本科 张博强 </center>
<center> 毕设题目:自然场景中任意形状文字的检测与识别 </center>
<center> 检测:基于<a href="https://github.com/wangyuxin87/ContourNet">ContourNet</a> 识别:基于<a href="https://github.com/FangShancheng/ABINet">ABINet</a> </center>
''')
with gr.Row():
with gr.Column():
input_image.render()
button = gr.Button("Submit")
button.click(fn=infer, inputs=[input_image],
outputs=[output_image, output_word],)
with gr.Column():
output_image.render()
with gr.Row():
output_word.render()
if __name__ == "__main__":
blocks.launch(debug=True)
'''
iface = gr.Interface(
fn=infer,
title="张博强毕设展示",
description=description,
inputs=[gr.inputs.Image(label="image", type="filepath")],
outputs=[gr.outputs.Image(), gr.outputs.Dataframe(headers=['word'])],
examples=['figs/test/CANDY.png', 'figs/test/ESPLANADE.png', 'figs/test/KAPPA.png'],
).launch(enable_queue=True, cache_examples=True)
'''