JoyCaption, TagGUI y AICaptionHelper
Compara tres herramientas de subtitulado por lotes para conjuntos de datos de Stable Diffusion
On this page
JoyCaption, TagGUI y AICaptionHelper
TL;DR
- JoyCaption Alpha 2 procesa 21 imágenes en 45 segundos en una 3090
- TagGUI funciona en GPU o CPU con interfaz gráfica
- AICaptionHelper ofrece integración interactiva con la API de OpenAI
Por qué es importante
Entrenar modelos de Stable Diffusion requiere conjuntos de datos de imágenes emparejadas con descripciones de texto precisas. Durante el entrenamiento, la descripción de texto se codifica en el modelo adjunta a los datos vectoriales, para que Stable Diffusion pueda usar ese texto (o variaciones) para generar imágenes más tarde. Escribir subtítulos manualmente para cientos o miles de imágenes es tedioso, y la calidad de esos subtítulos afecta directamente el comportamiento del modelo.
Los VLMs de código abierto recientes han cambiado la ecuación. Modelos como CogVLM y LLaVA ahora producen subtítulos con suficiente profundidad descriptiva para aprovechar las capacidades de codificación de texto de SDXL — capturando emociones, iluminación, composición y estado de ánimo en lugar de solo nombrar objetos. Han surgido dos enfoques de procesamiento por lotes: scripts CLI que se ejecutan sin supervisión sobre un directorio de imágenes, y aplicaciones de escritorio que permiten revisar y editar resultados de forma interactiva.
Tres soluciones principales
Herramienta | VRAM | Compatibilidad de modelos | Procesamiento por lotes | Fuente | Ideal para
|---------|------|-------------------------|----------------------|--------|----------
JoyCaption Alpha 2 | 19–22 GB (estándar); ~10 GB (bajo VRAM) | Llama-3.1 8B + SigLIP-So400M | Lote 8 en 3090; lote 16 en bajo VRAM | GitHub | Configuraciones con GPU TagGUI | GPU o CPU | BLIP-2, LLaVA, CogVLM, otros vía Hugging Face | Subtitulado basado en GUI | GitHub | Hardware mixto AICaptionHelper | No documentado | API de OpenAI (opcional) | Por imagen, interactivo | Civitai | Integración con OpenAI Las tres herramientas difieren en coste, flujo de trabajo y requisitos de hardware. JoyCaption y TagGUI son gratuitas y de código abierto, mientras que AICaptionHelper se ejecuta en el navegador con costes opcionales de API de OpenAI. Para flujos de trabajo relacionados, consulta construcción automatizada de conjuntos de datos y configuración de benchmark ComfyUI.
JoyCaption Alpha 2
Arquitectura y configuración
JoyCaption Alpha 2 se ejecuta en el modelo fancyfeast/llama-joycaption-alpha-two-hf-llava alojado en Hugging Face. El modelo combina meta-llama/Llama-3.1-8B-Instruct como columna vertebral del lenguaje con google/siglip-so400m-patch14-384 como codificador de visión. El script de lote usa LlavaForConditionalGeneration de Hugging Face Transformers.
La configuración requiere clonar el repositorio joy-caption-batch y ejecutar el script de lote (batch-alpha2.py). El script procesa imágenes desde un subdirectorio /input por defecto, configurable con --input-dir.
Para flujos de trabajo relacionados, consulta flujo de trabajo de consistencia de personajes.
Rendimiento
En una 3090 con 24 GB de VRAM, lote 8 procesa 21 imágenes en unos 45 segundos, frente a 3 minutos con tamaño de lote 1 — aproximadamente una mejora de 4× (fuente). Los parámetros de muestreo por defecto son temperatura 0.5 y top-k 10 con top-p 0.9.
El modo estándar necesita 19–22 GB de VRAM. La versión Pre-Alpha ofrece un modo de bajo VRAM que carga una variante cuantizada llama3-8b-bnb-4bit de Unsloth, reduciendo el requisito a unos 10 GB. El modo de bajo VRAM no está disponible en Alpha 2. Con Pre-Alpha en modo de bajo VRAM en una 3090, el tamaño de lote puede llegar hasta 16.
Selección de prompts
El script incluye varias plantillas de prompt integradas. La predeterminada — "Please provide a detailed description of the image" — produce subtítulos en prosa larga. Otras opciones incluyen descripciones cortas, prompts de Stable Diffusion, prompts de MidJourney, listas de etiquetas estilo Booru, y subtítulos para redes sociales. También puedes cargar un archivo JSON personalizado con entradas ponderadas.
Entrada/Salida de archivos
El script escribe archivos de subtítulos .txt junto a cada imagen por defecto. El formato de salida puede ser txt o json. Marcadores adicionales incluyen --recursive (procesar subcarpetas), --prepend-string y --append-string (envolver cada subtítulo), y --overwrite (reemplazar archivos existentes). Consulta fpgaminer/joycaption para el script de lote original.
TagGUI
Compatibilidad de modelos
TagGUI es una aplicación de escritorio multiplataforma para etiquetado y subtitulado de conjuntos de datos de imágenes. Se conecta a centros de modelos de Hugging Face y soporta múltiples backends de subtitulado incluyendo BLIP-2, LLaVA y CogVLM — este último detallado en la ficha del modelo THUDM/cogvlm2-llama3-chat-19B. La reseña de usuario en Civitai destaca la calidad de subtitulado detallado de CogVLM para conjuntos de datos de 90 imágenes.
CogVLM2 maneja hasta 8K tokens e imágenes de hasta 1344×1344 píxeles, con una puntuación de 84.2 en TextVQA. Los usuarios pueden apuntar TagGUI a un directorio de modelo local en Configuración para evitar descargas repetidas. Las primeras cargas de modelo tardan varios minutos; las subsiguientes son mucho más rápidas.
Subtitulado por lotes
Selecciona imágenes en la lista de imágenes, elige un modelo en el panel Auto-Captioner y haz clic en Iniciar Auto-Subtitulado. La aplicación descarga modelos en el primer uso y los almacena en caché localmente. El campo de prompt acepta variables de plantilla: {tags} inserta etiquetas existentes, {name} inserta el nombre del archivo, y {directory} inserta el nombre de la carpeta. También puedes establecer palabras a desalentar u obligar en la salida.
Gestión de etiquetas
TagGUI lee archivos .txt que coinciden con los nombres de archivo de las imágenes y guarda automáticamente cada edición. El cuadro de filtrado soporta prefijos: tag: para coincidencia de etiquetas, caption: para búsqueda en texto de subtítulos, name: para patrones de nombre de archivo, y path: para rutas completas de directorio. Los filtros numéricos también funcionan — tags:>10 encuentra imágenes con más de 10 etiquetas; tokens:<75 encuentra subtítulos con menos de 75 tokens.
Combinados con operadores AND, OR y NOT más paréntesis para precedencia, esto permite a los usuarios construir consultas como tag:cat AND tokens:<=75 para encontrar imágenes de gatos con etiquetas cortas. Atajos de teclado aceleran el trabajo en masa: Ctrl+J salta a la primera imagen sin etiquetar, Ctrl+R abre Buscar y Reemplazar, y Ctrl+B abre Reordenar Etiquetas en Lote. Para consistencia de personajes durante el entrenamiento, consulta flujo de trabajo de consistencia de personajes.
AICaptionHelper
AICaptionHelper se aloja en Civitai. Combina palabras clave proporcionadas por el usuario con refinamiento opcional vía API de OpenAI para producir subtítulos. Los usuarios describen sus imágenes en campos estructurados — sujeto, peinado, actividad, ubicación, expresiones — y la herramienta ensambla un subtítulo a partir de esas entradas. Una clave de API de OpenAI es opcional; sin ella, la herramienta guarda exactamente lo que escribes. Con una, la API de OpenAI refina ortografía, gramática y fluidez del lenguaje natural.
No se encontró repositorio independiente de GitHub ni documentación independiente más allá del artículo de Civitai, por lo que los detalles sobre su funcionamiento interno se limitan a esa fuente.
Errores comunes y soluciones
Síntoma | Causa | Solución | Fuente
|---------|-------|--------|--------
JoyCaption Alpha 2 no inicia en GPU | Alpha 2 requiere 19–22 GB de VRAM | Usa Pre-Alpha con LOW_VRAM_MODE=true (~10 GB requeridos) | README de GitHub Salida de etiquetas Booru en bucle en Alpha 2 | El modelo carece de penalización de repetición | Aún no corregido; se necesita una penalización de repetición | Civitai TagGUI no encuentra mis imágenes | Las etiquetas se cargan desde archivos .txt con nombres coincidentes | Verifica convenciones de nombres y carga el directorio vía Archivo > Cargar Directorio | README de GitHub El script JoyCaption no localiza CUDA | CUDA no está en PATH o GPU incorrecta | Establece CUDA_VISIBLE_DEVICES="0" cerca del inicio del script | README de GitHub
Preguntas frecuentes
¿Cuánta VRAM necesita JoyCaption? Alpha 2 necesita 19–22 GB. Pre-Alpha con modo de bajo VRAM necesita unos 10 GB (fuente).
¿Puedo procesar imágenes por lotes con JoyCaption? Sí. Coloca imágenes en /input y ejecuta el script de lote. Configura el tamaño de lote con --batch-processing-count. En una 3090, lote 8 da aproximadamente 4× el rendimiento de lote 1.
¿Qué modelos soporta TagGUI? BLIP-2, LLaVA, CogVLM y otros disponibles a través de Hugging Face. La generación en GPU y CPU están ambas soportadas (fuente).
¿Funciona TagGUI sin conexión? Sí, tras la primera descarga del modelo. Los modelos se almacenan en caché localmente.
¿Qué formatos de imagen funcionan con estas herramientas? JoyCaption soporta JPG, JPEG, PNG, BMP, GIF, TIFF y WebP. TagGUI tiene compatibilidad de formatos similar a través de PIL/Pillow.