Skip to content
Guides11 min read

Uso de IA Visual para Acelerar la Anotación de Imágenes y Video

Configura detección de objetos, pre-anotación y clasificación asistida por IA para tareas de imágenes y video con YOLO, Ollama, OpenAI y Claude.

Potato Team·

Uso de IA Visual para Acelerar la Anotación de Imágenes y Video

Potato 2.1 introduce soporte de IA visual que lleva asistencia de IA directamente a los flujos de trabajo de anotación de imágenes y video. En lugar de anotar cada cuadro delimitador desde cero, puedes hacer que YOLO detecte objetos automáticamente y luego revisar sus sugerencias, o pedirle a un modelo de visión-lenguaje que clasifique imágenes y explique su razonamiento.

Esta guía explica cómo configurar cada endpoint de IA visual, configurar los diferentes modos de asistencia y combinar la IA visual con las funciones de IA basadas en texto de Potato.

Lo Que Aprenderás

  • Configurar YOLO para detección rápida de objetos local
  • Ejecutar modelos de Ollama Vision para comprensión local de imágenes
  • Usar las APIs de visión en la nube de OpenAI y Anthropic
  • Configurar los modos de detección, pre-anotación, clasificación y pistas
  • Combinar endpoints de IA visual y de texto en un solo proyecto
  • El flujo de trabajo de aceptar/rechazar para revisar sugerencias de IA

Requisitos Previos

Necesitarás Potato 2.1.0 o posterior:

bash
pip install --upgrade potato-annotation

Y dependiendo de qué endpoint elijas, necesitarás uno de estos:

  • YOLO: pip install ultralytics opencv-python
  • Ollama: Instalar desde ollama.ai y descargar un modelo de visión
  • OpenAI: Una clave de API con acceso a GPT-4o
  • Anthropic: Una clave de API con acceso a modelos de visión de Claude

Opción 1: YOLO para Detección de Objetos

YOLO es la mejor opción cuando necesitas detección rápida y precisa de cuadros delimitadores ejecutándose completamente en tu máquina local. Sobresale en la detección de objetos comunes (personas, coches, animales, muebles) y puede procesar imágenes en milisegundos.

Configuración

bash
pip install ultralytics opencv-python

Configuración

yaml
annotation_task_name: "Object Detection with YOLO"
 
data_files:
  - data/images.json
 
item_properties:
  id_key: id
  text_key: image_url
 
instance_display:
  fields:
    - key: image_url
      type: image
      display_options:
        max_width: 800
        zoomable: true
 
annotation_schemes:
  - annotation_type: image_annotation
    name: objects
    description: "Detect and label objects"
    source_field: "image_url"
    tools:
      - bbox
    labels:
      - name: "person"
        color: "#FF6B6B"
      - name: "car"
        color: "#4ECDC4"
      - name: "dog"
        color: "#45B7D1"
      - name: "cat"
        color: "#96CEB4"
 
    ai_support:
      enabled: true
      features:
        detection: true
        pre_annotate: true
        hint: true
 
ai_support:
  enabled: true
  endpoint_type: "yolo"
  ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5
    iou_threshold: 0.45
 
output_annotation_dir: "annotation_output/"
user_config:
  allow_all_users: true

Formato de Datos

Crea data/images.json en formato JSONL (un objeto JSON por línea):

json
{"id": "img_001", "image_url": "images/street_scene_1.jpg"}
{"id": "img_002", "image_url": "images/park_photo.jpg"}
{"id": "img_003", "image_url": "https://example.com/images/office.jpg"}

Elección de un Modelo YOLO

ModeloTamañoVelocidadPrecisiónMejor Para
yolov8n.pt6 MBMás rápidoMenorPrototipado rápido
yolov8s.pt22 MBRápidoBuenaCargas de trabajo equilibradas
yolov8m.pt50 MBMediaMejorUso general
yolov8l.pt84 MBMás lentoAltaCuando la precisión importa
yolov8x.pt131 MBEl más lentoLa más altaMáxima precisión

