Illustrious Dataset Preview + Tag Statistics
See your dataset and its tag counts before you waste an hour training on it
- dataset
- dataset
- images
- caption_and_tag_report
Captioning advice is easy to give and hard to check. "Describe what you want to stay variable, leave what should be fixed undescribed" - great, now look at 60 images and tell me whether you actually did that. IllustriousDatasetPreview is the reality check: it gives you thumbnails of your prepared images with their captions, plus a count of how many images each tag appears on.
That last number is the useful one. A tag on every image is a constant, and constants get baked into the LoRA whether you prompted for them or not; a tag on one image out of sixty is barely a signal. Both extremes show up in ten seconds of reading the report.
What it does
It reads dataset.json for the prepared run referenced by the dataset input, then does two passes. First it walks every caption in the run and counts distinct tags, building a document-frequency table. Then it loads the page you asked for, fits each image inside a square canvas on white with LANCZOS, and stacks them into one batched image tensor.
Nothing here modifies your data - it's read-only, unlike the crop and caption-edit nodes. It also refuses to run if the manifest points past the end of the dataset, which beats a blank preview.
What you set
start_index is where the page begins, 0 to 999 - this is how you page through a large set, since there's no scroll UI. page_size is 1 to 16 images per page, default 8; go wider and the batch gets big for no benefit. thumbnail_size is a three-way enum of 256, 384 or 512 pixels, and it only affects what you see and the tag-count pass's memory, not your training images.
dataset in, and three things out. dataset passes straight through, so you can drop this node mid-pipeline without rewiring anything. images is the batched IMAGE - wire it to ComfyUI's core Preview Image or Save Image; it isn't a preview on its own. caption_and_tag_report is a JSON string containing the run name, the total image count, each paged image's filename with its full caption text, and tag_image_counts mapping every tag to the number of images it appears on, most common first.
That report is also where you get the folder name for IllustriousDatasetOpen - the run field - which is how the pack's reviewed-training workflow avoids re-importing and re-tagging on every queue.
Reading the numbers like someone who has trained before
For an Illustrious-style character LoRA, the caption convention is Danbooru tags, because that's the vocabulary the base model was trained on. The WD line of taggers produces exactly that, which is why the pack wires an ONNX tagger into the pipeline at all.
So: if the report says long hair appears on 58 of 58 images, the tagger did its job and you should delete it - hair colour and eye colour should be identity, not a variable you prompt. If outdoors is on 3 images, that's fine, that's a variable worth keeping. If a tag is on 1 image and it's something like sword, you're teaching the model that swords are a trait of your character. And if the caption body has no 1girl at all, your tagger thresholds are off.
Long-tail tags are the ones worth deleting; uniform tags are the ones worth deleting differently - as in, if a term is on every image you either accept it as part of the concept or you diversify the dataset. That's the same conclusion the captioning literature reaches, just arrived at with a spreadsheet instead of a hunch.
Install
Manager, searching ComfyUI-IllustriousLoRATools (shown as Illustrious LoRA Tools), or:
cd ComfyUI/custom_nodes
git clone https://github.com/katorikonoe-ai/ComfyUI-IllustriousLoRATools
pip install -r ComfyUI-IllustriousLoRATools/requirements.txt
Run the requirements with ComfyUI's Python and don't let pip replace your CUDA PyTorch. Keep native/, web/ and crop_routes.py alongside __init__.py; the pack's README is explicit that a partial copy installs nothing useful. Restart, then look for the node under Katori/Illustrious Native Training.
Where people get burned
start_index starts at 0 and paging past the end of the dataset is an error, not an empty page - so if you have 60 images and you're on page 8, that's your answer.
Thumbnails are square-padded, so they tell you what is in the image, not its aspect ratio. If you care about framing, check the crop node's editor instead. And the tag counts reflect the whole run, not the page you're looking at, which is the opposite of what some people assume - a tag that appears nowhere on the visible page can still be sitting in the top of the report.
One last thing: the report's run value is what IllustriousDatasetOpen wants verbatim. Copy it rather than retyping it from memory.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| dataset | ILLUSTRIOUS_DATASET | — | |
| start_index | INT | 00–999 | — |
| page_size | INT | 81–16 | — |
| thumbnail_size | COMBO | 3 options: 256, 384, 512 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| dataset | ILLUSTRIOUS_DATASET | — |
| images | IMAGE | — |
| caption_and_tag_report | STRING | — |