# Image Captioning with Vision Language Models (VLMs) A comprehensive guide to VLMs for image captioning, with model-specific details and best practices. ## Table of Contents - [What are VLMs?](#what-are-vlms) - [Why VLMs for Captioning?](#why-vlms-for-captioning) - [Captioning Approaches](#captioning-approaches) - [Booru Tags (Danbooru/Gelbooru)](#booru-tags-danboorugelbooru) - [e621 Tags](#e621-tags) - [Natural Language Captions](#natural-language-captions) - [Hybrid Approach](#hybrid-approach) - [Model-Specific Recommendations](#model-specific-recommendations) - [Best Practices](#best-practices) - [Model-Specific Details](#model-specific-details) - [Quick Tier](#quick-tier) - [Standard Tier](#standard-tier) - [Detailed Tier](#detailed-tier) - [Extreme (API) Tier](#extreme-api-tier) - [Prompting Techniques](#prompting-techniques) - [Vision Model Landscape](#vision-model-landscape) - [Vision Foundation Models](#vision-foundation-models) - [Contrastive Vision-Language Models](#contrastive-vision-language-models) - [Diffusion-Optimized Captioners](#diffusion-optimized-captioners) - [Tag-Based Models](#tag-based-models) - [Workflow Patterns](#workflow-patterns) - [Common Pitfalls](#common-pitfalls) --- ## What are VLMs? Vision Language Models (VLMs) are multimodal AI models that can process both images and text simultaneously. Unlike traditional image classifiers that output fixed labels, VLMs can: - Generate natural language descriptions of images - Answer questions about visual content - Follow specific formatting instructions - Understand context and nuance **Key architectures include:** - **Encoder-Decoder**: Image encoder (ViT) + Text decoder (LLM) - **Cross-Modal Fusion**: Deep integration of visual and text features - **Mixture of Experts (MoE)**: Specialized sub-networks for different tasks ## Why VLMs for Captioning? ### For Diffusion Model Training Automated descriptive captions enable training diffusion models on wider ranges of images without manual labeling. High-quality captions improve generation quality (ref: DALL-E 3 paper). ### Caption Quality Matters | Caption Quality | Training Result | |-----------------|-----------------| | Generic tags | Model learns surface patterns | | Detailed descriptions | Model learns relationships, composition, style | | Structured format | Consistent, predictable outputs | --- ## Captioning Approaches Different diffusion models expect different caption formats. Choosing the right approach is critical for training quality. ### Booru Tags (Danbooru/Gelbooru) Booru tags are structured metadata keywords from anime imageboard sites. They use a comma-separated format with underscores for multi-word concepts. **Format:** ``` 1girl, long_hair, purple_hair, blue_eyes, school_uniform, sitting, classroom, looking_at_viewer ``` **Tag Categories:** | Category | Examples | |----------|----------| | Subject | `1girl`, `1boy`, `multiple_girls`, `solo` | | Hair | `long_hair`, `blonde_hair`, `twintails`, `ponytail` | | Eyes | `blue_eyes`, `red_eyes`, `heterochromia` | | Clothing | `school_uniform`, `dress`, `armor`, `nude` | | Expression | `smile`, `blush`, `crying`, `angry` | | Pose | `sitting`, `standing`, `lying`, `from_behind` | | Setting | `outdoors`, `classroom`, `beach`, `night` | | Meta | `highres`, `absurdres`, `masterpiece`, `best_quality` | **Strengths:** - Precise control over specific attributes - Well-understood by anime models (SD1.5, Pony, NAI) - Extensive tag vocabularies available - Fast to generate with taggers (WD14, DeepDanbooru) **Limitations:** - Ambiguity: "1girl, 1boy, kimono" - who wears the kimono? - No relationship/composition information - Limited for realistic/photographic content - Newer models (Flux, SD3) prefer natural language **Tools:** - [WD14 Tagger](https://huggingface.co/SmilingWolf/wd-v1-4-vit-tagger-v2) - [DeepDanbooru](https://github.com/KichangKim/DeepDanbooru) - [a1111-sd-webui-tagcomplete](https://github.com/DominikDoom/a1111-sd-webui-tagcomplete) --- ### e621 Tags e621 uses a similar booru-style system but with vocabulary specific to furry/anthropomorphic content. **Format:** ``` anthro, female, canine, wolf, blue_fur, yellow_eyes, sitting, forest, solo ``` **Key Differences from Danbooru:** | Aspect | Danbooru | e621 | |--------|----------|------| | Focus | Anime/manga | Furry/anthro | | Species tags | Limited | Extensive (`canine`, `feline`, `dragon`) | | Body tags | Human-focused | Anthro-focused (`fur`, `scales`, `feathers`) | | Rating system | `safe`, `questionable`, `explicit` | `safe`, `questionable`, `explicit` | **Common Tag Categories:** | Category | Examples | |----------|----------| | Species | `canine`, `feline`, `dragon`, `avian`, `equine` | | Body | `fur`, `scales`, `feathers`, `anthro`, `feral` | | Colors | `blue_fur`, `white_scales`, `orange_feathers` | | Features | `wings`, `tail`, `horns`, `claws` | **Conversion:** Tools exist to convert between Danbooru and e621 tag formats: - [danbooru-e621-tag-list-processor](https://github.com/DraconicDragon/danbooru-e621-tag-list-processor) --- ### Natural Language Captions Full sentence descriptions that read like natural text. Preferred for newer models. **Format:** ``` A young woman with long purple hair and blue eyes sits at a wooden desk in a sunlit classroom. She wears a navy school uniform with a red ribbon and looks directly at the viewer with a gentle smile. Soft afternoon light streams through the windows behind her. ``` **Strengths:** - Clear relationships and composition ("woman wearing kimono stands next to man in suit") - Better generalization to unseen concepts - Required for Flux, SD3, PixArt Sigma - Handles complex scenes naturally - Better spatial/compositional understanding **Limitations:** - Slower to generate (requires VLM) - More tokens = higher training cost - May be too verbose for some use cases - Less precise for specific attributes **Best Practices:** - Describe what IS in the image, not what isn't - Use clear, complete phrases - Include: subject, setting, lighting, mood, colors - Be visually grounded (describe what you see) --- ### Hybrid Approach Combines tags for structure with natural language for context. **Format:** ``` 1girl, purple_hair, blue_eyes, school_uniform. A young woman sits at her desk in a sunlit classroom, looking at the viewer with a gentle smile. Soft afternoon lighting. ``` **When to Use:** - SDXL (handles both reasonably well) - When you need precise attributes + context - Dual-encoder models (CLIP + T5) **Strategy:** - Tags for structural elements: `1girl`, `sitting`, `indoors` - Natural language for complex descriptions - Keep tags first, then sentences --- ### Model-Specific Recommendations | Model | Recommended Format | Notes | |-------|-------------------|-------| | **SD 1.5** | Booru tags | Trained primarily on tagged data | | **NAI** | Booru tags | Optimized for Danbooru tags | | **Pony** | e621/Booru tags | Trained on e621 + Danbooru | | **SDXL** | Hybrid or Tags | Handles both, tags more precise | | **Flux** | Natural language | T5 encoder expects sentences | | **SD3** | Natural language | Trained on natural captions | | **PixArt** | Natural language | Sentence-based training | | **Z-Image** | Structured natural language | Long detailed prompts, NO negative prompts | **Flux-Specific Tips:** - Use dual captioning: WD14 tags + natural language - Captions should match your prompting style - Longer, descriptive sentences work best - "Clear, complete phrases that are visually grounded" **Z-Image-Specific Tips:** - Uses S3-DiT (Scalable Single-Stream Diffusion Transformer) backbone - **No negative prompts** - guidance scale is 0.0, negatives are ignored - Long, detailed prompts work best (80-250 words, up to 1024 tokens) - Structure prompts like camera directions: shot type, subject, clothing, environment, lighting, mood - Embed constraints positively: "fully clothed, no watermark, correct anatomy" - Excellent for photorealistic generation and bilingual text rendering (English/Chinese) - Be very specific - the model is "unopinionated" and needs explicit direction **Z-Image Prompt Structure:** ``` [Shot type], [Subject description], [Age/appearance], [Clothing details], [Environment/background], [Lighting], [Mood/atmosphere], [Style/medium], [Technical notes], [Safety constraints: no watermark, no text, correct anatomy] ``` --- ## Best Practices ### Image Preparation 1. **Resolution**: Most models work best with 384px-1024px images 2. **Format**: JPEG, PNG, WebP supported by most models 3. **Quality**: Clear, well-lit images produce better captions 4. **Aspect Ratio**: Some models handle varied ratios better than others ### Prompting Guidelines 1. **Be specific** about what you want described 2. **Provide structure** if you need formatted output 3. **Use examples** (few-shot) for consistent style 4. **Place images before text** in the prompt (when possible) ### Output Considerations 1. **Token limits** vary by model (256-4096 typical) 2. **Temperature 0** for consistent, deterministic output 3. **Post-processing** may be needed for formatting --- ## Model-Specific Details --- ### Quick Tier #### Florence-2-large-PromptGen v2.0 `MiaoshouAI/Florence-2-large-PromptGen-v2.0` **Architecture**: Sequence-to-sequence with DaViT encoder **Parameters**: 0.77B **VRAM**: ~1.5 GB **Strengths:** - Extremely fast inference (~30ms) - State-of-the-art zero-shot captioning (CIDEr 133.0 on COCO) - Multiple task modes via prompts - Excellent for bulk processing **Limitations:** - Limited context understanding for complex scenes - May struggle with multiple objects and relationships - Less detailed than larger models - Watermark recognition not always reliable **Best Prompts:** ``` # Brief caption # More detailed # Most detailed ``` **Best For:** Initial tagging passes, bulk processing, quick previews --- #### BLIP-image-captioning-large `Salesforce/blip-image-captioning-large` **Architecture**: ViT-L/16 encoder + text decoder **Parameters**: ~470M **VRAM**: ~1 GB **Strengths:** - Very lightweight and fast - Good baseline quality - Supports conditional captioning (with text prompts) - Real-time capable (milliseconds on GPU) **Limitations:** - Less detailed than newer models - Basic vocabulary compared to LLM-based models - No instruction following **Best Prompts:** ```python # Unconditional processor(image, return_tensors="pt") # Conditional (guided) processor(image, "a photograph of", return_tensors="pt") ``` **Best For:** Simple baseline, real-time applications, low-resource environments --- ### Standard Tier #### JoyCaption Beta One (GGUF Q4_K_M) `mradermacher/llama-joycaption-beta-one-hf-llava-GGUF` **Architecture**: LLaVA-based (Llama + CLIP) **Parameters**: ~7B (quantized to ~4B effective) **VRAM**: ~5-7 GB **Strengths:** - Built specifically for diffusion training - Free, open, and uncensored - 10 different caption modes - Equal coverage of SFW and NSFW content - Broad diversity in training data **Limitations:** - Quantized version has some quality loss - Slower than Florence-2 - May be verbose in some modes **Caption Modes:** | Mode | Description | |------|-------------| | `descriptive` | Detailed, verbose descriptions | | `straightforward` | Balanced detail (recommended) | | `stable_diffusion_prompt` | SD-style tags | | `midjourney` | MJ-style prompts | | `booru` | Booru tag format | **Best For:** Balanced quality/speed, diffusion training datasets --- #### BLIP-2-opt-2.7b `Salesforce/blip2-opt-2.7b` **Architecture**: Q-Former bridge + OPT-2.7B LLM **Parameters**: ~2.7B **VRAM**: ~7 GB **Strengths:** - Bridges vision encoder to LLM - Conditional captioning with prompts - Good instruction following - Scalable architecture **Limitations:** - Larger than BLIP-1 - Can be slow on CPU **Best Prompts:** ``` "Describe this image in detail." "What is shown in this photograph?" "Generate a caption for this image:" ``` **Best For:** Conditional captioning, prompt-guided descriptions --- #### Qwen2.5-VL-3B-Instruct `Qwen/Qwen2.5-VL-3B-Instruct` **Architecture**: Qwen2.5 LLM + Vision encoder **Parameters**: 3B **VRAM**: ~6-8 GB **Strengths:** - Excellent multilingual support - Good instruction following - Handles varied aspect ratios well - Natural language grounding **Limitations:** - Smaller than 7B variant - Less detailed for complex scenes **Prompt Format:** ```python messages = [ { "role": "user", "content": [ {"type": "image", "image": image_path}, {"type": "text", "text": "Describe this image in detail."} ] } ] ``` **Best For:** Multilingual applications, varied aspect ratios --- #### Qwen2.5-VL-7B-Instruct (4-bit) `Qwen/Qwen2.5-VL-7B-Instruct` **Architecture**: Qwen2.5 LLM + Vision encoder **Parameters**: 7B (quantized to ~4B effective) **VRAM**: ~6-8 GB with 4-bit quantization **Strengths:** - Better quality than 3B - Fits in 8GB VRAM with quantization - Robust 480px-2560px resolution handling - Object detection + grounding support **Limitations:** - Slower than smaller variants - 4-bit quantization affects quality slightly - Object detection accuracy decreases outside optimal resolution **Best For:** Quality-focused with limited VRAM --- ### Detailed Tier #### JoyCaption Beta One (FP16) `fancyfeast/llama-joycaption-beta-one-hf-llava` **Architecture**: LLaVA-based (Llama + CLIP) **Parameters**: ~7B (full precision) **VRAM**: ~16 GB **Strengths:** - Highest quality JoyCaption - No quantization artifacts - Trained on 2.4M samples - DPO-optimized (score improved 5.14 → 7.03) **Limitations:** - High VRAM requirement - Slower inference - Requires good GPU **Best For:** Final dataset preparation, highest quality captions for training --- #### Qwen2.5-VL-7B-Captioner-Relaxed `Ertugrul/Qwen2.5-VL-7B-Captioner-Relaxed` **Architecture**: Fine-tuned Qwen2.5-VL-7B **Parameters**: 7B **VRAM**: ~16 GB **Strengths:** - Fine-tuned specifically for T2I captioning - Relaxed constraints (less restrictive) - Enhanced detail generation - Natural language output optimized for image generation **Limitations:** - High VRAM - May be too verbose for some uses **Best For:** Text-to-image training datasets, detailed descriptions --- #### BLIP-2-opt-6.7b `Salesforce/blip2-opt-6.7b` **Architecture**: Q-Former + OPT-6.7B LLM **Parameters**: ~6.7B **VRAM**: ~14 GB **Strengths:** - Larger LLM backbone - Better language generation - More nuanced descriptions **Limitations:** - High VRAM - Slower than smaller BLIP-2 **Best For:** High-quality conditional captioning --- ### Extreme (API) Tier #### Gemini 2.5 Pro **Provider**: Google AI **URL**: https://ai.google.dev/ **Cost**: ~$1.25/M input tokens **Strengths:** - Best overall vision understanding - Up to 1M input tokens (3600 images/prompt) - Enhanced object detection with bounding boxes - Multimodal output (text + images) - Spatial understanding improvements **Limitations:** - API latency - Cost at scale - Rate limits **Token Usage:** - 258 tokens if both dimensions ≤ 384px - Larger images tiled into 768x768 (258 tokens each) **Best For:** Complex scene understanding, batch processing via API --- #### GPT-4o **Provider**: OpenAI **URL**: https://platform.openai.com/ **Cost**: ~$5/M input tokens **Strengths:** - Excellent creative descriptions - Strong instruction following - Good structured output (JSON, etc.) - Few-shot learning works well **Limitations:** - Higher cost - Cannot identify specific individuals - Spatial reasoning limitations **Best Practices:** - Use system prompts for consistent style - Provide few-shot examples for formatting - Use ontology/schema for structured output - Include image before text in messages **Best For:** Creative, detailed captions; structured output --- #### Claude Sonnet 4 **Provider**: Anthropic **URL**: https://console.anthropic.com/ **Cost**: ~$3/M input tokens **Strengths:** - Strongest vision model from Anthropic - Excellent visual reasoning - Accurate text transcription from images - Follows format instructions precisely - Charts/graphs interpretation **Limitations:** - Cannot identify individuals - Precise spatial measurements difficult - Requires human oversight for critical uses **Best Practices:** - Place images before text - Use clear, structured queries - Supported formats: JPEG, PNG, GIF, WebP **Best For:** Format-precise outputs, visual reasoning, chart interpretation --- #### Grok 4 **Provider**: xAI **URL**: https://console.x.ai/ **Cost**: ~$0.20/M input tokens **Strengths:** - Cheapest API option - Good general captioning - Fast response times **Limitations:** - Less established than competitors - Fewer advanced features **Best For:** Cost-sensitive API usage, high-volume processing --- ## Prompting Techniques ### Zero-Shot Simple direct instruction: ``` Describe this image in detail. ``` ### Few-Shot Provide examples for consistent style: ``` Example 1: [image] → "A woman with long brown hair wearing a red dress..." Example 2: [image] → "A man in his 30s with short black hair..." Now describe: [target image] ``` ### Structured Output Request specific format: ``` Describe this image using the following structure: - Subject: - Setting: - Lighting: - Mood: - Colors: ``` ### Chain-of-Thought For complex analysis: ``` First, identify the main subject. Then, describe the background. Finally, note the lighting and mood. ``` --- ## Vision Model Landscape Beyond the captioning models listed above, here's a broader view of vision models and their roles in image understanding workflows. ### Vision Foundation Models General-purpose vision backbones that produce features for downstream tasks. #### DINOv2 (Meta) Self-supervised Vision Transformer producing excellent general-purpose embeddings. | Aspect | Details | |--------|---------| | **Type** | Self-supervised ViT | | **Parameters** | ViT-S/B/L/G variants | | **Training** | 142M images, no labels | | **Strengths** | Classification, retrieval, segmentation, depth estimation | **Key Features:** - Works across domains without fine-tuning - Student-teacher training mechanism - Both image-level and patch-level learning - Zero-shot learning capabilities **Best For:** Feature extraction, transfer learning, when you need robust visual embeddings **Resources:** [DINOv2 GitHub](https://github.com/facebookresearch/dinov2) | [Meta AI Blog](https://ai.meta.com/blog/dino-v2-computer-vision-self-supervised-learning/) --- #### InternVL 2.5 (Shanghai AI Lab) State-of-the-art open-source multimodal model rivaling GPT-4o. | Aspect | Details | |--------|---------| | **Type** | ViT-MLP-LLM architecture | | **Parameters** | 1B to 78B variants | | **Resolution** | Up to 448×448 tiles (dynamic) | | **Strengths** | Multi-image, video, OCR, reasoning | **Key Features:** - First open-source to achieve >70% on MMMU benchmark - Progressive scaling training strategy - Supports English and Chinese - MPO (Mixed Preference Optimization) variants available **Best For:** Complex scene understanding, document analysis, video comprehension **Resources:** [InternVL GitHub](https://github.com/OpenGVLab/InternVL) | [HuggingFace](https://huggingface.co/OpenGVLab/InternVL2_5-78B) --- #### EVA-02 (BAAI) Scaled-up vision transformer with excellent transfer learning. | Aspect | Details | |--------|---------| | **Type** | Vision Transformer | | **Strengths** | Downstream classification, minimal fine-tuning needed | **Best For:** When you need strong classification with efficient fine-tuning --- ### Contrastive Vision-Language Models Models that align image and text embeddings in a shared space. #### SigLIP / SigLIP 2 (Google) Improved CLIP using sigmoid loss instead of softmax. | Aspect | Details | |--------|---------| | **Type** | Contrastive VLM | | **Improvement** | Better calibration, more efficient training | | **Batch Size** | Works well with smaller batches | **Key Differences from CLIP:** - Sigmoid loss vs softmax contrastive loss - Better zero-shot classification on ImageNet - More memory efficient (2x batch size possible) - Multilingual support (SigLIP 2) **SigLIP 2 Improvements:** - Better zero-shot classification - Improved transfer performance for VLMs - Better localization and dense prediction **Best For:** Zero-shot classification, efficient training with limited compute **Resources:** [SigLIP 2 Blog](https://huggingface.co/blog/siglip2) | [HuggingFace](https://huggingface.co/google/siglip-so400m-patch14-384) --- #### CLIP (OpenAI) The classic contrastive vision-language model. | Aspect | Details | |--------|---------| | **Type** | Contrastive VLM | | **Strengths** | Zero-shot classification, embedding similarity | | **Ecosystem** | Extensive community tooling | **Best For:** When you need broad compatibility and community support --- #### CoCa (Google) Combines contrastive and captioning objectives. **Best For:** Tasks requiring both classification and generation --- ### Diffusion-Optimized Captioners Models specifically designed or fine-tuned for generating prompts for diffusion models. #### JoyCaption Purpose-built for diffusion model training captions. | Aspect | Details | |--------|---------| | **Architecture** | LLaVA-based (Llama + CLIP) | | **Modes** | 10 different caption styles | | **Training** | 2.4M samples, DPO-optimized | **Caption Modes:** | Mode | Output Style | |------|--------------| | `descriptive` | Detailed, verbose natural language | | `straightforward` | Balanced detail (recommended) | | `stable_diffusion_prompt` | SD-style prompts | | `midjourney` | MJ-style prompts | | `booru` | Danbooru tag format | **Best For:** Training data for Flux, SDXL, SD models **Resources:** [JoyCaption GitHub](https://github.com/fpgaminer/joycaption) | [Civitai Article](https://civitai.com/articles/14672/joycaption-beta-one-release) --- #### CogVLM2 / GLM-4V (Tsinghua/Zhipu) Strong visual understanding with artistic style recognition. | Aspect | Details | |--------|---------| | **Architecture** | ViT + Adapter + LLM | | **CogVLM2 Base** | Llama3-8B backbone | | **GLM-4V** | GLM-9B backbone, 13B total | | **Resolution** | Up to 1344×1344 (CogVLM2), 1120×1120 (GLM-4V) | **Key Features:** - GPT-4V equivalent performance - Excellent OCR capabilities - Video understanding (CogVLM2-Video) - Bilingual (English/Chinese) **Best For:** Detailed descriptions, style identification, OCR-heavy images **Resources:** [CogVLM2 GitHub](https://github.com/THUDM/CogVLM2) | [GLM-4 GitHub](https://github.com/THUDM/GLM-4) --- #### LLaVA-NeXT / LLaVA 1.6 Solid VLM with good ComfyUI integration. | Aspect | Details | |--------|---------| | **Architecture** | CLIP + Vicuna/Llama | | **Strengths** | Good balance of quality and speed | | **Integration** | Strong ComfyUI node support | **Best For:** General-purpose captioning with easy integration --- ### Tag-Based Models Fast taggers for booru-style output. #### WD14 Tagger / WD Tagger (SmilingWolf) Danbooru-style tag extraction optimized for anime/illustration. | Aspect | Details | |--------|---------| | **Type** | Image classifier | | **Output** | Danbooru tags + ratings | | **Speed** | Very fast | | **Accuracy** | ~50% better than DeepDanbooru | **Available Models:** | Model | Notes | |-------|-------| | `wd-v1-4-moat-tagger-v2` | Newest, MOAT architecture | | `wd-v1-4-convnext-tagger-v2` | Most popular | | `wd-v1-4-vit-tagger-v2` | ViT-based | **Best For:** Anime/illustration tagging, fast batch processing, SDXL/Pony prompts **Resources:** [HuggingFace Space](https://huggingface.co/spaces/SmilingWolf/wd-tagger) | [ComfyUI Node](https://github.com/pythongosssss/ComfyUI-WD14-Tagger) --- #### DeepDanbooru Original Danbooru tagger, still widely used. | Aspect | Details | |--------|---------| | **Type** | CNN classifier | | **Output** | Danbooru tags | | **Speed** | Fast | **Best For:** Legacy workflows, when WD14 unavailable --- ### Model Comparison Table | Model | Type | Best For | Speed | VRAM | |-------|------|----------|-------|------| | **DINOv2** | Foundation | Feature extraction | Fast | Low | | **InternVL 2.5** | VLM | Complex scenes, OCR | Medium | High | | **SigLIP** | Contrastive | Zero-shot classification | Fast | Low | | **JoyCaption** | Captioner | Diffusion training | Medium | Medium | | **CogVLM2** | VLM | Detailed descriptions | Slow | High | | **WD14 Tagger** | Tagger | Anime tags | Very Fast | Low | | **Florence-2** | Multi-task | General captioning | Fast | Low | | **Qwen2.5-VL** | VLM | Multilingual, instruction | Medium | Medium | --- ### Workflow Patterns #### Two-Stage Captioning (Recommended for SD/SDXL) ``` Image → WD Tagger (tags) + VLM (description) → LLM combines → Final Prompt ``` #### Direct Captioning (Recommended for Flux) ``` Image → Qwen2-VL / JoyCaption → Optional cleanup → Flux ``` #### Hybrid for SDXL ``` Image → WD14 (structural tags) + Florence-2 (description) → Merge ``` #### Production Pipeline ``` Batch Images → Florence-2 (quick pass) → Filter → JoyCaption (detailed) → Training ``` ### ComfyUI Nodes | Node | Model | Purpose | |------|-------|---------| | `ComfyUI-JoyCaption` | JoyCaption | Diffusion-optimized captions | | `ComfyUI-Florence2` | Florence-2 | Multi-task captioning | | `ComfyUI-WD14-Tagger` | WD14 | Booru tag extraction | | `ComfyUI-LLaVA-Captioner` | LLaVA | General VLM captioning | | `ComfyUI-InternVL` | InternVL | Advanced VLM tasks | --- ## Common Pitfalls ### 1. Hallucinations VLMs may invent details not present in images. Always verify critical outputs. ### 2. Copy-from-Examples Small models may copy few-shot examples instead of analyzing the image. Use diverse examples or zero-shot for small models. ### 3. Resolution Issues - Too small: Missing details - Too large: Slow processing, may be resized anyway ### 4. Verbosity Some models are overly verbose. Use temperature=0 and explicit length instructions. ### 5. Format Breaking Models may not consistently follow format instructions. Consider post-processing. --- ## References ### General VLM Resources - [Vision Language Models Explained - HuggingFace](https://huggingface.co/blog/vlms) - [VLMs 2025 - HuggingFace](https://huggingface.co/blog/vlms-2025) - [Vision Language Models Guide - Encord](https://encord.com/blog/vision-language-models-guide/) - [Awesome VLM Architectures - GitHub](https://github.com/gokayfem/awesome-vlm-architectures) ### Model-Specific - [Florence-2 - AssemblyAI](https://www.assemblyai.com/blog/florence-2-how-it-works-how-to-use) - [JoyCaption - GitHub](https://github.com/fpgaminer/joycaption) - [JoyCaption Beta One - Civitai](https://civitai.com/articles/14672/joycaption-beta-one-release) - [BLIP - Salesforce](https://www.salesforce.com/blog/blip-bootstrapping-language-image-pretraining/) - [Qwen2.5-VL Captioner - HuggingFace](https://huggingface.co/Ertugrul/Qwen2.5-VL-7B-Captioner-Relaxed) ### API Providers - [Claude Vision Docs](https://docs.claude.com/en/docs/build-with-claude/vision) - [Gemini Image Understanding](https://ai.google.dev/gemini-api/docs/image-understanding) - [GPT-4 Image Captioning Cookbook](https://cookbook.openai.com/examples/tag_caption_images_with_gpt4v)