Para detectar objetos que no están en las clases integradas de YOLO, usa YOLO-World para detección de vocabulario abierto:

yaml
ai_config:
  model: "yolo-world"
  confidence_threshold: 0.3

Ajuste de la Detección

Si YOLO no detecta objetos, baja el umbral de confianza:

yaml
ai_config:
  confidence_threshold: 0.3  # More detections, more false positives

Si obtienes demasiados falsos positivos, súbelo:

yaml
ai_config:
  confidence_threshold: 0.7  # Fewer detections, higher precision

Opción 2: Ollama Vision para VLLMs Locales

Ollama Vision te da el poder de los modelos de visión-lenguaje ejecutándose localmente. A diferencia de YOLO, estos modelos pueden entender el contexto de la imagen, clasificar escenas y generar explicaciones textuales -- todo sin enviar datos a una API en la nube.

Configuración

bash
# Install Ollama
curl -fsSL https://ollama.ai/install.sh | sh
 
# Pull a vision model
ollama pull llava
 
# Or for better performance:
ollama pull qwen2.5-vl:7b

Configuración

yaml
annotation_task_name: "Image Classification with Ollama Vision"
 
data_files:
  - data/images.json
 
item_properties:
  id_key: id
  text_key: image_url
 
instance_display:
  fields:
    - key: image_url
      type: image
      display_options:
        max_width: 600
        zoomable: true
 
annotation_schemes:
  - annotation_type: radio
    name: scene_type
    description: "What type of scene is shown?"
    labels:
      - indoor
      - outdoor_urban
      - outdoor_nature
      - aerial
      - underwater
 
    ai_support:
      enabled: true
      features:
        hint: true
        classification: true
 
ai_support:
  enabled: true
  endpoint_type: "ollama_vision"
  ai_config:
    model: "llava:latest"
    base_url: "http://localhost:11434"
    max_tokens: 500
    temperature: 0.1
 
output_annotation_dir: "annotation_output/"
user_config:
  allow_all_users: true

Modelos Soportados

ModeloParámetrosFortalezas
llava:7b7BRápido, buena comprensión general
llava:13b13BMejor precisión
llava-llama38BRazonamiento fuerte
bakllava7BBuen detalle visual
llama3.2-vision:11b11BÚltimo Llama con visión
qwen2.5-vl:7b7BFuerte multilingüe + visión
moondream1.8BMuy rápido, ligero

Opción 3: OpenAI Vision

OpenAI Vision proporciona comprensión de imágenes de alta calidad a través de GPT-4o. La mejor opción cuando necesitas el modelo de visión más capaz y no te importan los costos de API en la nube.

Configuración

yaml
ai_support:
  enabled: true
  endpoint_type: "openai_vision"
  ai_config:
    api_key: "${OPENAI_API_KEY}"
    model: "gpt-4o"
    max_tokens: 1000
    detail: "auto"  # "low" for faster/cheaper, "high" for detail

Establece tu clave de API:

bash
export OPENAI_API_KEY="sk-..."

El parámetro detail controla la resolución de imagen enviada a la API:

  • low -- Más rápido y barato, bueno para clasificación
  • high -- Resolución completa, mejor para encontrar objetos pequeños
  • auto -- Dejar que la API decida

Opción 4: Anthropic Vision

Las capacidades de visión de Claude son fuertes para entender el contexto de imágenes y proporcionar explicaciones detalladas.

Configuración

yaml
ai_support:
  enabled: true
  endpoint_type: "anthropic_vision"
  ai_config:
    api_key: "${ANTHROPIC_API_KEY}"
    model: "claude-sonnet-4-20250514"
    max_tokens: 1024
bash
export ANTHROPIC_API_KEY="sk-ant-..."

Modos de Asistencia de IA

Cada endpoint de IA visual soporta diferentes modos de asistencia. Habilita solo los que necesites por esquema de anotación.

