Commit Graph
182 Commits
Author SHA1 Message Date
Manuel Schmid ba9eadbcda feat: add metadata to images (#1940)
* feat: add metadata logging for images

inspired by https://github.com/MoonRide303/Fooocus-MRE

* feat: add config and checkbox for save_metadata_to_images

* feat: add argument disable_metadata

* feat: add support for A1111 metadata schema

https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/cf2772fab0af5573da775e7437e6acdca424f26e/modules/processing.py#L672

* feat: add model hash support for a1111

* feat: use resolved prompts with included expansion and styles for a1111 metadata

* fix: code cleanup and resolved prompt fixes

* feat: add config metadata_created_by

* fix: use stting isntead of quote wrap for A1111 created_by

* fix: correctlyy hide/show metadata schema on app start

* fix: do not generate hashes when arg --disable-metadata is used

* refactor: rename metadata_schema to metadata_scheme

* fix: use pnginfo "parameters" insteadf of "Comments"

see https://github.com/RupertAvery/DiffusionToolkit/issues/202 and https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/cf2772fab0af5573da775e7437e6acdca424f26e/modules/processing.py#L939

* feat: add resolved prompts to metadata

* fix: use correct default value in metadata check for created_by

* wip: add metadata mapping, reading and writing

applying data after reading currently not functional for A1111

* feat: rename metadata tab and import button label

* feat: map basic information for scheme A1111

* wip: optimize handling for metadata in Gradio calls

* feat: add enums for Performance, Steps and StepsUOV

also move MetadataSchema enum to prevent circular dependency

* fix: correctly map resolution, use empty styles for A1111

* chore: code cleanup

* feat: add A1111 prompt style detection

only detects one style as Fooocus doesn't wrap {prompt} with the whole style, but has a separate prompt string for each style

* wip: add prompt style extraction for A1111 scheme

* feat: sort styles after metadata import

* refactor: use central flag for LoRA count

* refactor: use central flag for ControlNet image count

* fix: use correct LoRA mapping, add fallback for backwards compatibility

* feat: add created_by again

* feat: add prefix "Fooocus" to version

* wip: code cleanup, update todos

* fix: use correct order to read LoRA in meta parser

* wip: code cleanup, update todos

* feat: make sha256 with length 10 default

* feat: add lora handling to A1111 scheme

* feat: override existing LoRA values when importing, would cause images to differ

* fix: correctly extract prompt style when only prompt expansion is selected

* feat: allow model / LoRA loading from subfolders

* feat: code cleanup, do not queue metadata preview on image upload

* refactor: add flag for refiner_swap_method

* feat: add metadata handling for all non-img2img parameters

* refactor: code cleanup

* chore: use str as return type in calculate_sha256

* feat: add hash cache to metadata

* chore: code cleanup

* feat: add method get_scheme to Metadata

* fix: align handling for scheme Fooocus by removing lcm lora from json parsing

* refactor: add step before parsing to set data in parser

- add constructor for MetadataSchema class
- remove showable and copyable from log output
- add functional hash cache (model hashing takes about 5 seconds, only required once per model, using hash lazy loading)

* feat: sort metadata attributes before writing to image

* feat: add translations and hint for image prompt parameters

* chore: check and remove ToDo's

* refactor: merge metadata.py into meta_parser.py

* fix: add missing refiner in A1111 parse_json

* wip: add TODO for ultiline prompt style resolution

* fix: remove sorting for A1111, change performance key position

fixes https://github.com/lllyasviel/Fooocus/pull/1940#issuecomment-1924444633

* fix: add workaround for multiline prompts

* feat: add sampler mapping

* feat: prevent config reset by renaming metadata_scheme to match config options

* chore: remove remaining todos after analysis

refiner is added when set
restoring multiline prompts has been resolved by using separate parameters "raw_prompt" and "raw_negative_prompt"

* chore: specify too broad exception types

* feat: add mapping for _gpu samplers to cpu samplers

gpu samplers are less deterministic than cpu but in general similar, see https://www.reddit.com/r/comfyui/comments/15hayzo/comment/juqcpep/

* feat: add better handling for image import with empty metadata

* fix: parse adaptive_cfg as float instead of string

* chore: loosen strict type for parse_json, fix indent

* chore: make steps enums more strict

* feat: only override steps if metadata value is not in steps enum or in steps enum and performance is not the same

* fix: handle empty strings in metadata

e.g. raw negative prompt when none is set
2024-02-26 14:27:57 +01:00
MindOfMatterandManuel Schmid 3be76ef8a3 feat: make lora min max weight editable in config (#2216)
* Initial commit

* Update README.md

* sync with original main Fooocus repo

* update with my gitignore setup

* add min max weight configs feature

* add max lora config feature

* Revert "add max lora config feature"

This reverts commit cfe7463fe2.

* Update README.md

* Update .gitignore

* update

* merge

* revert

---------

Co-authored-by: Manuel Schmid <manuel.schmid@odt.net>
2024-02-25 21:36:25 +01:00
MindOfMatterandManuel Schmid 18f9f7dc31 feat: make lora number editable in config (#2215)
* Initial commit

* Update README.md

* sync with original main Fooocus repo

* update with my gitignore setup

* add max lora config feature

* Revert "add max lora config feature"

This reverts commit cfe7463fe2.

* add max loras config feature

* Update README.md

* Update .gitignore

* update

* merge

* revert

* refactor: rename default_loras_max_number to default_max_lora_number, validate config for int

* fix: add missing patch_all call and imports again

---------

Co-authored-by: Manuel Schmid <manuel.schmid@odt.net>
2024-02-25 21:12:26 +01:00
Manuel Schmid b5f019fb62 fix: correctly create directory for path_outputs if not existing (#1668)
* correctly create directory for outputs if not existing

* feat: add make_directory parameter checks for list, extract make_directory to util
2024-02-25 18:41:43 +01:00
dooglewoogleandManuel Schmid ef1999c52c feat: add ability to load checkpoints and loras from multiple locations (#1256)
* Add ability to load checkpoints and loras from multiple locations

* Found another location a default path is required

* feat: use array as default

---------

Co-authored-by: Manuel Schmid <manuel.schmid@odt.net>
2024-02-25 12:47:14 +01:00
blckbx 1f951a48f8 Merge branch 'mashb1t:main' into load-upscale-strength-from-config 2024-02-18 11:38:01 +01:00
Manuel Schmid 267d5eee7d Merge commit '1c999be8c8134fe01a75723ea933858435856950'
# Conflicts:
#	.github/ISSUE_TEMPLATE/bug_report.md
#	launch.py
#	modules/async_worker.py
#	modules/config.py
#	modules/private_logger.py
#	modules/util.py
#	webui.py
2024-02-12 21:13:36 +01:00
074b655dff fix: implement output path argument (#2074)
* added function to check output path arg and override, other wise, use temp or fallback to config

* added function to check output path arg and override, other wise, use temp or fallback to config #2065

* Revert to 1bcbd650

* moved path output arg handling inside config start up

* Revert "added function to check output path arg and override, other wise, use temp or fallback to config"

This reverts commit fecb97b59c.

* Updated tag to uppercase

* updated docstring to standard double quotes.

Co-authored-by: Manuel Schmid <9307310+mashb1t@users.noreply.github.com>

* removed extra check on image log flag per feedback

* feat: update config_dict value when overriding path_outputs, change message

---------

Co-authored-by: Manuel Schmid <9307310+mashb1t@users.noreply.github.com>
Co-authored-by: Manuel Schmid <manuel.schmid@odt.net>
2024-02-11 13:04:06 +01:00
blckbx d921cd428b webui, config: save and load overwrite upscale strength 2024-02-11 11:51:10 +01:00
Manuel Schmid ceefba9b69 Merge branch 'feature/add-metadata-to-files'
# Conflicts:
#	language/en.json
#	modules/async_worker.py
#	modules/config.py
#	modules/flags.py
#	modules/meta_parser.py
#	modules/private_logger.py
#	modules/util.py
#	webui.py
2024-02-04 21:09:24 +01:00
Manuel Schmid 6dadc3314d Merge remote-tracking branch 'upstream/main'
# Conflicts:
#	modules/config.py
2024-02-04 14:29:54 +01:00
Manuel Schmid 59dd1c2d12 Merge remote-tracking branch 'upstream/main' into feature/add-metadata-to-files 2024-02-04 13:55:00 +01:00
Manuel Schmid c3ab9f1f30 refactor: use central flag for LoRA count 2024-01-29 14:26:56 +01:00
Manuel Schmid 236278948b chore: code cleanup 2024-01-28 23:50:56 +01:00
Manuel Schmid cbc63ebba3 feat: add enums for Performance, Steps and StepsUOV
also move MetadataSchema enum to prevent circular dependency
2024-01-28 20:01:33 +01:00
Manuel Schmid f3010313fc wip: add metadata mapping, reading and writing
applying data after reading currently not functional for A1111
2024-01-28 05:35:44 +01:00
lllyasviel 1bcbd6501b fix config 2024-01-27 16:18:26 -08:00
Manuel Schmid 7185abb8ba Merge branch 'main_upstream'
# Conflicts:
#	launch.py
#	ldm_patched/modules/args_parser.py
#	modules/config.py
#	presets/anime.json
#	presets/default.json
#	presets/lcm.json
#	presets/realistic.json
2024-01-27 21:09:08 +01:00
lllyasviel 69ad1b3c24 advanced preset load
new model list

i

new candidates

add model fallback

allow disable preset download

Update anime.json

Update anime.json

Update config.py

Update anime.json

Update readme.md

Update default.json
2024-01-27 08:06:31 -08:00
Manuel Schmid 1ae495f6b8 Merge branch 'feature/add-inpaint-mask-generation'
# Conflicts:
#	requirements_versions.txt
#	webui.py
2024-01-26 11:32:53 +01:00
rayronvictor 228a0aaeea Add SAM support 2024-01-25 16:45:02 -03:00
Manuel Schmid 366984ca64 Merge branch 'feature/add-inpaint-mask-generation'
# Conflicts:
#	webui.py
2024-01-25 10:48:40 +01:00
rayronvictor f0fb9783e1 Add options to u2net_cloth_seg 2024-01-24 21:26:23 -03:00
Manuel Schmid 23bb69bb13 Merge branch 'feature/add-inpaint-mask-generation' 2024-01-24 19:45:58 +01:00
Manuel Schmid dea4b6c15c fix: add correct flag validation for default_inpaint_mask_model config 2024-01-24 19:41:25 +01:00
Manuel Schmid e196a35ce2 Merge branch 'feature/add-inpaint-mask-generation'
# Conflicts:
#	modules/config.py
#	requirements_versions.txt
2024-01-24 02:46:09 +01:00
Manuel Schmid db5512fb93 feat: add inpaint mask generation functionality
uses rembg, see https://github.com/danielgatis/rembg
2024-01-24 02:22:50 +01:00
Manuel Schmid 72d1e48def Merge branch 'jpg_config_image_extension'
# Conflicts:
#	modules/async_worker.py
#	modules/flags.py
#	modules/private_logger.py
#	webui.py
2024-01-19 00:14:44 +01:00
Manuel Schmid 7e52a1de8f refactor: rename image_file_extension to output_format 2024-01-19 00:06:07 +01:00
Manuel Schmid addd5ef3bd Merge branch 'feature/add-metadata-to-files'
# Conflicts:
#	args_manager.py
#	modules/async_worker.py
#	modules/config.py
#	modules/private_logger.py
#	modules/util.py
2024-01-16 00:50:46 +01:00
Manuel Schmid ba5d0b6eaf refactor: rename metadata_schema to metadata_scheme 2024-01-15 23:59:57 +01:00
Manuel Schmid 7b9deb17ee feat: add config metadata_created_by 2024-01-15 23:06:20 +01:00
Manuel Schmid 191f8148e4 feat: add support for A1111 metadata schema
https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/cf2772fab0af5573da775e7437e6acdca424f26e/modules/processing.py#L672
2024-01-15 21:16:52 +01:00
Manuel Schmid 8d56318bed feat: add config and checkbox for save_metadata_to_images 2024-01-15 18:54:49 +01:00
Manuel Schmid f25bf49894 Merge branch 'jpg_config_image_extension'
# Conflicts:
#	modules/config.py
#	modules/flags.py
#	webui.py
2024-01-14 23:40:24 +01:00
Manuel Schmid 5b633f6cf8 refactor: rename image_extension to image_file_extension 2024-01-14 23:38:36 +01:00
Manuel Schmid b18ae4343d Merge branch 'jpg_config_image_extension'
# Conflicts:
#	modules/async_worker.py
#	modules/config.py
#	modules/flags.py
#	webui.py
2024-01-14 23:22:03 +01:00
eddyizm ab3acb7817 moved image extension to webui via async worker. Passing as parameter to log and get_current_html_path functions per feedback 2024-01-12 22:49:07 -08:00
eddyizm 9dfa1a99e3 moved function to config module 2024-01-10 19:06:40 -08:00
eddyizm e1697272ec feature: added flag, config and ui update for image extension change #1789 2024-01-10 09:36:27 -08:00
Manuel Schmid 1ff3efd56b Merge branch 'feature/update-juggernaut-xl-to-v8'
# Conflicts:
#	css/style.css
2024-01-10 11:02:10 +01:00
Manuel Schmid 92684132b5 clean up model download URL query parameters 2024-01-10 11:00:39 +01:00
Manuel Schmid 21bceb6d51 Merge branch 'feature/update-juggernaut-xl-to-v8' 2024-01-07 16:18:58 +01:00
Manuel Schmid 896fbc6185 feat: update JuggernautXL from v6 to v8 2024-01-07 15:47:07 +01:00
Manuel Schmid 1c42ceadbb Merge branch 'bugfix/fix-create-dir-if-not-existing'
# Conflicts:
#	modules/config.py
2023-12-31 00:10:38 +01:00
Manuel Schmid 917c422ec6 correctly create directory for outputs if not existing 2023-12-30 19:05:59 +01:00
Manuel Schmid 48b1324a26 add default_max_image_number to config, use as maximum in default_image_number (#1616) 2023-12-28 07:48:30 -08:00
Manuel Schmid 82f82e7941 remove restriction for maximum default_max_image_number value 2023-12-27 17:16:20 +01:00
Manuel Schmid 91be48c596 code cleanup 2023-12-25 00:07:14 +01:00
Manuel Schmid 3ba59df559 add default_overwrite_step handling for meta data and gradio
allows turbo preset switching to set default_overwrite_step correctly
2023-12-24 23:31:46 +01:00