You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This helps make Inpaint or Pix2Pix models work nicely out of the box with cfg !=1 and unset img-cfg. The current implementation sets img_cfg = txt_cfg by default, but most inpaint/p2p models work best with img_cfg near 1.0, regardless of the txt_cfg value.
Should not affect the behavior of any other (non image conditionned) models hopefully.
While I'm at it, I added support for img-cfg in Flux Kontext and Qwen Image Edit models. It seems to have somewhat of an effect, though these models work just fine without it (especiallly Flux which doesn't handle any kind of cfg very well)
Also optimized sampling when txt_cfg==0. (Prompt is still processed in vain, but at least it's not used during sampling anymore)
stduhpf
changed the title
Refactor 2-cfg conditioning + better img-cfg defaults
Refactor 2-cfg conditioning + better img-cfg defaults + support for DiT edit models
Nov 1, 2025
I kept the img-cfg default aligned with txt-cfg instead of changing it to 1.0, because changing the default guidance behavior would be too broad for existing users.
@leejet The reason I had set the default value for img-cfg to be 1 instead of the same as txt-cfg is because high values for img-cfg generally cause unwated behavior.
Examples:
Inpaint:
sd-cli.exe --model dreamshaper_8Inpainting.safetensors -p "a dog sitting on a bench" --color --steps 16 --cfg-scale 7 -i .\assets\bench.png --mask .\assets\bench_mask.png --strength 1
--img-cfg-scale 1
--img-cfg-scale 7 (=txt-cfg)
Unet Edit:
sd-cli.exe --model instruct-pix2pix-00-22000-pruned-fp16.safetensors -p "Make it a cat" --color --strength 1 --steps 50 --scheduler karras --cfg-scale 7 -r "dog-on-bench.png"
I feel like some of the changes you made to properly merge master into this branch reverted some meaningful changes of this PR. I will try to re-implement them
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This helps make Inpaint or Pix2Pix models work nicely out of the box with cfg !=1 and unset img-cfg. The current implementation sets img_cfg = txt_cfg by default, but most inpaint/p2p models work best with img_cfg near 1.0, regardless of the txt_cfg value.
Should not affect the behavior of any other (non image conditionned) models hopefully.
While I'm at it, I added support for img-cfg in Flux Kontext and Qwen Image Edit models. It seems to have somewhat of an effect, though these models work just fine without it (especiallly Flux which doesn't handle any kind of cfg very well)
Also optimized sampling when txt_cfg==0. (Prompt is still processed in vain, but at least it's not used during sampling anymore)