Captioning 2026: JoyCaption, WD Tagger y etiquetado manual
Compara los 12 estilos de caption de JoyCaption Beta One y el control de palabras con el batch ONNX de WD Tagger y el etiquetado manual escalable.
On this page
Captioning 2026: JoyCaption, WD Tagger y etiquetado manual
TL;DR
- JoyCaption Beta One ofrece 12 estilos de caption (Descriptivo, Directo, SD Prompt, tags de Danbooru, etc.) y control de cantidad de palabras de 20 a 260, con ~17 GB de VRAM (bfloat16) y opciones de cuantización de 8 bits y 4 bits vía ComfyUI.
- WD Tagger v3 (ViT o SwinV2) usa ONNX con una dimensión de lote no fija, así que puedes procesar miles de imágenes en una sola llamada — ideal para pipelines de preparación de datasets.
- El etiquetado manual sigue siendo el techo de calidad: el flujo "Datasets for Dummies" de Civitai combina tags de booru con tags de IA y luego exige una revisión manual completa archivo por archivo.
Por qué importa la elección de la herramienta de captioning
Entrenar modelos de difusión vive o muere por la calidad del caption. Un modelo entrenado con captions vagos, repetitivos o autocensurados alucina, ignora prompts o rechaza conceptos NSFW. Los tres caminos habituales — captioning con VLM (JoyCaption), ensambles de taggers (WD Tagger) y humano en el bucle — cubren puntos distintos del triángulo velocidad/calidad/costo.
¿Qué es JoyCaption Beta One?
JoyCaption Beta One es un Visual Language Model (VLM) construido sobre la arquitectura LLaVA: un codificador de visión SigLIP2-SO400M fusionado con Llama-3.1-8B-Instruct. Los pesos tienen licencia Apache-2.0, gratis para descargar y ejecutar localmente. A diferencia de los VLM comerciales, fue entrenado con balance explícito SFW/NSFW y sin eufemismos del tipo "objeto cilíndrico".
Especificaciones clave:
| Parámetro | Valor | Source |
|---|---|---|
| LLM base | meta-llama/Llama-3.1-8B-Instruct | HF |
| Codificador de visión | google/siglip2-so400m-patch14-384 | HF |
| dtype nativo | bfloat16 | GitHub |
| VRAM (bfloat16) | ~17 GB | GitHub |
| Cuantización | 8 bits, 4 bits NF4 (doble cuantización) | ComfyUI nodes |
| Muestras de entrenamiento (Beta One) | 2,4 millones | Civitai |
| Rondas de DPO | 2 (10k + 20k pares de preferencia) | Civitai |
Métricas de rendimiento:
| Métrica | Valor | Source |
|---|---|---|
| Tasa de fallos (general) | 1,5% tras DPO | Civitai |
| Tasa de fallos (SD Prompt) | ~3% | Civitai |
| Precisión en evaluación humana | 67% (Beta One) | Civitai |
| Precisión en evaluación humana | 55% (Alpha Two, GPT-4o) | Civitai |
| Puntuación de tag augmentation | 6,51/10 (juez VLM SOTA) | Civitai |
Estilos de caption y control de longitud en JoyCaption
El nodo de ComfyUI expone 12 tipos de caption y un selector de longitud de doble modo.
Menú de tipos de caption
| Tipo de caption | Caso de uso |
|---|---|
| Descriptivo | Captions para datasets, texto alternativo |
| Descriptivo (casual) | Descripciones legibles para humanos |
| Directo | Punto intermedio |
| Stable Diffusion Prompt | Prompting directo (imita prompts de usuarios) |
| MidJourney | Modificadores artísticos estilo MJ |
| Lista de tags Danbooru | Entrenamiento estilo booru (category:tag) |
| Lista de tags e621 | Entrenamiento en formato e621 |
| Lista de tags Rule34 | Entrenamiento en formato Rule34 |
| Lista de tags tipo booru | Entrenamiento booru genérico |
| Crítica de arte | Análisis/retroalimentación |
| Ficha de producto | Captions para e-commerce |
| Post de redes sociales | Texto alternativo para Instagram/Twitter |
Control de longitud
El selector acepta etiquetas descriptivas (very short … very long) o cantidades exactas de palabras (20, 30, … 260 en pasos de 10). Esto permite llenar plantillas de forma determinista tanto para casos de uso casuales como técnicos.
WD Tagger v3: arquitecturas e inferencia por lotes
La guía "Datasets for Dummies" (Civitai 2217) describe un pipeline híbrido: extraer datos de boorus, etiquetar todo con WD Tagger (vía wd14_tagger.py de Kohya-ss o el Dataset Helper Colab de Holostrawberry), fusionar los conjuntos de tags y luego hacer una pasada de QA manual completa archivo por archivo. Los equipos paralelizan entre anotadores con una guía de estilo compartida. Estimación de tiempo: ~30–60 s por imagen.
La guía "Datasets for Dummies" describe un pipeline híbrido:
- Extraer de boorus — con tags previas, pero ruidosas.
- Etiquetar todo con IA — ejecutar WD Tagger (vía el script
wd14_taggerde Kohya-ss o el Dataset Helper Colab de Holostrawberry) incluso en imágenes de booru. - Fusionar conjuntos de tags — concatenación con PowerShell/Notepad++, deduplicar, ordenar alfabéticamente.
- Poner en lista negra tags de conteo/relación —
1girl,2girls,multiple girls,brother and sister, etc. (el tagger no sabe contar relaciones). - Pasada de QA manual — cada archivo, confirmar/eliminar/añadir tags. "Etiqueta todo: cada prenda, color de ojos, color de cabello."
Estimación de tiempo: ~30–60 s por imagen en revisión exhaustiva, pero produce los conjuntos de entrenamiento más limpios. Los equipos paralelizan la pasada manual entre anotadores.
Comparación de herramientas por lotes
| Herramienta | Modo por lotes | Rendimiento | Hardware | Mejor para |
|---|---|---|---|---|
| JoyCaption (vLLM) | API compatible con OpenAI, caché de prefijos | ~2–4 img/s | GPU de 24 GB+ | Contenido mixto, lenguaje natural |
| JoyCaption (ComfyUI) | Bucle de nodos, cuantización | ~1–2 img/s (4 bits) | GPU de 12–16 GB | Experimentación local, variedad de estilos |
| WD Tagger ONNX | Modelo ONNX con dimensión de lote no fija | 50–200 img/s | GPU de 8–16 GB / CPU | Extracción pura de tags, anime/booru |
Kohya-ss wd14_tagger.py | Recorrido de directorio, secuencial | ~5–10 img/s | GPU de 8 GB+ | Preparación directa de datasets, se integra con el entrenamiento |
| Manual (equipo) | Humanos en paralelo | ~1–2 img/min/persona | Cualquiera | Calidad crítica, datasets pequeños/medianos |
Nota: JoyCaption en vLLM (vllm serve fancyfeast/llama-joycaption-beta-one-hf-llava --max-model-len 4096 --enable-prefix-caching) es el único camino de nivel producción para captioning en lenguaje natural.
Errores comunes y soluciones
| Síntoma | Causa | Solución | Source |
|---|---|---|---|
| JoyCaption se queda sin memoria en 24 GB | Modelo bfloat16 + caché KV > VRAM | Usar cuantización 4 bits NF4 o vLLM con --gpu-memory-utilization 0.85 | GitHub |
| JoyCaption repite tags en modo Booru | Modelo pre-DPO o temperatura alta | Actualizar a Beta One; usar temperature=0.3, top_p=0.9 | Civitai |
| WD Tagger omite tags de personajes | Tags de personajes filtradas con <600 imágenes | Añadir personajes conocidos a mano; usar tag augmentation de JoyCaption | HF |
processor.apply_chat_template produce <bos> duplicado | Combinación incorrecta de plantilla de chat | Usar el fragmento de la tarjeta del modelo en HF: llamadas exactas de apply_chat_template y processor | HF |
| El tagger de Kohya-ss escribe saltos de línea duplicados | Artefacto del script de fusión en PowerShell | Ejecutar sed -i 's/\r\n/, /g' *.txt tras la fusión, luego deduplicar | GitHub |
FAQ
¿Qué estilo de caption para fine-tuning de SDXL? Directo o modo Stable Diffusion Prompt. Directo da lenguaje natural limpio (~50–100 palabras) que SDXL entiende bien. El modo SD Prompt imita prompts de usuarios, pero tiene una tasa de fallos del 3% y menor variedad tras el DPO.
¿Puede JoyCaption correr en 12 GB de VRAM? Sí, con cuantización 4 bits NF4 (preset "Maximum Savings" de ComfyUI). Espera ~1–2 img/s. Para cargas por lotes, usa vLLM en una tarjeta de 24 GB+.
¿Qué backbone de WD Tagger es mejor: ViT o SwinV2? SwinV2 (wd-swinv2-tagger-v3) logra un F1 mayor (0,4541 vs 0,4402) y tiene 7× más descargas. Para anime/booru, prefiere SwinV2; para fotorrealismo, ViT puede generalizar mejor. HF ViT | HF SwinV2
¿Cómo fusiono tags de booru con tags de IA sin duplicados? La guía de Civitai usa PowerShell para concatenar archivos .txt del mismo nombre de dos carpetas, luego un reemplazo con regex en Notepad++ de \r\n → , , y después deduplica. El wd14_tagger de Kohya-ss tiene --undesired_tags para filtrar tags específicas; la deduplicación se hace tras la fusión con herramientas de texto. Civitai | GitHub
¿JoyCaption soporta tag augmentation? Sí, Beta One añade tag augmentation: pasa tags de booru separadas por comas y el modelo las integra (evaluado en 6,51/10 por un VLM SOTA). Usa extra_options: "tag_augmentation: tag1, tag2, tag3" en el nodo de ComfyUI. ComfyUI nodes | Civitai
¿Cuál es la tasa de fallos de JoyCaption Beta One? 1,5% general tras el DPO (SD Prompt: ~3%). Los VLM comerciales (GPT-4o) reportan ~0,01%. Civitai
¿Puedo usar WD Tagger ONNX en CPU? Sí. El proveedor de CPU de onnxruntime funciona; el rendimiento es de ~5–10 img/s, sin GPU. Instala onnxruntime≥1.17.0 y carga el archivo .onnx. HF
¿Cómo evalúo la calidad del caption automáticamente? No existe una métrica automática estándar. El autor de JoyCaption usa una evaluación manual exigente: +1 por detalle preciso, −1 por detalle impreciso, normalizado contra un caption "perfecto" escrito por un humano. Beta One puntúa 67% vs Alpha Two 55% vs GPT-4o 55%. Civitai
Sources
- JoyCaption GitHub — architecture, VRAM, licensing
- JoyCaption ComfyUI nodes — caption types, length choices
- JoyCaption HF model card — specs, usage snippet
- WD ViT Tagger v3 model card — training data, validation, ONNX
- WD SwinV2 Tagger v3 model card — architecture, metrics
- WD v1-4 model card — legacy reference
- Kohya-ss sd-scripts README — wd14_tagger link
- Civitai: JoyCaption Beta One — training samples, DPO, benchmarks
- Civitai: Datasets for Dummies — hybrid tagging workflow
- Civitai: Prompts Creator — paid manual tagging tool