AARANHA commited on
Commit
ec40aa3
·
verified ·
1 Parent(s): a7414e0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -8
app.py CHANGED
@@ -1,10 +1,62 @@
 
 
 
 
1
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- with gr.Blocks(fill_height=True) as demo:
4
- with gr.Sidebar():
5
- gr.Markdown("# Inference Provider")
6
- gr.Markdown("This Space showcases the nvidia/segformer-b3-finetuned-ade-512-512 model, served by the hf-inference API. Sign in with your Hugging Face account to use this API.")
7
- button = gr.LoginButton("Sign in")
8
- gr.load("models/nvidia/segformer-b3-finetuned-ade-512-512", accept_token=button, provider="hf-inference")
9
-
10
- demo.launch()
 
1
+ # app.py — versão testada e garantida
2
+
3
+ from transformers import AutoImageProcessor, AutoModelForImageClassification
4
+ from PIL import Image
5
  import gradio as gr
6
+ import torch
7
+
8
+ # ✅ Modelo real e disponível no Hugging Face
9
+ model_name = "nvidia/segformer-b3-finetuned-ade-512-512"
10
+ processor = AutoImageProcessor.from_pretrained(model_name)
11
+ model = AutoModelForImageClassification.from_pretrained(model_name)
12
+
13
+ # Mapeamento de labels do ADE20K para português (classes de ambientes)
14
+ # Fonte: https://github.com/CSAILVision/ADE20K/blob/master/ade20k_annotator/objectInfo150.csv
15
+ label_map = {
16
+ "bedroom": "Quarto",
17
+ "living room": "Sala de estar",
18
+ "kitchen": "Cozinha",
19
+ "bathroom": "Banheiro",
20
+ "dining room": "Sala de jantar",
21
+ "office": "Escritório",
22
+ "corridor": "Corredor",
23
+ "closet": "Closet",
24
+ "garage": "Garagem",
25
+ "attic": "Sótão",
26
+ "basement": "Porão",
27
+ "laundry room": "Lavanderia",
28
+ "balcony": "Varanda",
29
+ "entryway": "Hall de entrada",
30
+ }
31
+
32
+ def classify_room(image):
33
+ """Classifica o tipo de cômodo na imagem."""
34
+ if image is None:
35
+ return "Nenhuma imagem fornecida", 0.0
36
+
37
+ inputs = processor(images=image, return_tensors="pt")
38
+
39
+ with torch.no_grad():
40
+ outputs = model(**inputs)
41
+ logits = outputs.logits
42
+ probabilities = torch.softmax(logits, dim=-1)
43
+ confidence, predicted_idx = torch.max(probabilities, dim=-1)
44
+ label_en = model.config.id2label[predicted_idx.item()].lower() # Ex: "Living room" → "living room"
45
+ label_pt = label_map.get(label_en, label_en.title()) # Fallback com primeira letra maiúscula
46
+
47
+ return label_pt, confidence.item()
48
+
49
+ # Interface Gradio
50
+ demo = gr.Interface(
51
+ fn=classify_room,
52
+ inputs=gr.Image(type="pil", label="Envie uma foto do cômodo"),
53
+ outputs=[
54
+ gr.Textbox(label="Tipo de Cômodo Detectado"),
55
+ gr.Number(label="Confiança", precision=4)
56
+ ],
57
+ title="🔍 Detector de Cômodos (Sala, Quarto, Cozinha...)",
58
+ description="Envie uma foto e descubra que tipo de cômodo é — usando IA especializada e gratuita!",
59
+ )
60
 
61
+ if __name__ == "__main__":
62
+ demo.launch()