diff --git a/fooocus_colab.ipynb b/fooocus_colab.ipynb index de392916..8038c732 100644 --- a/fooocus_colab.ipynb +++ b/fooocus_colab.ipynb @@ -17,7 +17,7 @@ }, "outputs": [], "source": [ - "!pip install pygit2==1.12.2\n", + "!pip install pygit2==1.15.1\n", "%cd /content\n", "!git clone https://github.com/mashb1t/Fooocus.git\n", "%cd /content/Fooocus" diff --git a/fooocus_version.py b/fooocus_version.py index d709b129..674c9e77 100644 --- a/fooocus_version.py +++ b/fooocus_version.py @@ -1 +1 @@ -version = '2.6.0-rc2 (mashb1t)' +version = '2.6.0 (mashb1t)' diff --git a/language/en.json b/language/en.json index 09e7a38e..332a558d 100644 --- a/language/en.json +++ b/language/en.json @@ -26,7 +26,7 @@ "Upscale (1.5x)": "Upscale (1.5x)", "Upscale (2x)": "Upscale (2x)", "Upscale (Fast 2x)": "Upscale (Fast 2x)", - "\ud83d\udcd4 Document": "\uD83D\uDCD4 Document", + "\ud83d\udcd4 Documentation": "\uD83D\uDCD4 Documentation", "Image": "Image", "Stop At": "Stop At", "Weight": "Weight", @@ -47,8 +47,9 @@ "* \"Inpaint or Outpaint\" is powered by the sampler \"DPMPP Fooocus Seamless 2M SDE Karras Inpaint Sampler\" (beta)": "* \"Inpaint or Outpaint\" is powered by the sampler \"DPMPP Fooocus Seamless 2M SDE Karras Inpaint Sampler\" (beta)", "Advanced options": "Advanced options", "Generate mask from image": "Generate mask from image", - "Setting": "Setting", + "Settings": "Settings", "Style": "Style", + "Styles": "Styles", "Preset": "Preset", "Performance": "Performance", "Speed": "Speed", @@ -283,7 +284,7 @@ "Volumetric Lighting": "Volumetric Lighting", "Watercolor 2": "Watercolor 2", "Whimsical And Playful": "Whimsical And Playful", - "Model": "Model", + "Models": "Models", "Base Model (SDXL only)": "Base Model (SDXL only)", "sd_xl_base_1.0_0.9vae.safetensors": "sd_xl_base_1.0_0.9vae.safetensors", "bluePencilXL_v009.safetensors": "bluePencilXL_v009.safetensors", diff --git a/launch.py b/launch.py index 937c0cdb..77c2e2c2 100644 --- a/launch.py +++ b/launch.py @@ -21,7 +21,6 @@ import fooocus_version from build_launcher import build_launcher from modules.launch_util import is_installed, run, python, run_pip, requirements_met, delete_folder_content from modules.model_loader import load_file_from_url -from modules import config REINSTALL_ALL = False TRY_INSTALL_XFORMERS = False @@ -86,6 +85,7 @@ if args.hf_mirror is not None : print("Set hf_mirror to:", args.hf_mirror) from modules import config +from modules.hash_cache import init_cache os.environ["U2NET_HOME"] = config.path_inpaint os.environ['GRADIO_TEMP_DIR'] = config.temp_path @@ -141,4 +141,7 @@ config.default_base_model_name, config.checkpoint_downloads = download_models( config.default_base_model_name, config.previous_default_models, config.checkpoint_downloads, config.embeddings_downloads, config.lora_downloads, config.vae_downloads) +config.update_files() +init_cache(config.model_filenames, config.paths_checkpoints, config.lora_filenames, config.paths_loras) + from webui import * diff --git a/modules/config.py b/modules/config.py index 05d17843..ee867e5f 100644 --- a/modules/config.py +++ b/modules/config.py @@ -7,7 +7,6 @@ import args_manager import tempfile import modules.flags import modules.sdxl_styles -from modules.hash_cache import init_cache from modules.model_loader import load_file_from_url from modules.extra_utils import makedirs_with_log, get_files_from_folder, try_eval_env_var @@ -889,7 +888,3 @@ def downloading_sam_vit_h(): file_name='sam_vit_h_4b8939.pth' ) return os.path.join(path_sam, 'sam_vit_h_4b8939.pth') - - -update_files() -init_cache(model_filenames, paths_checkpoints, lora_filenames, paths_loras) diff --git a/modules/hash_cache.py b/modules/hash_cache.py index c33e675e..e857b003 100644 --- a/modules/hash_cache.py +++ b/modules/hash_cache.py @@ -4,8 +4,7 @@ from concurrent.futures import ThreadPoolExecutor from multiprocessing import cpu_count import args_manager -from modules.util import get_file_from_folder_list -from modules.util import sha256, HASH_SHA256_LENGTH +from modules.util import sha256, HASH_SHA256_LENGTH, get_file_from_folder_list hash_cache_filename = 'hash_cache.txt' hash_cache = {} diff --git a/requirements_versions.txt b/requirements_versions.txt index 9196f1db..2900a56a 100644 --- a/requirements_versions.txt +++ b/requirements_versions.txt @@ -1,21 +1,24 @@ -torchsde==0.2.5 -einops==0.4.1 -transformers==4.30.2 -safetensors==0.3.1 -accelerate==0.21.0 -pyyaml==6.0 -Pillow==9.2.0 -scipy==1.9.3 -tqdm==4.65.0 -psutil==5.9.5 -pytorch_lightning==1.9.4 -omegaconf==2.2.3 +torchsde==0.2.6 +einops==0.8.0 +transformers==4.42.4 +safetensors==0.4.3 +accelerate==0.32.1 +pyyaml==6.0.1 +pillow==10.4.0 +scipy==1.14.0 +tqdm==4.66.4 +psutil==6.0.0 +pytorch_lightning==2.3.3 +omegaconf==2.3.0 gradio==3.41.2 -pygit2==1.12.2 -opencv-contrib-python==4.8.0.74 -httpx==0.24.1 -onnxruntime==1.16.3 -timm==0.9.2 +pygit2==1.15.1 +opencv-contrib-python-headless==4.10.0.84 +httpx==0.27.0 +onnxruntime==1.18.1 +timm==1.0.7 +numpy==1.26.4 +tokenizers==0.19.1 +packaging==24.1 translators==5.9.2 rembg==2.0.57 groundingdino-py==0.4.0 diff --git a/update_log.md b/update_log.md index 6cf1ed71..5dc2c374 100644 --- a/update_log.md +++ b/update_log.md @@ -1,11 +1,18 @@ -# [2.6.0-rc2](https://github.com/mashb1t/Fooocus/releases/tag/v2.6.0-rc2) +# [2.6.0](https://github.com/mashb1t/Fooocus/releases/tag/v2.6.0) -* Add hash generation multi-threading support, change `--rebuild-hash-cache` from bool to int (number of CPU cores) +* Update python dependencies +* Add enhance feature, which offers easy image refinement steps (similar to adetailer, but based on dynamic image detection instead of specific mask detection models). See [documentation](https://github.com/lllyasviel/Fooocus/discussions/3281). +* Rewrite async worker code, make code much more reusable to allow iterations and improve reusability +* Improve GroundingDINO and SAM image masking * Fix inference tensor version counter tracking issue for GroundingDINO after using Enhance (see [discussion](https://github.com/lllyasviel/Fooocus/discussions/3213)) - - -# [2.6.0-rc1](https://github.com/mashb1t/Fooocus/releases/tag/v2.6.0-rc1) - +* Move checkboxes Enable Mask Upload and Invert Mask When Generating from Developer Debug Mode to Inpaint Or Outpaint +* Add persistent model cache for metadata. Use `--rebuild-hash-cache X` (X = int, number of CPU cores, default all) to manually rebuild the cache for all non-cached hashes +* Rename `--enable-describe-uov-image` to `--enable-auto-describe-image`, now also works for enhance image upload +* Rename checkbox `Enable Mask Upload` to `Enable Advanced Masking Features` to better hint to mask auto-generation feature +* Get upscale model filepath by calling downloading_upscale_model() to ensure the model exists +* Rename tab titles and translations from singular to plural +* Rename document to documentation +* Only import translator when needed * Update default models to latest versions * animaPencilXL_v400 => animaPencilXL_v500 * DreamShaperXL_Turbo_dpmppSdeKarras => DreamShaperXL_Turbo_v2_1 @@ -15,8 +22,6 @@ * Add restart sampler ([paper](https://arxiv.org/abs/2306.14878)) * Add config option for default_inpaint_engine_version, sets inpaint engine for pony_v6 and playground_v2.5 to None for improved results (incompatible with inpaint engine) * Add image editor functionality to mask upload (same as for inpaint, now correctly resizes and allows more detailed mask creation) -* Add persistent model cache for metadata. Use `--rebuild-hash-cache` to manually rebuild the cache for all non-cached hashes -* Rename `--enable-describe-uov-image` to `--enable-auto-describe-image` to better reflect its purpose (now also works for enhance image upload) # [2.5.2](https://github.com/mashb1t/Fooocus/releases/tag/v2.5.2) diff --git a/webui.py b/webui.py index cb0f48d5..2eb0f609 100644 --- a/webui.py +++ b/webui.py @@ -189,7 +189,7 @@ with shared.gradio_root: uov_input_image = grh.Image(label='Image', source='upload', type='numpy', show_label=False) with gr.Column(): uov_method = gr.Radio(label='Upscale or Variation:', choices=flags.uov_list, value=flags.disabled) - gr.HTML('\U0001F4D4 Document') + gr.HTML('\U0001F4D4 Documentation') with gr.TabItem(label='Image Prompt') as ip_tab: with gr.Row(): ip_images = [] @@ -222,7 +222,7 @@ with shared.gradio_root: ip_type.change(lambda x: flags.default_parameters[x], inputs=[ip_type], outputs=[ip_stop, ip_weight], queue=False, show_progress=False) ip_ad_cols.append(ad_col) ip_advanced = gr.Checkbox(label='Advanced', value=False, container=False) - gr.HTML('* \"Image Prompt\" is powered by Fooocus Image Mixture Engine (v1.0.1). \U0001F4D4 Document') + gr.HTML('* \"Image Prompt\" is powered by Fooocus Image Mixture Engine (v1.0.1). \U0001F4D4 Documentation') def ip_advance_checked(x): return [gr.update(visible=x)] * len(ip_ad_cols) + \ @@ -246,7 +246,7 @@ with shared.gradio_root: label='Additional Prompt Quick List', components=[inpaint_additional_prompt], visible=False) - gr.HTML('* Powered by Fooocus Inpaint Engine \U0001F4D4 Document') + gr.HTML('* Powered by Fooocus Inpaint Engine \U0001F4D4 Documentation') example_inpaint_prompts.click(lambda x: x[0], inputs=example_inpaint_prompts, outputs=inpaint_additional_prompt, show_progress=False, queue=False) with gr.Column(visible=False) as inpaint_mask_generation_col: @@ -322,7 +322,7 @@ with shared.gradio_root: value=flags.desc_type_photo) desc_btn = gr.Button(value='Describe this Image into Prompt') desc_image_size = gr.Textbox(label='Image Size and Recommended Size', elem_id='desc_image_size', visible=False) - gr.HTML('\U0001F4D4 Document') + gr.HTML('\U0001F4D4 Documentation') def trigger_show_image_properties(image): value = modules.util.get_image_size_info(image, modules.flags.sdxl_aspect_ratios) @@ -335,7 +335,7 @@ with shared.gradio_root: with gr.Row(): with gr.Column(): enhance_input_image = grh.Image(label='Use with Enhance, skips image generation', source='upload', type='numpy') - gr.HTML('\U0001F4D4 Document') + gr.HTML('\U0001F4D4 Documentation') with gr.TabItem(label='Metadata') as metadata_tab: with gr.Column(): @@ -379,7 +379,8 @@ with shared.gradio_root: inputs=enhance_uov_processing_order, outputs=enhance_uov_prompt_type, queue=False, show_progress=False) - gr.HTML('\U0001F4D4 Document') + gr.HTML('\U0001F4D4 Documentation') + enhance_ctrls = [] enhance_inpaint_mode_ctrls = [] enhance_inpaint_engine_ctrls = [] @@ -471,7 +472,7 @@ with shared.gradio_root: '(default is 0, always processed before any mask invert)') enhance_mask_invert = gr.Checkbox(label='Invert Mask', value=False) - gr.HTML('\U0001F4D4 Document') + gr.HTML('\U0001F4D4 Documentation') enhance_ctrls += [ enhance_enabled, @@ -674,7 +675,7 @@ with shared.gradio_root: sharpness = gr.Slider(label='Image Sharpness', minimum=0.0, maximum=30.0, step=0.001, value=modules.config.default_sample_sharpness, info='Higher value means image and texture are sharper.') - gr.HTML('\U0001F4D4 Document') + gr.HTML('\U0001F4D4 Documentation') dev_mode = gr.Checkbox(label='Developer Debug Mode', value=False, container=False) with gr.Column(visible=False) as dev_tools: