detecta_espaco / app.py
AARANHA's picture
Update app.py
79dcab1 verified
# app.py — versão FINAL, FUNCIONAL e PRECISA
from transformers import pipeline
from PIL import Image
import gradio as gr
# ✅ Modelo real e disponível: CLIP
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")
# Defina os rótulos em português (você controla!)
candidate_labels = [
"uma foto de uma sala de estar",
"uma foto de um quarto",
"uma foto de uma cozinha",
"uma foto de um banheiro",
"uma foto de um escritório",
"uma foto de uma sala de jantar",
"uma foto de um corredor",
"uma foto de um closet",
"uma foto de uma garagem",
"uma foto de uma varanda",
]
# Mapeamento para nomes curtos em PT-BR
label_map = {
"uma foto de uma sala de estar": "Sala de estar",
"uma foto de um quarto": "Quarto",
"uma foto de uma cozinha": "Cozinha",
"uma foto de um banheiro": "Banheiro",
"uma foto de um escritório": "Escritório",
"uma foto de uma sala de jantar": "Sala de jantar",
"uma foto de um corredor": "Corredor",
"uma foto de um closet": "Closet",
"uma foto de uma garagem": "Garagem",
"uma foto de uma varanda": "Varanda",
}
def classify_room(image):
"""Classifica o tipo de cômodo usando CLIP (zero-shot)."""
if image is None:
return "Nenhuma imagem fornecida", 0.0
# CLIP espera PIL Image
results = classifier(image, candidate_labels=candidate_labels, multi_label=False)
# Pega o top-1
top_result = results[0]
label_en = top_result['label']
confidence = top_result['score']
label_pt = label_map.get(label_en, label_en)
return label_pt, confidence
# Interface Gradio
demo = gr.Interface(
fn=classify_room,
inputs=gr.Image(type="pil", label="Envie uma foto do cômodo"),
outputs=[
gr.Textbox(label="Tipo de Cômodo Detectado"),
gr.Number(label="Confiança", precision=4)
],
title="🔍 Detector de Cômodos com CLIP (Zero-Shot)",
description="Precisão muito melhorada — compara sua imagem com descrições em português.",
# examples=[
# ["https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bedroom.jpg"],
# ["https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/living_room.jpg"]
# ]
)
if __name__ == "__main__":
demo.launch()