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

cf2772fab0/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 cf2772fab0/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
MindOfMatter 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
MindOfMatter 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
dooglewoogle 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
eddyizm 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
cf2772fab0/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
Manuel Schmid 1e0f95c6cf
Merge branch 'feature/add-preset-selection' 2023-12-24 13:13:49 +01:00
Manuel Schmid e72850de70
download missing models from preset 2023-12-24 13:09:20 +01:00
Manuel Schmid 2fe48ab293
Merge branch 'feature/add-preset-selection'
# Conflicts:
#	webui.py
2023-12-23 23:27:35 +01:00
Manuel Schmid ccfd4f5094
add preset refresh on "Refresh All Files" click 2023-12-23 22:17:46 +01:00
Manuel Schmid 2770a40dc1
use default config as fallback value 2023-12-23 21:38:22 +01:00
Manuel Schmid 891a1acb62
add LoRA handling 2023-12-23 19:57:56 +01:00
Manuel Schmid f56e3eb3b0
add preset selection
uses meta parsing to set presets in user session (UI elements only)
2023-12-23 19:30:49 +01:00
Manuel Schmid f47c57a2e5
Merge branch 'feature/add-nsfw-filter'
# Conflicts:
#	modules/advanced_parameters.py
#	webui.py
2023-12-16 23:01:55 +01:00
Manuel Schmid cc9f3d6c71
Merge branch 'feature/add-nsfw-filter'
# Conflicts:
#	modules/async_worker.py
#	modules/censor.py
#	modules/config.py
2023-12-16 19:39:19 +01:00
Manuel Schmid cdaaec3e71
use config to set cache dir for safety checker 2023-12-16 19:25:02 +01:00
Manuel Schmid ea764855f8
Merge remote-tracking branch 'upstream/main' into feature/add-nsfw-filter
# Conflicts:
#	modules/async_worker.py
#	modules/config.py
2023-12-14 22:55:45 +01:00
Manuel Schmid 96523e9397
fix config mapping for default_performance 2023-12-05 23:57:50 +01:00
Manuel Schmid a5f3e4af9b
Merge branch 'hotfix/prevent-skipping-and-stopping-by-other-users'
# Conflicts:
#	modules/config.py
2023-11-20 22:01:40 +01:00
lllyasviel dececbd060
[2.1.822] New Inpaint System
See related documents for more details.
2023-11-19 17:37:22 -08:00
Manuel Schmid 2e1e82941d
rebase changes of main for easier handling 2023-11-18 12:58:05 +01:00
Manuel Schmid 6893c8dd48
Merge commit '8f9f020e8f90efb3787f0feb0e544539110e40ce' into feature/add-nsfw-filter
# Conflicts:
#	modules/async_worker.py
2023-11-18 12:03:09 +01:00
lllyasviel 675805960a
2.1.821
* New UI for LoRAs.
* Improved preset system: normalized preset keys and file names.
* Improved session system: now multiple users can use one Fooocus at the same time without seeing others' results.
* Improved some computation related to model precision.
* Improved config loading system with user-friendly prints.
2023-11-17 11:25:39 -08:00
Manuel Schmid 52ae346c9d
add nsfw image censoring
activatable via config, uses CompVis/stable-diffusion-safety-checker
2023-11-15 22:00:45 +01:00
lllyasviel cf2c89c288 Fix bug when the weight is exactly one. 2023-11-15 10:07:15 -08:00
lllyasviel eae0b71ff9 Update config.py 2023-11-15 02:45:56 -08:00
lllyasviel 3a9c3c07d1 multiple loras in preset 2023-11-15 02:41:49 -08:00
lllyasviel 8c49bb1cba Add previously removed preset 2023-11-15 02:19:20 -08:00
lllyasviel 8f23e2e969 Allow preset to set default inpaint engine. 2023-11-15 01:55:02 -08:00
lllyasviel cbe66fd5e0 2.1.812 2023-11-15 01:49:01 -08:00
lllyasviel 861c8d38df 810 2023-11-15 01:22:37 -08:00
lllyasviel cec0c2a8df
2.1.808
* Aspect ratios now show aspect ratios.
* Added style search.
* Added style sorting/ordering/favorites.
2023-11-14 14:06:12 -08:00
lllyasviel d3d63d5bf6 2.1.802
Default inpaint engine changed to v2.6. You can still use inpaint engine v1 in dev tools.
Fix some VRAM problems.
2023-11-13 04:37:25 -08:00
lllyasviel 649f45a6df 'Extreme Speed' performance mode 2023-11-12 07:55:44 -08:00
lllyasviel 2bef62c545
2.1.790
2.1.790
2023-11-11 22:13:13 -08:00
lllyasviel 3d180e9eb6 inpaint engine v2.6 2023-11-11 09:47:54 -08:00
lllyasviel 316ac6fafa new config 2023-11-11 07:45:07 -08:00
lllyasviel 4fe08161a5 2.1.782
2.1.782
2023-11-11 01:43:01 -08:00
Renamed from modules/path.py (Browse further)