Nodes/ComfyUI-JakeUpgrade/Apply Control Net JK๐Ÿ‰
ComfyUI Node

Apply Control Net JK๐Ÿ‰

ControlNet that only bites where you want it to

By jakechaiยทCreated 2 years agoยทUpdated 3 months agoยท 147
Apply Control Net JK๐Ÿ‰
  • base_positive
  • base_negative
  • image
  • mask
  • vae
  • control_net
  • base_pos
  • base_neg
โ—„effective_maskfalseโ–บ
โ—„strength1.00โ–บ
โ—„start_percent0.000โ–บ
โ—„end_percent1.000โ–บ

Stock ComfyUI's ControlNet apply nodes have a hole: no masking. You can paste a canny or depth map over the whole image and dial strength, but you can't say "control this region and leave the rest alone." CR Apply ControlNet JK is the JakeUpgrade wrapper that closes that gap - it's the single-ControlNet apply from the pack's image-gen group nodes, wrapped around the core ControlNetApplyAdvanced with an A1111-style effective mask bolted on.

How it works

ControlNet steers generation by feeding a preprocessed image (edges, depth, pose) into a copy of the model's encoder, and the two knobs that matter are the classic ones from the technique itself: strength (0โ€“10, default 1.0) decides how hard the condition pulls, and start_percent / end_percent (0โ€“1) pick the denoising window it's active - the standing advice is to release the condition once composition has formed, e.g. start 0.0, end 0.5 for structure-heavy work.

The interesting input is effective_mask. When it's on and a mask is available, the node splits the conditioning into two halves: inside the mask the ControlNet applies, outside it the base conditioning carries through. That's the "effective mask" trick from the A1111 era, and JakeUpgrade added it in v1.8.6 as an A1111-like ControlNet mask. The mask itself can come from the optional mask input, or it's pulled from the alpha channel of the image you feed in (the node runs SplitImageWithAlpha on it, so an RGBA control image with transparent regions works as a mask automatically).

Inputs and outputs, in brief:

  • base_positive / base_negative - the conditioning from your CLIP text encoders.
  • image / control_net (optional) - the preprocessed control image and the .safetensors from a ControlNet loader; if you pass a name string, the node loads it from models/controlnet itself.
  • vae (optional) - used when the condition needs latent encoding.
  • Outputs: base_pos and base_neg, the patched conditionings that go to your sampler.

Installing it

Part of ComfyUI-JakeUpgrade:

cd ComfyUI/custom_nodes
git clone https://github.com/jakechai/ComfyUI-JakeUpgrade
cd ComfyUI-JakeUpgrade
# Windows standalone: install.bat
# or: python_embeded\python.exe -s -m pip install -r requirements.txt
pip install -r requirements.txt   # non-Windows

Or ComfyUI Manager โ†’ search "JakeUpgrade" โ†’ install โ†’ restart. The ControlNet model files are your own, in ComfyUI/models/controlnet.

Troubleshooting

  • "Could not import SplitImageWithAlpha" or an apply that never loads. Newer JakeUpgrade (v2.1.5+) calls comfy_extras.nodes_compositing.SplitImageWithAlpha, which was renamed - the README is explicit that you need ComfyUI v0.3.64+. Update ComfyUI before touching anything else.
  • The condition does nothing. Check strength isn't 0 and that start_percent โ‰ค end_percent; also that the control image is actually connected - this node no-ops entirely if image or control_net is missing.
  • Mask not doing what you expect. If the image has no alpha channel, the alpha-derived mask is all zeros and the node falls back to your explicit mask input. Feed the mask explicitly when you want region control.
  • Manager flags a JakeUpgrade / IPAdapter_plus conflict. The pack's replacement/ folder trips the check; harmless noise.
  • ComfyUI-MultiGPU causes CUDA errors on recent ComfyUI - the README says to disable it.
Category๐Ÿ‰ JK/๐Ÿ•น๏ธ ControlNet

Inputs (10)

NameTypeDefaultDescription
base_positiveCONDITIONINGPositive conditioning input
base_negativeCONDITIONINGNegative conditioning input
effective_maskBOOLEANfalseApply mask to ControlNet effect
strengthFLOAT1.000โ€“10ControlNet strength multiplier
start_percentFLOAT0.0000โ€“1Start percentage of denoising process
end_percentFLOAT1.0000โ€“1End percentage of denoising process
imageoptIMAGEControl image input
maskoptMASKMask for selective application
vaeoptVAEVAE for image encoding
control_netoptCONTROL_NETControlNet model to apply

Outputs (2)

NameTypeDescription
base_posCONDITIONINGโ€”
base_negCONDITIONINGโ€”