Modo de Detección

Encuentra objetos que coinciden con tus etiquetas configuradas y los muestra como superposiciones de cuadros delimitadores punteados:

yaml
ai_support:
  enabled: true
  features:
    detection: true

El anotador hace clic en "Detect", y las sugerencias de IA aparecen como superposiciones punteadas en la imagen. Doble clic para aceptar, clic derecho para rechazar.

Modo de Pre-anotación (Auto)

Detecta automáticamente todos los objetos y crea sugerencias en una sola pasada. Ideal para iniciar grandes conjuntos de datos:

yaml
ai_support:
  enabled: true
  features:
    pre_annotate: true

Modo de Clasificación

Clasifica una región seleccionada o la imagen completa, devolviendo una etiqueta sugerida con una puntuación de confianza:

yaml
ai_support:
  enabled: true
  features:
    classification: true

Modo de Pistas

Proporciona texto de orientación sin dar la respuesta. Bueno para entrenar nuevos anotadores:

yaml
ai_support:
  enabled: true
  features:
    hint: true

El Flujo de Trabajo Aceptar/Rechazar

Cuando un anotador hace clic en un botón de asistencia de IA, las sugerencias aparecen como superposiciones punteadas:

  1. Aceptar una sugerencia -- Doble clic en la superposición punteada para convertirla en una anotación real
  2. Rechazar una sugerencia -- Clic derecho en la superposición para descartarla
  3. Aceptar todas -- Haz clic en "Accept All" en la barra de herramientas para aceptar todas las sugerencias a la vez
  4. Limpiar todas -- Haz clic en "Clear" para descartar todas las sugerencias

Esto mantiene a los anotadores en control mientras reduce el trabajo manual de dibujar cuadros desde cero.

Anotación de Video con IA Visual

La IA visual también funciona con tareas de anotación de video. Puedes habilitar detección de escenas, detección de fotogramas clave y seguimiento de objetos:

yaml
annotation_schemes:
  - annotation_type: video_annotation
    name: scenes
    description: "Segment this video into scenes"
    mode: segment
    labels:
      - name: "intro"
        color: "#4ECDC4"
      - name: "main_content"
        color: "#FF6B6B"
      - name: "outro"
        color: "#45B7D1"
 
    ai_support:
      enabled: true
      features:
        scene_detection: true
        pre_annotate: true
        hint: true
 
ai_support:
  enabled: true
  endpoint_type: "ollama_vision"
  ai_config:
    model: "llava:latest"
    max_frames: 10  # Number of frames to sample

El parámetro max_frames controla cuántos fotogramas la IA muestrea del video para el análisis. Más fotogramas significa mejor precisión pero procesamiento más lento.

Combinación de Endpoints de IA Visual y de Texto

Si tu proyecto tiene tanto anotación de texto como de imagen, puedes configurar endpoints separados para cada uno. Usa un modelo optimizado para texto para pistas y palabras clave, y un modelo de visión para detección:

yaml
ai_support:
  enabled: true
 
  # Text AI for radio buttons, text schemes, etc.
  endpoint_type: "ollama"
  ai_config:
    model: "llama3.2"
    include:
      all: true
 
  # Visual AI for image/video schemes
  visual_endpoint_type: "yolo"
  visual_ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5

O usa un modelo de visión en la nube junto a un modelo de texto local:

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama"
  visual_endpoint_type: "openai_vision"
  ai_config:
    model: "llama3.2"
  visual_ai_config:
    api_key: "${OPENAI_API_KEY}"
    model: "gpt-4o"

Ejemplo Completo: Anotación de Fotos de Productos

Aquí hay una configuración lista para producción para anotar fotos de productos con detección YOLO y pistas de IA basadas en texto:

yaml
annotation_task_name: "Product Photo Annotation"
 
data_files:
  - data/product_photos.json
 
item_properties:
  id_key: sku
  text_key: photo_url
 
