XY Inputs: Controlnet //EasyUse
ControlNet — sweep a ControlNet strength across a grid
- image
- control_net
- X or Y
Finding the right ControlNet strength is guesswork - too low and it ignores your reference, too high and the image goes stiff and traced. This node turns that guesswork into a contact sheet. It defines one axis of an XY plot that walks a ControlNet parameter from one value to another, so you generate a whole row (or grid) at, say, strength 0.4, 0.6, 0.8, 1.0 and just look at which one's right.
It's part of ComfyUI-Easy-Use's XY Inputs family - a set of axis-generator nodes that feed the pack's easy XYPlot. This particular one is aimed squarely at ControlNet tuning.
Why you'd reach for it
Because ControlNet has that Goldilocks problem and eyeballing a single strength wastes runs. ControlNet conditions on spatial structure - edges, depth, pose - while the prompt decides content, and the strength is how hard it enforces that structure. Sweeping it lets you see the whole tradeoff at once instead of re-running with tweaks. You can also sweep start_percent / end_percent - the window over which the control is active - which is often the more interesting dial: applying a pose only for the first 60% of steps holds composition while letting the model finish freely.
How it works
You pick a target_parameter (strength, start_percent, or end_percent) and a first/last value, plus a batch_count for how many steps to divide that range into. The node emits an X_Y axis describing that sweep. You wire it into easy XYPlot as the X or Y axis, alongside your loader and sampler, and the plot node runs one generation per value and tiles them into a labelled grid. Feed it the same ControlNet + preprocessed image you'd use normally.
The inputs that matter
control_net_name+image- the ControlNet model and your preprocessed control image (canny map, depth map, pose, etc.).target_parameter- what to sweep: strength, start_percent, or end_percent.batch_count- how many samples across the range (default 3). More = finer grid, more compute.first_strength/last_strength(and the matchingfirst_/last_start_percent,first_/last_end_percent) - the range endpoints for whichever parameter you chose.
Output is X or Y (type X_Y) - it only does anything once plugged into easy XYPlot.
Installing it
ComfyUI Manager: search ComfyUI Easy Use, install, restart. Or cd ComfyUI/custom_nodes && git clone https://github.com/yolain/ComfyUI-Easy-Use, install requirements, restart. No models of its own, but you'll need a ControlNet model and a preprocessor (Fannovel16's controlnet_aux is the usual source of canny/depth/pose maps) to produce the control image.
Where people trip
First: this node does nothing by itself - it's an axis generator, so if you wire it straight into a sampler expecting an image, that's the mistake. It must feed easy XYPlot. Second: set the endpoints to match the parameter you picked - choosing target_parameter: strength but only editing the start_percent fields sweeps nothing useful. Third: batch_count multiplies your generation time (and on a paid GPU, your cost) - a 5×5 grid is 25 renders, so start coarse (3–4) to bracket the range, then refine. And make sure the image you feed is already preprocessed; this node applies the ControlNet, it doesn't run the canny/depth extraction for you.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 0 options: | |
| image | IMAGE | — | |
| target_parameter | COMBO | 3 options: strength, start_percent, end_percent | |
| batch_count | INT | 31–30 | — |
| first_strength | FLOAT | 0.000–10 | — |
| last_strength | FLOAT | 1.000–10 | — |
| first_start_percent | FLOAT | 0.000–1 | — |
| last_start_percent | FLOAT | 1.000–1 | — |
| first_end_percent | FLOAT | 0.000–1 | — |
| last_end_percent | FLOAT | 1.000–1 | — |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.000–1 | — |
| end_percent | FLOAT | 1.000–1 | — |
| control_netopt | CONTROL_NET | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| X or Y | X_Y | — |