Compare commits

...
12 Commits
Author SHA1 Message Date
Manuel Schmid f97adafc09 Merge pull request #3292 from lllyasviel/develop
Release v2.5.0
2024-07-17 12:18:08 +02:00
Manuel Schmid 97a8475a62 feat: revert disabling persistent style sorting, code cleanup 2024-07-17 12:04:34 +02:00
Manuel Schmid 033cb90e6e feat: revert adding issue templates 2024-07-17 11:52:20 +02:00
Manuel Schmid aed3240ccd feat: revert adding audio tab 2024-07-17 11:45:27 +02:00
Manuel Schmid 4f12bbb02b docs: add instructions how to manually update packages, update download URL in readme 2024-07-17 11:37:21 +02:00
Manuel Schmid 9f93cf6110 fix: resolve circular dependency for sha256, update files and init cache after initial model download
fixes https://github.com/lllyasviel/Fooocus/issues/2372

(cherry picked from commit 5c43a4bece)
2024-07-17 10:51:50 +02:00
Manuel Schmid 1f429ffeda release: bump version to 2.5.0, update changelog 2024-07-17 10:30:58 +02:00
Manuel Schmid 8d67166dd1 chore: use opencv-contrib-python-headless
https://github.com/lllyasviel/Fooocus/pull/1964
(cherry picked from commit 1f32f9f4ab)
2024-07-16 19:56:39 +02:00
Manuel Schmid 3a86fa2f0d chore: update packages #2 2024-07-16 16:31:15 +02:00
Manuel Schmid ef8dd27f91 chore: update packages
see https://github.com/lllyasviel/Fooocus/pull/2927
2024-07-16 16:30:47 +02:00
Manuel Schmid d46e47ab3d feat: revert adding translate feature #2 2024-07-16 14:48:54 +02:00
Manuel Schmid 069bea534b feat: change example audio file
(cherry picked from commit 02b06ccb33)
2024-07-16 13:59:51 +02:00
17 changed files with 43 additions and 179 deletions
-77
View File
@@ -1,77 +0,0 @@
name: Bug Report
description: Describe a problem
title: "[Bug]: "
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to fill out this bug report form!
- type: checkboxes
id: prerequisites
attributes:
label: Prerequisites
description: Please make sure to troubleshoot yourself before continuing.
options:
- label: I have read the [Troubleshooting Guide](https://github.com/lllyasviel/Fooocus/blob/main/troubleshoot.md)
required: true
- label: I have checked that this is not a duplicate of an already existing [issue](https://github.com/lllyasviel/Fooocus/issues)
required: true
- type: textarea
id: description
attributes:
label: Describe the problem
description: Also tell us, what did you expect to happen?
placeholder: "A clear and concise description of what the bug is."
validations:
required: true
- type: textarea
id: logs
attributes:
label: Full console log output
description: Please copy and paste the **full** console log here. You will make our job easier if you give a **full** log. This will be automatically formatted into code, so no need for backticks.
render: shell
validations:
required: true
- type: textarea
id: version
attributes:
label: Version
description: What version of Fooocus are you using? (see browser tab title or console log)
placeholder: "Example: Fooocus 2.1.855"
validations:
required: true
- type: dropdown
id: hosting
attributes:
label: Where are you running Fooocus?
multiple: false
options:
- Locally
- Locally with virtualisation (e.g. Docker)
- Cloud (Gradio)
- Cloud (other)
validations:
required: true
- type: input
id: operating-system
attributes:
label: Operating System
description: What operating system are you using?
placeholder: "Example: Windows 10"
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Chrome
- Firefox
- Microsoft Edge
- Safari
- other
validations:
required: true
- type: markdown
attributes:
value: "Thank you for completing our form!"
@@ -1,34 +0,0 @@
name: Feature request
description: Suggest an idea for this project
title: "[Feature]: "
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to fill out this feature request form!
- type: checkboxes
id: prerequisites
attributes:
label: Prerequisites
options:
- label: I have checked that this is not a duplicate of an already existing [feature request](https://github.com/lllyasviel/Fooocus/issues)
required: true
- type: textarea
id: relation-to-problem
attributes:
label: Is your feature request related to a problem? Please describe.
placeholder: "A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
."
validations:
required: true
- type: textarea
id: description
attributes:
label: Describe the idea you'd like
placeholder: "A clear and concise description of what you want to happen."
validations:
required: true
- type: markdown
attributes:
value: "Thank you for completing our form!"
+1 -1
View File
@@ -8,7 +8,7 @@
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"!pip install pygit2==1.12.2\n", "!pip install pygit2==1.15.1\n",
"%cd /content\n", "%cd /content\n",
"!git clone https://github.com/lllyasviel/Fooocus.git\n", "!git clone https://github.com/lllyasviel/Fooocus.git\n",
"%cd /content/Fooocus\n", "%cd /content/Fooocus\n",
+1 -1
View File
@@ -1 +1 @@
version = '2.5.0-rc1' version = '2.5.0'
+4 -1
View File
@@ -21,7 +21,6 @@ import fooocus_version
from build_launcher import build_launcher from build_launcher import build_launcher
from modules.launch_util import is_installed, run, python, run_pip, requirements_met, delete_folder_content 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.model_loader import load_file_from_url
from modules import config
REINSTALL_ALL = False REINSTALL_ALL = False
TRY_INSTALL_XFORMERS = False TRY_INSTALL_XFORMERS = False
@@ -86,6 +85,7 @@ if args.hf_mirror is not None :
print("Set hf_mirror to:", args.hf_mirror) print("Set hf_mirror to:", args.hf_mirror)
from modules import config from modules import config
from modules.hash_cache import init_cache
os.environ["U2NET_HOME"] = config.path_inpaint os.environ["U2NET_HOME"] = config.path_inpaint
os.environ['GRADIO_TEMP_DIR'] = config.temp_path 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.default_base_model_name, config.previous_default_models, config.checkpoint_downloads,
config.embeddings_downloads, config.lora_downloads, config.vae_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 * from webui import *
-1
View File
@@ -197,7 +197,6 @@ def worker():
from modules.upscaler import perform_upscale from modules.upscaler import perform_upscale
from modules.flags import Performance from modules.flags import Performance
from modules.meta_parser import get_metadata_parser from modules.meta_parser import get_metadata_parser
from modules.translator import translate2en
pid = os.getpid() pid = os.getpid()
print(f'Started worker with PID {pid}') print(f'Started worker with PID {pid}')
-5
View File
@@ -7,7 +7,6 @@ import args_manager
import tempfile import tempfile
import modules.flags import modules.flags
import modules.sdxl_styles import modules.sdxl_styles
from modules.hash_cache import init_cache
from modules.model_loader import load_file_from_url 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 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' file_name='sam_vit_h_4b8939.pth'
) )
return os.path.join(path_sam, '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)
+1 -2
View File
@@ -4,8 +4,7 @@ from concurrent.futures import ThreadPoolExecutor
from multiprocessing import cpu_count from multiprocessing import cpu_count
import args_manager import args_manager
from modules.util import get_file_from_folder_list from modules.util import sha256, HASH_SHA256_LENGTH, get_file_from_folder_list
from modules.util import sha256, HASH_SHA256_LENGTH
hash_cache_filename = 'hash_cache.txt' hash_cache_filename = 'hash_cache.txt'
hash_cache = {} hash_cache = {}
-1
View File
@@ -9,7 +9,6 @@ from PIL import Image
import fooocus_version import fooocus_version
import modules.config import modules.config
import modules.sdxl_styles import modules.sdxl_styles
from modules import hash_cache
from modules.flags import MetadataScheme, Performance, Steps from modules.flags import MetadataScheme, Performance, Steps
from modules.flags import SAMPLERS, CIVITAI_NO_KARRAS from modules.flags import SAMPLERS, CIVITAI_NO_KARRAS
from modules.hash_cache import sha256_from_cache from modules.hash_cache import sha256_from_cache
-2
View File
@@ -37,7 +37,6 @@ def sort_styles(selected):
global all_styles global all_styles
unselected = [y for y in all_styles if y not in selected] unselected = [y for y in all_styles if y not in selected]
sorted_styles = selected + unselected sorted_styles = selected + unselected
"""
try: try:
with open('sorted_styles.json', 'wt', encoding='utf-8') as fp: with open('sorted_styles.json', 'wt', encoding='utf-8') as fp:
json.dump(sorted_styles, fp, indent=4) json.dump(sorted_styles, fp, indent=4)
@@ -45,7 +44,6 @@ def sort_styles(selected):
print('Write style sorting failed.') print('Write style sorting failed.')
print(e) print(e)
all_styles = sorted_styles all_styles = sorted_styles
"""
return gr.CheckboxGroup.update(choices=sorted_styles) return gr.CheckboxGroup.update(choices=sorted_styles)
-15
View File
@@ -1,15 +0,0 @@
import translators
from functools import lru_cache
@lru_cache(maxsize=32, typed=False)
def translate2en(text, element):
if not text:
return text
try:
result = translators.translate_text(text,to_language='en')
print(f'[Parameters] Translated {element}: {result}')
return result
except Exception as e:
print(f'[Parameters] Error during translation of {element}: {e}')
return text
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -71,7 +71,7 @@ Fooocus also developed many "fooocus-only" features for advanced users to get pe
You can directly download Fooocus with: You can directly download Fooocus with:
**[>>> Click here to download <<<](https://github.com/lllyasviel/Fooocus/releases/download/release/Fooocus_win64_2-1-831.7z)** **[>>> Click here to download <<<](https://github.com/lllyasviel/Fooocus/releases/download/v2.5.0/Fooocus_win64_2-5-0.7z)**
After you download the file, please uncompress it and then run the "run.bat". After you download the file, please uncompress it and then run the "run.bat".
+20 -18
View File
@@ -1,22 +1,24 @@
torchsde==0.2.5 torchsde==0.2.6
einops==0.4.1 einops==0.8.0
transformers==4.30.2 transformers==4.42.4
safetensors==0.3.1 safetensors==0.4.3
accelerate==0.21.0 accelerate==0.32.1
pyyaml==6.0 pyyaml==6.0.1
Pillow==9.2.0 pillow==10.4.0
scipy==1.9.3 scipy==1.14.0
tqdm==4.65.0 tqdm==4.66.4
psutil==5.9.5 psutil==6.0.0
pytorch_lightning==1.9.4 pytorch_lightning==2.3.3
omegaconf==2.2.3 omegaconf==2.3.0
gradio==3.41.2 gradio==3.41.2
pygit2==1.12.2 pygit2==1.15.1
opencv-contrib-python==4.8.0.74 opencv-contrib-python-headless==4.10.0.84
httpx==0.24.1 httpx==0.27.0
onnxruntime==1.16.3 onnxruntime==1.18.1
timm==0.9.2 timm==1.0.7
translators==5.9.2 numpy==1.26.4
tokenizers==0.19.1
packaging==24.1
rembg==2.0.57 rembg==2.0.57
groundingdino-py==0.4.0 groundingdino-py==0.4.0
segment_anything==1.0 segment_anything==1.0
+10 -2
View File
@@ -1,10 +1,18 @@
# [2.5.0-rc1](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.0-rc1) # [2.5.0](https://github.com/lllyasviel/Fooocus/releases/tag/v2.5.0)
This version includes various package updates. If the auto-update doesn't work you can do one of the following:
1. Open a terminal in the Fooocus folder (location of config.txt) and run `git pull`
2. Update packages
- Windows (installation through zip file): open a terminal in the Fooocus folder (location of config.txt) `..\python_embeded\python.exe -m pip install -r .\requirements_versions.txt` (Windows using embedded python, installation method zip file) or download Fooocus again (zip file attached to this release)
- other: manually update the packages using `python.exe -m pip install -r requirements_versions.txt` or use the docker image
---
* Update python dependencies, add segment_anything
* 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). * 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 * Rewrite async worker code, make code much more reusable to allow iterations and improve reusability
* Improve GroundingDINO and SAM image masking * 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)) * Fix inference tensor version counter tracking issue for GroundingDINO after using Enhance (see [discussion](https://github.com/lllyasviel/Fooocus/discussions/3213))
* Update python dependencies, add segment_anything
* Move checkboxes Enable Mask Upload and Invert Mask When Generating from Developer Debug Mode to Inpaint Or Outpaint * 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 * 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 `--enable-describe-uov-image` to `--enable-auto-describe-image`, now also works for enhance image upload
+5 -18
View File
@@ -860,24 +860,6 @@ with shared.gradio_root:
refresh_files.click(refresh_files_clicked, [], refresh_files_output + lora_ctrls, refresh_files.click(refresh_files_clicked, [], refresh_files_output + lora_ctrls,
queue=False, show_progress=False) queue=False, show_progress=False)
with gr.Tab(label='Audio'):
play_notification = gr.Checkbox(label='Play notification after rendering', value=False)
notification_file = 'notification.mp3'
if os.path.exists(notification_file):
notification = gr.State(value=notification_file)
notification_input = gr.Audio(label='Notification', interactive=True, elem_id='audio_notification', visible=False, show_edit_button=False)
def play_notification_checked(r, notification):
return gr.update(visible=r, value=notification if r else None)
def notification_input_changed(notification_input, notification):
if notification_input:
notification = notification_input
return notification
play_notification.change(fn=play_notification_checked, inputs=[play_notification, notification], outputs=[notification_input], queue=False)
notification_input.change(fn=notification_input_changed, inputs=[notification_input, notification], outputs=[notification], queue=False)
state_is_generating = gr.State(False) state_is_generating = gr.State(False)
load_data_outputs = [advanced_checkbox, image_number, prompt, negative_prompt, style_selections, load_data_outputs = [advanced_checkbox, image_number, prompt, negative_prompt, style_selections,
@@ -1045,6 +1027,11 @@ with shared.gradio_root:
progress_html, progress_window, progress_gallery, gallery], progress_html, progress_window, progress_gallery, gallery],
queue=False) queue=False)
for notification_file in ['notification.ogg', 'notification.mp3']:
if os.path.exists(notification_file):
gr.Audio(interactive=False, value=notification_file, elem_id='audio_notification', visible=False)
break
def trigger_describe(mode, img): def trigger_describe(mode, img):
if mode == flags.desc_type_photo: if mode == flags.desc_type_photo:
from extras.interrogate import default_interrogator as default_interrogator_photo from extras.interrogate import default_interrogator as default_interrogator_photo