Alex commited on
Commit
7077928
·
1 Parent(s): 7ee9458

first commit

Browse files
Files changed (2) hide show
  1. app.py +48 -0
  2. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import SamModel, SamProcessor
3
+ from PIL import Image
4
+ import numpy as np
5
+ import torch
6
+
7
+ # Carica il modello e il processore
8
+ model = SamModel.from_pretrained("facebook/sam-vit-base")
9
+ processor = SamProcessor.from_pretrained("facebook/sam-vit-base")
10
+ model.to("cpu") # Assicurati che il modello giri su CPU
11
+
12
+ def segment_image(image):
13
+ # Converti l'immagine in formato compatibile
14
+ img = Image.fromarray(np.uint8(image)).convert("RGB")
15
+
16
+ # Prepara l'input per SAM (segmentazione automatica)
17
+ inputs = processor(img, return_tensors="pt").to("cpu")
18
+
19
+ # Inferenza
20
+ with torch.no_grad():
21
+ outputs = model(**inputs, multimask_output=False)
22
+
23
+ # Post-processa per ottenere la maschera
24
+ mask = processor.image_processor.post_process_masks(
25
+ outputs.pred_masks, inputs["original_sizes"], inputs["reshaped_input_sizes"]
26
+ )[0][0].cpu().numpy()
27
+
28
+ # Converti la maschera in un'immagine visibile
29
+ mask_img = Image.fromarray((mask * 255).astype(np.uint8))
30
+
31
+ # Annotazioni (es. bounding box o etichette semplici)
32
+ annotations = {"mask": mask.tolist(), "label": "object"} # Personalizza come necessario
33
+
34
+ return mask_img, str(annotations)
35
+
36
+ # Interfaccia Gradio
37
+ interface = gr.Interface(
38
+ fn=segment_image,
39
+ inputs=gr.Image(type="numpy", label="Carica un'immagine"),
40
+ outputs=[
41
+ gr.Image(type="pil", label="Maschera di segmentazione"),
42
+ gr.Textbox(label="Annotazioni per inpainting")
43
+ ],
44
+ title="Segmentazione di vestiti e oggetti con SAM",
45
+ description="Carica un'immagine per ottenere la segmentazione e le annotazioni."
46
+ )
47
+
48
+ interface.launch()
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ torch
2
+ torchvision
3
+ transformers
4
+ gradio
5
+ pillow
6
+ numpy