👁️

Clasificador de Imágenes

👨‍🍳👑 Master Chef⏱️ 35 minutos

📋 Prerequisitos sugeridos

  • Python
  • API multimodal (Gemini Vision)

Lo que vas a construir

Un clasificador de imagenes que analiza fotos y las categoriza automaticamente usando IA multimodal.

Le pasas una imagen (desde archivo o URL) y te dice que es: "gato, 95% confianza, gato atigrado durmiendo en un sofa". Puedes definir tus propias categorias para clasificar productos, documentos, o lo que necesites.

Al terminar tendras un script en Python que usa Gemini Vision para analizar imagenes. Devuelve la categoria, nivel de confianza, y una descripcion. Util para organizar fotos, moderar contenido, o automatizar inventario.


El prompt para empezar

Crea un clasificador de imagenes en Python que:

  1. Reciba una imagen (path o URL)
  2. Use Gemini Vision para analizarla
  3. Devuelva: categoría, confianza, descripción
  4. Soporte categorías personalizadas

Lo que la IA creará

import google.generativeai as genai
from PIL import Image
import requests
from io import BytesIO
import os
import json

genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-1.5-flash")

def load_image(source: str) -> Image.Image:
    """Cargar imagen desde path o URL"""
    if source.startswith("http"):
        response = requests.get(source)
        return Image.open(BytesIO(response.content))
    return Image.open(source)

def classify(
    image_source: str,
    categories: list[str] = None
) -> dict:
    """Clasificar imagen"""
    image = load_image(image_source)

    if categories:
        cat_list = ", ".join(categories)
        prompt = f"""Analiza esta imagen y clasifícala en UNA de estas categorías: {cat_list}

Responde en JSON:
{{
  "category": "categoría elegida",
  "confidence": 0.0 a 1.0,
  "description": "descripción breve",
  "objects": ["objetos detectados"]
}}"""
    else:
        prompt = """Analiza esta imagen.

Responde en JSON:
{
  "category": "categoría general",
  "confidence": 0.0 a 1.0,
  "description": "descripción breve",
  "objects": ["objetos detectados"]
}"""

    response = model.generate_content([prompt, image])
    text = response.text.strip().strip("```json").strip("```")
    return json.loads(text)

# Ejemplos de uso
result = classify("gato.jpg")
print(f"Categoría: {result['category']}")
print(f"Confianza: {result['confidence']:.0%}")
print(f"Descripción: {result['description']}")

# Con categorías personalizadas
result = classify(
    "foto.jpg",
    categories=["comida", "paisaje", "persona", "animal", "objeto"]
)

Variante: Clasificación batch

def classify_batch(images: list[str], categories: list[str]) -> list[dict]:
    """Clasificar múltiples imágenes"""
    results = []
    for img in images:
        try:
            result = classify(img, categories)
            result["source"] = img
            results.append(result)
        except Exception as e:
            results.append({"source": img, "error": str(e)})
    return results

Siguiente nivel

Asistente de Voz