Skip to content
BotServBotServ
OllamaVisionAPIImágenesLlava

Ollama Vision API

Análisis de imágenes con Ollama Vision API. Usa Base64, URLs de imágenes, Llava y modelos Vision.

S

schutzgeist

3 min read
Ollama Vision API

API Vision de Ollama

Qué cubre este artículo sobre la API Vision de Ollama

  • Cómo procesa Ollama las imágenes.
  • Qué modelos Vision están disponibles.
  • Cómo enviar imágenes como Base64 o URL.
  • Ejemplo práctico en Python.
  • Consejos para mejorar el análisis de imágenes.

Introducción: API Vision de Ollama

Ollama soporta modelos multimodales que entienden imágenes además de texto. Esto permite analizar, describir, clasificar o resumir imágenes. La API está inspirada en OpenAI y permite enviar imágenes como URL o datos codificados en Base64. Los modelos Vision suelen ser más grandes y lentos que los modelos de solo texto, pero resultan extremadamente útiles para muchas tareas.

Este artículo muestra cómo usar la API Vision de Ollama.

Conceptos clave

  • Modelo Vision: Modelo que puede procesar imágenes.
  • Llava: Modelo Vision de código abierto ampliamente conocido.
  • Base64: Codificación de datos binarios como texto.
  • Multimodal: Múltiples tipos de entrada como texto e imagen.
  • Embedding: Representación vectorial de una imagen.
  • Image token: Token especial para contenido de imagen.
  • Clip: Modelo para vincular imagen y texto.
  • OCR: Reconocimiento de texto en imágenes.

Modelos Vision disponibles

  • llava
  • llava-llama3
  • bakllava
  • moondream (muy pequeño)
  • granite3.2-vision

Cada modelo tiene diferentes tamaño, velocidad y calidad.

Ejemplo en Python con Base64

import requests
import base64

url = "http://localhost:11434/api/chat"

with open("bild.jpg", "rb") as f:
    image_base64 = base64.b64encode(f.read()).decode("utf-8")

payload = {
    "model": "llava",
    "messages": [
        {
            "role": "user",
            "content": "Beschreibe das Bild.",
            "images": [image_base64]
        }
    ],
    "stream": False
}

response = requests.post(url, json=payload)
print(response.json()["message"]["content"])

Con curl

curl http://localhost:11434/api/chat -d '{
  "model": "llava",
  "messages": [{
    "role": "user",
    "content": "Was ist auf dem Bild?",
    "images": ["<base64-encoded-image>"]
  }],
  "stream": false
}'

Endpoint compatible con OpenAI

import requests

url = "http://localhost:11434/v1/chat/completions"

payload = {
    "model": "llava",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Beschreibe das Bild."},
                {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<base64>"}}
            ]
        }
    ]
}

response = requests.post(url, json=payload)
print(response.json()["choices"][0]["message"]["content"])

URLs de imágenes

Ollama no puede cargar imágenes directamente desde URLs públicas. La aplicación debe descargar la imagen y codificarla en Base64:

import requests, base64

image_url = "https://example.com/bild.jpg"
img = requests.get(image_url).content
b64 = base64.b64encode(img).decode("utf-8")

Elegir el modelo

ModeloTamañoUso
moondreammuy pequeñoDescripciones rápidas
llava-llama37B/13BBuena calidad
bakllava7BReconocimiento mejorado
granite3.2-visionvariableModelo de IBM

Consejos para un buen análisis de imágenes

  • No reducir demasiado el tamaño de las imágenes.
  • Formular preguntas claras.
  • Probar un modelo por caso de uso.
  • Usar alta calidad de imagen para OCR.
  • Normalmente no es posible enviar múltiples imágenes por solicitud.
  • Tener en cuenta la longitud del contexto, ya que las imágenes consumen muchos tokens.

Notas sobre VRAM

Los modelos Vision necesitan más VRAM que los modelos de texto. Un modelo Vision de 7B con Q4 puede consumir 6-8 GB de VRAM. Las imágenes más grandes requieren procesamiento adicional.

Solución de problemas

  • El modelo no responde: Asegúrate de que el modelo Vision esté cargado.
  • Imagen demasiado grande: Redimensionar o comprimir.
  • Formato no soportado: Preferir JPEG o PNG.
  • OOM: Reducir el tamaño del modelo o la resolución de la imagen.
  • Formato de endpoint incorrecto: El endpoint compatible con OpenAI usa /v1/chat/completions.

Enlaces y referencias adicionales

FAQ: API Vision de Ollama

¿Puede Ollama cargar imágenes desde URLs? No, la aplicación debe descargar la imagen y codificarla en Base64.

¿Qué modelo Vision es el mejor? Llava-llama3 o Bakllava para buena calidad, Moondream para rapidez.

¿Cuánto VRAM necesita un modelo Vision? Más que un modelo de solo texto. 7B con Q4 puede consumir 6-8 GB.

¿Qué formatos de imagen funcionan? Generalmente JPEG y PNG.

¿Puedo enviar múltiples imágenes? La API de Ollama típicamente permite una imagen por mensaje.

Fuentes y lecturas adicionales

Resumen: API Vision de Ollama

La API Vision de Ollama permite analizar imágenes con modelos multimodales locales. Las imágenes se envían como Base64, ya sea a través del endpoint de chat de Ollama o del endpoint compatible con OpenAI. Modelos Vision como Llava, Bakllava o Moondream ofrecen diferentes niveles de calidad y velocidad. Prestando atención al tamaño de la imagen, VRAM y selección del modelo, puedes analizar imágenes de forma fiable en local.

Volver al blog
Share:

Entradas relacionadas