TTP_JoyCaption_BetaOne_Simple
One model, auto-downloaded, captions out
- image
- caption
You want JoyCaption Beta One captions and you don't want a node with 27 toggles plastered across it. That's this node. TTP_JoyCaption_BetaOne_Simple is the slim version of the pack's Beta One engine: image in, caption list out, and the only extras are the ones you deliberately wire in.
What it is
It runs the same fancyfeast/llama-joycaption-beta-one-hf-llava model as JoyCaptionBetaOne_Full - the self-contained vision-language model that auto-downloads to ComfyUI/models/LLM_llava/ on first run, no manual model placement. The difference is the surface area. The Full node bakes 27 extra-option booleans into its inputs; the Simple version replaces them with two optional inputs:
- extra_options_str - a plain STRING you can feed from the pack's
ExtraOptionsNode_Beta(or any text source). Whatever instruction text you compile there gets appended to the caption request. - enable_liger_kernel_opt - the optional LIGER kernel speedup, default on (it's ignored if LIGER isn't installed).
That's the whole trade: Full is self-contained but busy; Simple is clean but needs a companion node if you want the instruction toggles. For most captioning jobs - especially batch captioning a folder for LoRA training - Simple plus a small extras string is all you'll ever use.
The inputs that matter
The required set is exactly the core kit:
- image - one image or a batch; you get one caption per image out.
- caption_type - 12 presets, including the tag-style ones that matter for anime/furry training: Danbooru tag list, e621 tag list, Rule34 tag list, Booru-like tag list. Plus the usual Descriptive / MidJourney / Stable Diffusion Prompt / Art Critic / Product Listing / Social Media Post.
- caption_length - "any", "very short" through "very long", or a hard word count.
- quantization_mode - bf16 / nf4 / int8. On sub-16GB cards, nf4 is the right call; int8 sits in between.
- custom_prompt - if you fill this in, it overrides caption type and any extras entirely. The escape hatch for bespoke instructions.
- temperature / top_p / max_new_tokens - defaults 0.6 / 0.9 / 512.
- cache_model - defaults on, so the model stays resident between runs. That's a smart default for the workflow this node lives in.
Output is caption as a list of strings, one per input image - wire it to a text-save or a dataset writer and you're done.
Install and gotchas
Same as every node in this pack: ComfyUI Manager → search Comfyui_JC2, or clone into custom_nodes and pip install -r requirements.txt. Dependencies are the usual bitsandbytes + transformers + peft==0.12.0 + sentencepiece stack, with triton-windows for Windows users.
The honest warnings: it's CUDA-only (device offers just cuda:0), so don't expect it on a Mac without patching; the first run downloads ~9GB and looks frozen while it does; and if you hit a bitsandbytes quantization error, update it (pip install -U bitsandbytes). One subtlety: character_name isn't a direct input here - if you want name-aware captions, feed the compiled string from ExtraOptionsNode_Beta, which handles the {name} substitution for you.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| caption_type | COMBO | 12 options: Descriptive, Descriptive (Casual), Straightforward, Stable Diffusion Prompt, MidJourney, Danbooru tag list, +6 | |
| caption_length | COMBO | 31 options: any, very short, short, medium-length, long, very long, +25 | |
| quantization_mode | COMBO | bf16 | 3 options: bf16, nf4, int8 |
| custom_prompt | STRING | — | |
| temperature | FLOAT | 0.600–2 | — |
| top_p | FLOAT | 0.900–1 | — |
| max_new_tokens | INT | 5121–2048 | — |
| device | COMBO | 1 options: cuda:0 | |
| cache_model | BOOLEAN | true | — |
| extra_options_stropt | STRING | — | |
| enable_liger_kernel_optopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| caption | STRING | — |