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() |