Nodes/Mickmumpitz-Nodes/Show Image + Text Pairs
ComfyUI Node

Show Image + Text Pairs

See your captions before you train on them

By mickmumpitz·Created 8 months ago·Updated 9 days ago· 47
Show Image + Text Pairs
  • images
    captions
    draw_boxestrue
    bbox_formatnormalized_1000_yxyx
    training_resolutionoff
    bucket_divisibility64

    Captions are the one place in LoRA training where "good enough" quietly destroys your results - and it's also the least fun thing to check, because it means eyeballing image-text pairs one at a time. CCC_ShowImageTextPairs is the eyeballing tool: a display node that shows each image next to its caption text, with the caption copyable, and optionally draws your bounding boxes on top.

    It's the "preview before you commit" node in the Consistent Character Creator pipeline. Its big sibling, the Dataset Reviewer, is the interactive editor; this one is the quick glance. You'll reach for it constantly during dataset assembly.

    How it works

    Feed it images (required) and optionally captions (a list of strings). It renders each image beside its caption in the UI - captions come out as copyable text, which is the small detail that makes it actually usable. Because it's an output node, nothing comes out of it; it exists to show you things.

    The interesting inputs are the bbox preview options:

    • draw_boxes - draw bounding boxes parsed out of your captions onto the image.
    • bbox_format - the box convention your captions use. Default is normalized_1000_yxyx (Ideogram's [y, x, y, x] on a 0-1000 scale). There's an auto mode, plus pixel and 0-1 variants.
    • training_resolution - the preview can be resized to an AI Toolkit training bucket resolution (256 through 2048, or off). This is the standout feature: it shows you what the image will look like after the trainer buckets it, with boxes rescaled to match. That's the exact resolution where a too-small face or a box clipped off-frame will show up.
    • bucket_divisibility - the multiple used for bucketing, default 64, matching AI Toolkit's convention.

    The display also prints per-box pixel coordinates beneath each image, which sounds mundane and is genuinely handy for spotting misaligned boxes.

    Where it fits

    Run it after tagging, before training. The loop this pack's built around: CCC_ImageBatchLoader feeds images, captions come out of the tagger or a caption loader, this node shows you whether the boxes land on the right features and whether the captions read like English. If something's off, you either fix captions here (visually) or escalate to the Dataset Reviewer to edit in-place.

    Installing it

    Ships in Mickmumpitz-Nodes:

    cd ComfyUI/custom_nodes
    git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes.git
    

    or ComfyUI Manager → search "Mickmumpitz" → install → restart. No model downloads needed; the pack's real dependencies are just numpy, Pillow and opencv-python.

    Troubleshooting

    • Boxes in the wrong place - it's almost always bbox_format, not the tagger. If your captions are x-first or 0-1 normalized, the boxes will be drawn shifted. Match the format to what wrote the boxes.
    • No captions shown - captions is optional; if it's unwired, you get images with no text. Wire the list output of your tagger or loader in.
    • Unexpected layout - the custom preview is a web widget; if it doesn't render after a pack update, a hard refresh of the browser usually fixes it.
    • Resolution preview looks blurry - that's the point. A 1024 image bucketed down to 768 is what the model will actually see; if details vanish, that's a real signal to adjust your dataset, not a bug.
    CategoryMickmumpitz/ConsistentCharacterCreator

    Inputs (6)

    NameTypeDefaultDescription
    imagesIMAGE
    captionsoptSTRING
    draw_boxesoptBOOLEANtrue
    bbox_formatoptCOMBOnormalized_1000_yxyxIdeogram uses [y_min, x_min, y_max, x_max] @ 0-1000 (y-first) = normalized_1000_yxyx.
    training_resolutionoptCOMBOoff9 options: off, 256, 512, 768, 1024, 1280, +3
    bucket_divisibilityoptINT641–256

    Outputs (0)

    No outputs