Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
import cv2 | |
import numpy as np | |
from fastsam import FastSAM, FastSAMPrompt | |
# Load the FastSAM model | |
model = FastSAM('FastSAM-x.pt') | |
def segment_image(input_image, points): | |
# Prepare the image | |
input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2RGB) | |
# Run the model | |
everything_results = model(input_image, device='cpu', retina_masks=True, imgsz=1024, conf=0.4, iou=0.9) | |
# Prepare prompts | |
prompt_process = FastSAMPrompt(input_image, everything_results, device='cpu') | |
# Generate mask based on points | |
ann = prompt_process.point_prompt(points=points, pointlabel=[1] * len(points)) | |
# Overlay the mask on the original image | |
result_image = input_image.copy() | |
mask = ann[0].astype(bool) | |
result_image[mask] = result_image[mask] * 0.5 + np.array([255, 0, 0]) * 0.5 | |
return result_image | |
# Create Gradio interface | |
iface = gr.Interface( | |
fn=segment_image, | |
inputs=[ | |
gr.Image(type="numpy"), | |
gr.Image(type="numpy", tool="sketch", brush_radius=5, label="Click on objects to segment") | |
], | |
outputs=gr.Image(type="numpy"), | |
title="FastSAM Image Segmentation", | |
description="Click on objects in the image to segment them using FastSAM." | |
) | |
# Launch the interface | |
iface.launch() |