Skip to content

Commit

Permalink
Merge pull request #71 from glucauze/v1.2.5
Browse files Browse the repository at this point in the history
add seed selection
  • Loading branch information
glucauze committed Aug 25, 2023
2 parents 9977168 + 38f46d3 commit 806086b
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 123 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# 1.2.5

Allow seed selection in inpainting.

# 1.2.4

Fix default settings by marking only managed field as do_not_save.

See the discussion here : https://github.com/glucauze/sd-webui-faceswaplab/issues/62

# 1.2.3

Speed up ui : change the way default settings are manage by not storing them in ui-config.json
Expand Down
1 change: 1 addition & 0 deletions client_api/api_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class InpaintingOptions(BaseModel):
inpainting_model: str = Field(
description="Inpainting model", examples=["Current"], default="Current"
)
inpainting_seed: int = Field(description="Inpainting Seed", ge=-1, default=-1)


class InswappperOptions(BaseModel):
Expand Down
Binary file modified client_api/test.safetensors
Binary file not shown.
2 changes: 1 addition & 1 deletion scripts/faceswaplab_globals.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
)

# Defining the version flag for the application
VERSION_FLAG: str = "v1.2.4"
VERSION_FLAG: str = "v1.2.5"
# Defining the path for 'sd-webui-faceswaplab' inside the 'extensions' directory
EXTENSION_PATH = os.path.join("extensions", "sd-webui-faceswaplab")

Expand Down
2 changes: 2 additions & 0 deletions scripts/faceswaplab_inpainting/faceswaplab_inpainting.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class InpaintingOptions:
inpainting_steps: int = 20
inpainting_sampler: str = "Euler"
inpainting_model: str = "Current"
inpainting_seed: int = -1

@staticmethod
def from_gradio(components: List[gr.components.Component]) -> "InpaintingOptions":
Expand All @@ -38,4 +39,5 @@ def from_api_dto(dto: Optional[api_utils.InpaintingOptions]) -> "InpaintingOptio
inpainting_steps=dto.inpainting_steps,
inpainting_sampler=dto.inpainting_sampler,
inpainting_model=dto.inpainting_model,
inpainting_seed=dto.inpainting_seed,
)
1 change: 1 addition & 0 deletions scripts/faceswaplab_inpainting/i2i_pp.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ def img2img_diffusion(
"prompt": prompt,
"negative_prompt": negative_prompt,
"denoising_strength": options.inpainting_denoising_strengh,
"seed": options.inpainting_seed,
}
# Remove the following as they are not always supported on all platform :
# "override_settings": {
Expand Down
119 changes: 61 additions & 58 deletions scripts/faceswaplab_ui/faceswaplab_inpainting_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,68 +4,71 @@
from scripts.faceswaplab_utils.sd_utils import get_sd_option


def face_inpainting_ui(
name: str, id_prefix: str = "faceswaplab", description: str = ""
) -> List[gr.components.Component]:
with gr.Accordion(name, open=False):
gr.Markdown(description)
inpainting_denoising_strength = gr.Slider(
0,
1,
0,
step=0.01,
elem_id=f"{id_prefix}_pp_inpainting_denoising_strength",
label="Denoising strenght",
)
def face_inpainting_ui(id_prefix: str = "faceswaplab") -> List[gr.components.Component]:
inpainting_denoising_strength = gr.Slider(
0,
1,
0,
step=0.01,
elem_id=f"{id_prefix}_pp_inpainting_denoising_strength",
label="Denoising strenght",
)

