mirror of
https://github.com/lllyasviel/Fooocus.git
synced 2026-08-16 13:13:16 +02:00
Compare commits
12
Commits
v2.5.0-rc1
..
v2.5.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f97adafc09 | ||
|
|
97a8475a62 | ||
|
|
033cb90e6e | ||
|
|
aed3240ccd | ||
|
|
4f12bbb02b | ||
|
|
9f93cf6110 | ||
|
|
1f429ffeda | ||
|
|
8d67166dd1 | ||
|
|
3a86fa2f0d | ||
|
|
ef8dd27f91 | ||
|
|
d46e47ab3d | ||
|
|
069bea534b |
@@ -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
@@ -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
@@ -1 +1 @@
|
|||||||
version = '2.5.0-rc1'
|
version = '2.5.0'
|
||||||
|
|||||||
@@ -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 *
|
||||||
|
|||||||
@@ -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}')
|
||||||
|
|||||||
@@ -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)
|
|
||||||
|
|||||||
@@ -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 = {}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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.
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user