instance_display:
  layout:
    direction: horizontal
    gap: 24px
  fields:
    - key: photo_url
      type: image
      label: "Product Photo"
      display_options:
        max_width: 600
        zoomable: true
    - key: product_description
      type: text
      label: "Product Details"
 
annotation_schemes:
  - annotation_type: image_annotation
    name: product_regions
    description: "Draw boxes around products and defects"
    source_field: "photo_url"
    tools:
      - bbox
    labels:
      - name: "product"
        color: "#4ECDC4"
      - name: "defect"
        color: "#FF6B6B"
      - name: "label"
        color: "#45B7D1"
      - name: "packaging"
        color: "#96CEB4"
 
    ai_support:
      enabled: true
      features:
        detection: true
        pre_annotate: true
 
  - annotation_type: radio
    name: photo_quality
    description: "Is this photo suitable for the product listing?"
    labels:
      - Approved
      - Needs editing
      - Reshoot required
 
  - annotation_type: multiselect
    name: quality_issues
    description: "Select any issues present"
    labels:
      - Blurry
      - Poor lighting
      - Wrong angle
      - Background clutter
      - Color inaccurate
 
ai_support:
  enabled: true
  endpoint_type: "ollama"
  visual_endpoint_type: "yolo"
 
  ai_config:
    model: "llama3.2"
    include:
      all: true
 
  visual_ai_config:
    model: "yolov8m.pt"
    confidence_threshold: 0.5
 
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
user_config:
  allow_all_users: true

Datos de ejemplo (data/product_photos.json):

json
{"sku": "SKU-001", "photo_url": "images/products/laptop_front.jpg", "product_description": "15-inch laptop, silver finish"}
{"sku": "SKU-002", "photo_url": "images/products/headphones_side.jpg", "product_description": "Over-ear wireless headphones, black"}
{"sku": "SKU-003", "photo_url": "images/products/backpack_full.jpg", "product_description": "40L hiking backpack, navy blue"}

Consejos para la Anotación con IA Visual

  1. Comienza con pre-anotación para grandes conjuntos de datos -- Usa el botón Auto para generar sugerencias para todos los objetos, luego haz que los anotadores revisen y corrijan en lugar de dibujar desde cero
  2. Combina el endpoint con tu tarea -- YOLO para detección precisa, VLLMs para clasificación y comprensión
  3. Ajusta los umbrales de confianza -- Comienza en 0.5 y ajusta basándote en el equilibrio de falsos positivos/negativos que observes
  4. Usa pistas para entrenamiento de anotadores -- El modo de pistas guía a los anotadores sin sesgarlos hacia una respuesta específica
  5. Combina endpoints -- Un endpoint visual YOLO para detección más un endpoint de texto Ollama para pistas te da lo mejor de ambos mundos
  6. Cachea los resultados de IA -- Habilita el caché en disco para evitar re-ejecutar detección en las mismas imágenes

Solución de Problemas

"No visual AI endpoint configured"

Asegúrate de que ai_support.enabled sea true y hayas establecido un endpoint_type que soporte visión: yolo, ollama_vision, openai_vision o anthropic_vision.

YOLO no detecta tus objetos

Las clases integradas de YOLO cubren 80 objetos comunes. Si tus etiquetas no coinciden con los nombres de clase de YOLO, prueba YOLO-World para detección de vocabulario abierto, o baja el confidence_threshold.

Ollama devuelve errores

Verifica que Ollama está ejecutándose y has descargado un modelo de visión:

bash
curl http://localhost:11434/api/tags  # Check Ollama is running
ollama list                           # Check installed models

Respuesta lenta de APIs en la nube

Habilita el caché para que la misma imagen no se analice dos veces:

yaml
ai_support:
  cache_config:
    disk_cache:
      enabled: true
      path: "ai_cache/visual_cache.json"

Próximos Pasos


Documentación completa en /docs/features/visual-ai-support.