inpainting_denoising_prompt = gr.Textbox(
get_sd_option(
"faceswaplab_pp_default_inpainting_prompt", "Portrait of a [gender]"
),
elem_id=f"{id_prefix}_pp_inpainting_denoising_prompt",
label="Inpainting prompt use [gender] instead of men or woman",
inpainting_denoising_prompt = gr.Textbox(
get_sd_option(
"faceswaplab_pp_default_inpainting_prompt", "Portrait of a [gender]"
),
elem_id=f"{id_prefix}_pp_inpainting_denoising_prompt",
label="Inpainting prompt use [gender] instead of men or woman",
)
inpainting_denoising_negative_prompt = gr.Textbox(
get_sd_option("faceswaplab_pp_default_inpainting_negative_prompt", "blurry"),
elem_id=f"{id_prefix}_pp_inpainting_denoising_neg_prompt",
label="Inpainting negative prompt use [gender] instead of men or woman",
)
with gr.Row():
samplers_names = [s.name for s in sd_samplers.all_samplers]
inpainting_sampler = gr.Dropdown(
choices=samplers_names,
value=[samplers_names[0]],
label="Inpainting Sampler",
elem_id=f"{id_prefix}_pp_inpainting_sampler",
)
inpainting_denoising_negative_prompt = gr.Textbox(
get_sd_option(
"faceswaplab_pp_default_inpainting_negative_prompt", "blurry"
),
elem_id=f"{id_prefix}_pp_inpainting_denoising_neg_prompt",
label="Inpainting negative prompt use [gender] instead of men or woman",
inpainting_denoising_steps = gr.Slider(
1,
150,
20,
step=1,
label="Inpainting steps",
elem_id=f"{id_prefix}_pp_inpainting_steps",
)
with gr.Row():
samplers_names = [s.name for s in sd_samplers.all_samplers]
inpainting_sampler = gr.Dropdown(
choices=samplers_names,
value=[samplers_names[0]],
label="Inpainting Sampler",
elem_id=f"{id_prefix}_pp_inpainting_sampler",
)
inpainting_denoising_steps = gr.Slider(
1,
150,
20,
step=1,
label="Inpainting steps",
elem_id=f"{id_prefix}_pp_inpainting_steps",
)

inpaiting_model = gr.Dropdown(
choices=["Current"] + sd_models.checkpoint_tiles(),
default="Current",
label="sd model (experimental)",
elem_id=f"{id_prefix}_pp_inpainting_sd_model",
)
inpaiting_model = gr.Dropdown(
choices=["Current"] + sd_models.checkpoint_tiles(),
default="Current",
label="sd model (experimental)",
elem_id=f"{id_prefix}_pp_inpainting_sd_model",
)

inpaiting_seed = gr.Number(
label="Inpainting seed",
value=0,
minimum=0,
precision=0,
elem_id=f"{id_prefix}_pp_inpainting_seed",
)

gradio_components: List[gr.components.Component] = [
inpainting_denoising_strength,
inpainting_denoising_prompt,
inpainting_denoising_negative_prompt,
inpainting_denoising_steps,
inpainting_sampler,
inpaiting_model,
]
gradio_components: List[gr.components.Component] = [
inpainting_denoising_strength,
inpainting_denoising_prompt,
inpainting_denoising_negative_prompt,
inpainting_denoising_steps,
inpainting_sampler,
inpaiting_model,
inpaiting_seed,
]

for component in gradio_components:
setattr(component, "do_not_save_to_config", True)
for component in gradio_components:
setattr(component, "do_not_save_to_config", True)

return gradio_components
return gradio_components
60 changes: 6 additions & 54 deletions scripts/faceswaplab_ui/faceswaplab_postprocessing_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from modules import shared, sd_models
from scripts.faceswaplab_postprocessing.postprocessing_options import InpaintingWhen
from scripts.faceswaplab_utils.sd_utils import get_sd_option
from scripts.faceswaplab_ui.faceswaplab_inpainting_ui import face_inpainting_ui


def postprocessing_ui() -> List[gr.components.Component]:
Expand Down Expand Up @@ -66,62 +67,19 @@ def postprocessing_ui() -> List[gr.components.Component]:
label="Upscaler visibility (if scale = 1)",
elem_id="faceswaplab_pp_upscaler_visibility",
)
with gr.Accordion(f"Post Inpainting", open=True):

with gr.Accordion(label="Global-Inpainting (all faces)", open=False):
gr.Markdown(
"""Inpainting sends image to inpainting with a mask on face (once for each faces)."""
"Inpainting sends image to inpainting with a mask on face (once for each faces)."
)
inpainting_when = gr.Dropdown(
elem_id="faceswaplab_pp_inpainting_when",
choices=[e.value for e in InpaintingWhen.__members__.values()],
value=[InpaintingWhen.BEFORE_RESTORE_FACE.value],
label="Enable/When",
)
inpainting_denoising_strength = gr.Slider(
0,
1,
0,
step=0.01,
elem_id="faceswaplab_pp_inpainting_denoising_strength",
label="Denoising strenght (will send face to img2img after processing)",
)
global_inpainting = face_inpainting_ui("faceswaplab_gpp")

inpainting_denoising_prompt = gr.Textbox(
get_sd_option(
"faceswaplab_pp_default_inpainting_prompt", "Portrait of a [gender]"
),
elem_id="faceswaplab_pp_inpainting_denoising_prompt",
label="Inpainting prompt use [gender] instead of men or woman",
)
inpainting_denoising_negative_prompt = gr.Textbox(
get_sd_option(
"faceswaplab_pp_default_inpainting_negative_prompt", "blurry"
),
elem_id="faceswaplab_pp_inpainting_denoising_neg_prompt",
label="Inpainting negative prompt use [gender] instead of men or woman",
)
with gr.Row():
samplers_names = [s.name for s in modules.sd_samplers.all_samplers] # type: ignore
inpainting_sampler = gr.Dropdown(
choices=samplers_names,
value=[samplers_names[0]],
label="Inpainting Sampler",
elem_id="faceswaplab_pp_inpainting_sampler",
)
inpainting_denoising_steps = gr.Slider(
1,
150,
20,
step=1,
label="Inpainting steps",
elem_id="faceswaplab_pp_inpainting_steps",
)

inpaiting_model = gr.Dropdown(
choices=["Current"] + sd_models.checkpoint_tiles(),
default="Current",
label="sd model (experimental)",
elem_id="faceswaplab_pp_inpainting_sd_model",
)
components = [
face_restorer_name,
face_restorer_visibility,
Expand All @@ -130,13 +88,7 @@ def postprocessing_ui() -> List[gr.components.Component]:
upscaler_scale,
upscaler_visibility,
inpainting_when,
inpainting_denoising_strength,
inpainting_denoising_prompt,
inpainting_denoising_negative_prompt,
inpainting_denoising_steps,
inpainting_sampler,
inpaiting_model,
]
] + global_inpainting

