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.
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:
pip install --upgrade potato-annotationY 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
pip install ultralytics opencv-pythonConfiguración
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: trueFormato de Datos
Crea data/images.json en formato JSONL (un objeto JSON por línea):
{"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
| Modelo | Tamaño | Velocidad | Precisión | Mejor Para |
|---|---|---|---|---|
yolov8n.pt | 6 MB | Más rápido | Menor | Prototipado rápido |
yolov8s.pt | 22 MB | Rápido | Buena | Cargas de trabajo equilibradas |
yolov8m.pt | 50 MB | Media | Mejor | Uso general |
yolov8l.pt | 84 MB | Más lento | Alta | Cuando la precisión importa |
yolov8x.pt | 131 MB | El más lento | La más alta | Má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:
ai_config:
model: "yolo-world"
confidence_threshold: 0.3Ajuste de la Detección
Si YOLO no detecta objetos, baja el umbral de confianza:
ai_config:
confidence_threshold: 0.3 # More detections, more false positivesSi obtienes demasiados falsos positivos, súbelo:
ai_config:
confidence_threshold: 0.7 # Fewer detections, higher precisionOpció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
# 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:7bConfiguración
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: trueModelos Soportados
| Modelo | Parámetros | Fortalezas |
|---|---|---|
llava:7b | 7B | Rápido, buena comprensión general |
llava:13b | 13B | Mejor precisión |
llava-llama3 | 8B | Razonamiento fuerte |
bakllava | 7B | Buen detalle visual |
llama3.2-vision:11b | 11B | Último Llama con visión |
qwen2.5-vl:7b | 7B | Fuerte multilingüe + visión |
moondream | 1.8B | Muy 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
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 detailEstablece tu clave de API:
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ónhigh-- Resolución completa, mejor para encontrar objetos pequeñosauto-- 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
ai_support:
enabled: true
endpoint_type: "anthropic_vision"
ai_config:
api_key: "${ANTHROPIC_API_KEY}"
model: "claude-sonnet-4-20250514"
max_tokens: 1024export 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:
ai_support:
enabled: true
features:
detection: trueEl 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:
ai_support:
enabled: true
features:
pre_annotate: trueModo de Clasificación
Clasifica una región seleccionada o la imagen completa, devolviendo una etiqueta sugerida con una puntuación de confianza:
ai_support:
enabled: true
features:
classification: trueModo de Pistas
Proporciona texto de orientación sin dar la respuesta. Bueno para entrenar nuevos anotadores:
ai_support:
enabled: true
features:
hint: trueEl Flujo de Trabajo Aceptar/Rechazar
Cuando un anotador hace clic en un botón de asistencia de IA, las sugerencias aparecen como superposiciones punteadas:
- Aceptar una sugerencia -- Doble clic en la superposición punteada para convertirla en una anotación real
- Rechazar una sugerencia -- Clic derecho en la superposición para descartarla
- Aceptar todas -- Haz clic en "Accept All" en la barra de herramientas para aceptar todas las sugerencias a la vez
- 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:
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 sampleEl 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:
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.5O usa un modelo de visión en la nube junto a un modelo de texto local:
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:
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: trueDatos de ejemplo (data/product_photos.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
- 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
- Combina el endpoint con tu tarea -- YOLO para detección precisa, VLLMs para clasificación y comprensión
- Ajusta los umbrales de confianza -- Comienza en 0.5 y ajusta basándote en el equilibrio de falsos positivos/negativos que observes
- Usa pistas para entrenamiento de anotadores -- El modo de pistas guía a los anotadores sin sesgarlos hacia una respuesta específica
- 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
- 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:
curl http://localhost:11434/api/tags # Check Ollama is running
ollama list # Check installed modelsRespuesta lenta de APIs en la nube
Habilita el caché para que la misma imagen no se analice dos veces:
ai_support:
cache_config:
disk_cache:
enabled: true
path: "ai_cache/visual_cache.json"Próximos Pasos
- Lee la documentación completa de Soporte de IA Visual para detalles de referencia de API
- Configura visualización de instancias para mostrar imágenes junto a otros tipos de contenido
- Explora el soporte de IA basado en texto para pistas y resaltado de palabras clave
Documentación completa en /docs/features/visual-ai-support.