IPAdapter Tiled V2
When a small reference loses the details
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- MODEL
- tiles
- masks
CLIP's vision encoder reads a 224×224 thumbnail. So when your reference is a dense, detailed image - a busy illustration, a detailed texture, a cluttered scene - IP-Adapter gets a tiny downscaled blur to work from, and the output shows it: the gist lands, the fine details vanish. IPAdapterTiledV2 sidesteps that by slicing the reference into 256px tiles and conditioning the model on each tile separately, so the encoder gets a real look at every region instead of one squashed overview.
Here's the mechanism. The node resizes the reference so its long dimension lands near tile scale (up to a 4:1 aspect, cropped to a max of 4 tiles beyond that), then walks a sliding window across it, producing overlapping 256px tiles and a matching mask per tile. Each tile is passed through IP-Adapter with its own attention mask; the model is patched once per tile in sequence. The result is that the model "sees" the reference's detail the way it's actually distributed across the image - face, texture, edge work - rather than as a downscaled smear. It also spits the tiles and masks out as extra outputs so you can see what it's conditioning on.
The inputs that matter:
weight,weight_type,start_at,end_at- the standard influence controls (weight_type has the full 15-way curve menu)sharpening(default 0) - contrast-adaptive sharpening applied to the tiles before encoding. This is the "detail recovery" dial; a bit of it compensates for the downscalecombine_embedsandembeds_scaling- how the tile embeddings combine and inject- optional
image_negative,attn_mask,clip_visionas usual
Outputs: MODEL (chained into your sampler), plus tiles (the extracted tile images) and masks - wire those to a preview to debug exactly which regions are conditioning.
When you'd reach for it
High-detail references where plain IP-Adapter reads as "wrong texture." Tiled upscaling-style jobs where you want the model to reproduce intricate detail rather than an impression of it. And face work from a large group photo where the face you care about is a small fraction of the frame - tiling makes the encoder actually examine it. The tradeoff is compute: each tile is a full adapter pass, so expect meaningfully slower runs on complex references.
Install
Part of chflame163/ComfyUI_IPAdapter_plus_V2, the V2 fork of cubiq's pack. Manager → search ComfyUI_IPAdapter_plus_V2, or:
cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_IPAdapter_plus_V2
Restart. No pip requirements.
Gotchas
The tile count is capped at 4, so a wildly panoramic reference gets center-cropped to the middle slice - prep the image (crop it yourself) if the interesting detail isn't central. Overlapping tiles mean edge regions get conditioned twice, which is fine until you crank weight and see doubled seams in the output - keep weight moderate. And the same detail caveat from the KB applies harder here: conditioning across all steps still softens output, so respect end_at. For a batch of references, IPAdapterTiledBatchV2 is the version that processes each image separately rather than as one folded batch.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–3 | — |
| weight_type | COMBO | 15 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +9 | |
| combine_embeds | COMBO | 5 options: concat, add, subtract, average, norm average | |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| sharpening | FLOAT | 0.000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| tiles | IMAGE | — |
| masks | MASK | — |