store shape after Kohya HRFix is applied, use it in SAG instead of trying to calculate. AFAICT, calculation can never be 100% correct due to rounding. Original method is tried first.
additional stored shape can be used by other extensions, e.g. Forge Couple, to enable compatibility with Kohya HRFix
There are various negative effects if these settings are allowed in the extra options for txt2img or img2img. This PR removes them from the extra_options lists at load time.
'sd_model_checkpoint' and 'CLIP_stop_at_last_layers' will invisibly override main UI settings, leading to confusing behaviour
'sd_vae' doesn't seem harmful, but can create an empty block in the UI section
'forge_additional_modules' causes an error that prevents the UI from loading
Added Flux to lora types in extra networks UI, so user can set.
Loras versioned first by user-set type, if any. Falls back to heuristics - these are much more reliable than the removed old A1111 tests and in case of no match default to Unknown (always displayed).
Filtering is done based on UI setting. 'all' setting does not filter. Filters lora lists on change.
Removed unused 'lora_hide_unknown_for_versions' setting.
* SAG updates
* restore settings from infotext
* bypass if model is Flux (would error during generation)
* bypass if CFG == 1 (would error during generation)
* add control of blur mask threshold (previously hardcoded)
* change to InputAccordion
* forge_sag.py: update title
- 100% reproduce all author results and demos
- 0.3b/0.6b/1b/2b models, all pass 2GB VRAM (powered by Forge backend memory system
- perfect memory management for quick shifting between other spaces or forge main UI
1. fix several problems related to layerdiffuse not unloaded
2. fix several problems related to Fooocus inpaint
3. Slightly speed up on-the-fly LoRAs by precomputing them to computation dtype
Generating from browser works with controlnet.
Generating via API wasn't.
This is because from_dict() was making 'image' and 'mask_image' a dictionary.
In 'controlnet.py' function 'get_input_data' this would cause the following check to throw exception because used to be an incorrect type:
elif (unit_image < 5).all() and (unit_image_fg > 5).any():
Now, they are never a dictionary and check is fine