File size: 2,425 Bytes
3d59cc2
38475a2
60ad2fb
7998bc9
 
eddc507
 
3d59cc2
 
 
 
7998bc9
4add334
3d59cc2
 
7998bc9
 
bdb0dcc
7998bc9
3d59cc2
 
7998bc9
 
 
 
 
 
4add334
3d59cc2
2155fe1
3d59cc2
4add334
3d59cc2
 
 
 
 
7998bc9
3d59cc2
21e7109
 
7998bc9
 
526ba16
5f9ac67
e1a24d1
7998bc9
e1a24d1
7998bc9
0fdb9e6
b5abca7
3d59cc2
 
 
 
0404923
 
e4fcad2
b5abca7
3d59cc2
 
e4fcad2
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
57
58
59
60
61
62
import os
os.system('pip install --upgrade --no-cache-dir gdown')
os.system('gdown -O ./output/ctw/model_ctw.pth 1ydYjuxJglLAJRVWjj6sKXM3aBL2pXRpG')
os.system('gdown -O ./workdir.zip 1mYM_26qHUom_5NU7iutHneB_KHlLjL5y')
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(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)
    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)
    
    cv2.imwrite('result.jpg', visual_image)
    return 'result.jpg', pd.DataFrame(result_words)


iface = gr.Interface(
    fn=infer,
    title="张博强毕设展示",
    description="毕设题目:自然场景中任意形状文字的检测与识别\n目前进度:检测",
    inputs=[gr.inputs.Image(label="image", type="filepath")],
    outputs=[gr.outputs.Image(), gr.outputs.Dataframe(headers=['word'])], 
    #examples=['example1.jpg', 'example2.jpg', 'example3.jpg'],
    #article="<a href=\"https://github.com/MhLiao/MaskTextSpotterV3\">GitHub Repo</a>",
).launch(enable_queue=True)