feat: add separate steps

This commit is contained in:
Bingsu
2023-05-12 12:59:17 +09:00
parent 7ea6e4dbc7
commit 781494ce1f
2 changed files with 52 additions and 16 deletions

View File

@@ -33,6 +33,8 @@ _all_args = [
("ad_use_inpaint_width_height", "ADetailer use inpaint width/height"),
("ad_inpaint_width", "ADetailer inpaint width"),
("ad_inpaint_height", "ADetailer inpaint height"),
("ad_use_steps", "ADetailer use separate steps"),
("ad_steps", "ADetailer steps"),
("ad_use_cfg_scale", "ADetailer use separate CFG scale"),
("ad_cfg_scale", "ADetailer CFG scale"),
("ad_controlnet_model", "ADetailer ControlNet model"),
@@ -58,6 +60,8 @@ class ADetailerArgs(BaseModel, extra=Extra.forbid):
ad_use_inpaint_width_height: bool = False
ad_inpaint_width: PositiveInt = 512
ad_inpaint_height: PositiveInt = 512
ad_use_steps: bool = False
ad_steps: PositiveInt = 28
ad_use_cfg_scale: bool = False
ad_cfg_scale: NonNegativeFloat = 7.0
ad_controlnet_model: str = "None"
@@ -92,11 +96,20 @@ class ADetailerArgs(BaseModel, extra=Extra.forbid):
if params["ADetailer y offset"] == 0:
params.pop("ADetailer y offset")
if not params["ADetailer inpaint full"]:
params.pop("ADetailer inpaint padding")
if not params["ADetailer use inpaint width/height"]:
params.pop("ADetailer use inpaint width/height")
params.pop("ADetailer inpaint width")
params.pop("ADetailer inpaint height")
if not params["ADetailer use separate steps"]:
params.pop("ADetailer use separate steps")
params.pop("ADetailer steps")
if not params["ADetailer use separate CFG scale"]:
params.pop("ADetailer use separate CFG scale")
params.pop("ADetailer CFG scale")
if params["ADetailer ControlNet model"] == "None":

View File

@@ -210,22 +210,22 @@ class AfterDetailerScript(scripts.Script):
with gr.Group():
with gr.Row():
w[n].ad_inpaint_full_res = gr.Checkbox(
label="Inpaint at full resolution " + suffix(n),
value=True,
visible=True,
)
w[n].ad_inpaint_full_res_padding = gr.Slider(
label="Inpaint at full resolution padding, pixels "
+ suffix(n),
minimum=0,
maximum=256,
step=4,
value=0,
visible=True,
)
with gr.Column():
w[n].ad_inpaint_full_res = gr.Checkbox(
label="Inpaint at full resolution " + suffix(n),
value=True,
visible=True,
)
w[n].ad_inpaint_full_res_padding = gr.Slider(
label="Inpaint at full resolution padding, pixels "
+ suffix(n),
minimum=0,
maximum=256,
step=4,
value=0,
visible=True,
)
with gr.Row():
with gr.Column():
w[n].ad_use_inpaint_width_height = gr.Checkbox(
label="Use separate width/height" + suffix(n),
@@ -251,6 +251,23 @@ class AfterDetailerScript(scripts.Script):
visible=True,
)
with gr.Row():
with gr.Column():
w[n].ad_use_steps = gr.Checkbox(
label="Use separate steps" + suffix(n),
value=False,
visible=True,
)
w[n].ad_steps = gr.Slider(
label="ADetailer steps" + suffix(n),
minimum=1,
maximum=150,
step=1,
value=28,
visible=True,
)
with gr.Column():
w[n].ad_use_cfg_scale = gr.Checkbox(
label="Use separate CFG scale" + suffix(n),
@@ -445,6 +462,11 @@ class AfterDetailerScript(scripts.Script):
return width, height
def get_steps(self, p, args: ADetailerArgs) -> int:
if args.ad_use_steps:
return args.ad_steps
return p.steps
def get_cfg_scale(self, p, args: ADetailerArgs) -> float:
if args.ad_use_cfg_scale:
return args.ad_cfg_scale
@@ -491,6 +513,7 @@ class AfterDetailerScript(scripts.Script):
prompt, negative_prompt = self.get_prompt(p, args)
seed, subseed = self.get_seed(p)
width, height = self.get_width_height(p, args)
steps = self.get_steps(p, args)
cfg_scale = self.get_cfg_scale(p, args)
sampler_name = p.sampler_name
@@ -521,7 +544,7 @@ class AfterDetailerScript(scripts.Script):
sampler_name=sampler_name,
batch_size=1,
n_iter=1,
steps=p.steps,
steps=steps,
cfg_scale=cfg_scale,
width=width,
height=height,