Rohit8y's picture
bug fixed cv2
b4511b1
raw
history blame contribute delete
No virus
1.63 kB
import datetime
import os
os.system('python -m pip install \'git+https://github.com/facebookresearch/detectron2.git\'')
import cv2
import gradio as gr
import numpy as np
from detectron2.config import get_cfg
from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog
def predict(pil_image):
print(datetime.datetime.now())
# Convert PIL Image to CV2
open_cv_image = np.array(pil_image)
input_image = open_cv_image[:, :, ::-1].copy()
# Initialise model
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file("COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml"))
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-PanopticSegmentation/panoptic_fpn_R_101_3x.yaml")
cfg.MODEL.DEVICE = "cpu"
predictor = DefaultPredictor(cfg)
assert input_image.shape[2] == 3
height, width, _ = input_image.shape
# Apply Panoptic segmentation
panoptic_seg, segments_info = predictor(input_image)["panoptic_seg"]
v = Visualizer(input_image[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_panoptic_seg_predictions(panoptic_seg.to("cpu"), segments_info)
segmented_image = out.get_image()[:, :, ::-1]
return segmented_image
# Create Gradio interface
image_input = gr.Image(type="pil", label="Input Image")
iface = gr.Interface(fn=predict,
inputs=[image_input],
outputs=gr.Image(type="pil"),
examples=["examples/6178_3003_0.jpg"])
iface.launch()