FastSAM / app.py
kishkath's picture
Update app.py
1f9d444
'''
contains the infernce code for fastsam.py
'''
import os
import sys
import cv2
import torch
import numpy as np
import gradio as gr
from PIL import Image
import matplotlib.pyplot as plt
from ultralytics import FastSAM
from ultralytics.models.fastsam import FastSAMPrompt
def inference(input_image,show_all=True,text_prompt=''):
#model = FastSAM('FastSAM.pt')
model = FastSAM(params['./FastSAM.pt'])
device = torch.device("cuda") if torch.cuda.is_available() else "cpu"
text_prompt = params['text_prompt']
input_image = Image.fromarray(input_image).convert("RGB")
w,h = input_image.size
scale = params['input_size']/max(w,h)
new_w,new_h = int(w*scale),int(h*scale)
input_image = input_image.resize((new_w,new_h))
## inference results
# Run inference on an image
results = model(source, device='cpu', retina_masks=True, imgsz=1024, conf=0.4, iou=0.9)
# Prepare a Prompt Process object
prompt_process = FastSAMPrompt(source, results, device='cpu')
if text_prompt:
ann = prompt_process.text_prompt(text=text_prompt)
if show_all:
gr.Warning("Annotations are enabled, Overiding the text prompt!")
ann = prompt_process.everything_prompt()
result = prompt_process.plot_to_result(annotations=ann,bboxes=None,points=None,point_label=None,withContours=True,better_quality=False,)
return result
params = {
'input_size':1024,
'point_prompt':[[0,0]],
'text_prompt':'jeep',
'output_dir':'./testimg.png'
}
title = "Usage of FastSAM"
description = "Implementation of pre-trained fast-sam model for spaces."
demo = gr.Interface(inference,inputs=[gr.Image(sources=['clipboard','upload']),
gr.Checkbox(True,label='Show All Annotations'),
gr.Textbox('',label='Provide the text prompt: '),],
outputs = [gr.Image(label='Output')],
title = title,
description = description)
demo.launch(debug = True)