# Ask sd to not store in ui-config.json
for component in components:
Expand Down
20 changes: 10 additions & 10 deletions scripts/faceswaplab_ui/faceswaplab_unit_ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,19 +249,19 @@ def refresh_fn(selected: str):
elem_id=f"{id_prefix}_face{unit_num}_min_ref_similarity",
)

pre_inpainting = face_inpainting_ui(
name="Pre-Inpainting (Before swapping)",
id_prefix=f"{id_prefix}_face{unit_num}_preinpainting",
description="Pre-inpainting sends face to inpainting before swapping",
)
with gr.Accordion(label="Pre-Inpainting (before swapping)", open=False):
gr.Markdown("Pre-inpainting sends face to inpainting before swapping")
pre_inpainting = face_inpainting_ui(
id_prefix=f"{id_prefix}_face{unit_num}_preinpainting",
)

options = faceswap_unit_advanced_options(is_img2img, unit_num, id_prefix)

post_inpainting = face_inpainting_ui(
name="Post-Inpainting (After swapping)",
id_prefix=f"{id_prefix}_face{unit_num}_postinpainting",
description="Post-inpainting sends face to inpainting after swapping",
)
with gr.Accordion(label="Post-Inpainting (After swapping)", open=False):
gr.Markdown("Pre-inpainting sends face to inpainting before swapping")
post_inpainting = face_inpainting_ui(
id_prefix=f"{id_prefix}_face{unit_num}_postinpainting",
)

gradio_components: List[gr.components.Component] = (
[
Expand Down

0 comments on commit 806086b

Please sign in to comment.