File size: 2,934 Bytes
5395ccf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e4e47d6
5395ccf
 
 
 
900e3ff
5395ccf
 
900e3ff
5395ccf
 
 
 
 
 
 
 
84ef148
 
 
 
 
 
 
4579715
6b8f616
 
5395ccf
 
6b8f616
5395ccf
 
 
 
 
 
ea9dbee
85872f5
 
5395ccf
 
 
 
 
 
 
 
 
e324aa4
 
c0ca1d8
e4e47d6
5395ccf
c0ca1d8
 
 
 
5395ccf
 
 
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#try:
#    import detectron2
#except:
import os 
os.system('pip install git+https://github.com/SysCV/transfiner.git')

from matplotlib.pyplot import axis
import gradio as gr
import requests
import numpy as np
from torch import nn
import requests

import torch

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog


model_name='./configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x_4gpu_transfiner.yaml'


cfg = get_cfg()
# add project-specific config (e.g., TensorMask) here if you're not running a model in detectron2's core library
cfg.merge_from_file(model_name)
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5  # set threshold for this model
# Find a model from detectron2's model zoo. You can use the https://dl.fbaipublicfiles... url as w ell
cfg.MODEL.WEIGHTS = './output_3x_transfiner_r50.pth'

if not torch.cuda.is_available():
    cfg.MODEL.DEVICE='cpu'

predictor = DefaultPredictor(cfg)


def inference(image):
    width, height = image.size
    if width > 1300:
        ratio = float(height) / float(width)
        width = 1300
        height = int(ratio * width)
        image = image.resize((width, height))

    img = np.asarray(image)

    #img = np.array(image)
    outputs = predictor(img)

    v = Visualizer(img, MetadataCatalog.get(cfg.DATASETS.TRAIN[0]))
    out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
    
    return out.get_image()



title = "Mask Transfiner [CVPR, 2022]"
description = "Demo for <a target='_blank' href='https://arxiv.org/abs/2111.13673'>Mask Transfiner for High-Quality Instance Segmentation, CVPR 2022</a> based on R50-FPN. To use it, simply upload your image, or click one of the examples to load them. It runs in the cpu environment provided by Hugging Face. Read more at the links below."
article = "<p style='text-align: center'><a target='_blank' href='https://arxiv.org/abs/2111.13673'>Mask Transfiner for High-Quality Instance Segmentation, CVPR 2022</a> | <a target='_blank' href='https://github.com/SysCV/transfiner'>Mask Transfiner Github</a></p>"

gr.Interface(
    inference, 
    [gr.inputs.Image(type="pil", label="Input")], 
    gr.outputs.Image(type="numpy", label="Output"),
    title=title,
    description=description,
    article=article,
    examples=[
            ["demo/sample_imgs/000000131444.jpg"],
            ["demo/sample_imgs/000000157365.jpg"],
            ["demo/sample_imgs/000000176037.jpg"],
            ["demo/sample_imgs/000000018737.jpg"],
            ["demo/sample_imgs/000000224200.jpg"],
            ["demo/sample_imgs/000000558073.jpg"],
            ["demo/sample_imgs/000000404922.jpg"],
            ["demo/sample_imgs/000000252776.jpg"],
            ["demo/sample_imgs/000000482477.jpg"],
            ["demo/sample_imgs/000000344909.jpg"]
        ]).launch()