update scripts

This commit is contained in:
Vladimir Mandic
2023-10-22 12:27:33 -04:00
parent e8be0a8cdc
commit c0ef02abba
7 changed files with 22 additions and 42 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ from PIL import Image, ImageDraw
import modules.scripts as scripts
from modules import images, devices
from modules.processing import Processed, process_images
from modules.shared import opts, state
from modules.shared import opts, state, log
class Script(scripts.Script):
@@ -102,7 +102,7 @@ class Script(scripts.Script):
work_latent_mask.append(tiledata_latent_mask[2])
batch_count = len(work)
print(f"Poor man's outpainting will process a total of {len(work)} images tiled as {len(grid.tiles[0][2])}x{len(grid.tiles)}.")
log.info(f"Poor-man-outpainting: images={len(work)} tiles={len(grid.tiles[0][2])}x{len(grid.tiles)}.")
state.job_count = batch_count
+2 -2
View File
@@ -3,7 +3,7 @@ import gradio as gr
import modules.scripts as scripts
from modules import images
from modules.processing import process_images
from modules.shared import opts, state
from modules.shared import opts, state, log
import modules.sd_samplers
@@ -86,7 +86,7 @@ class Script(scripts.Script):
p.n_iter = math.ceil(len(all_prompts) / p.batch_size)
p.do_not_save_grid = True
print(f"Prompt matrix will create {len(all_prompts)} images using a total of {p.n_iter} batches.")
log.info(f"Prompt-matrix: images={len(all_prompts)} batches={p.n_iter}")
if prompt_type == "positive":
p.prompt = all_prompts
+10 -31
View File
@@ -5,7 +5,7 @@ import gradio as gr
import modules.scripts as scripts
from modules import sd_samplers, errors
from modules.processing import Processed, process_images
from modules.shared import state
from modules.shared import state, log
def process_string_tag(tag):
@@ -56,15 +56,11 @@ def cmdargs(line):
args = shlex.split(line)
pos = 0
res = {}
while pos < len(args):
arg = args[pos]
assert arg.startswith("--"), f'must start with "--": {arg}'
assert pos+1 < len(args), f'missing argument for command line option {arg}'
tag = arg[2:]
if tag == "prompt" or tag == "negative_prompt":
pos += 1
prompt = args[pos]
@@ -76,18 +72,13 @@ def cmdargs(line):
res[tag] = prompt
continue
func = prompt_tags.get(tag, None)
assert func, f'unknown commandline option: {arg}'
val = args[pos+1]
if tag == "sampler_name":
val = sd_samplers.samplers_map.get(val.lower(), None)
res[tag] = func(val)
pos += 2
return res
@@ -104,27 +95,21 @@ class Script(scripts.Script):
return "Prompts from File"
def ui(self, is_img2img):
checkbox_iterate = gr.Checkbox(label="Iterate seed every line", value=False, elem_id=self.elem_id("checkbox_iterate"))
checkbox_iterate_batch = gr.Checkbox(label="Use same random seed for all lines", value=False, elem_id=self.elem_id("checkbox_iterate_batch"))
prompt_txt = gr.Textbox(label="List of prompt inputs", lines=1, elem_id=self.elem_id("prompt_txt"))
file = gr.File(label="Upload prompt inputs", type='binary', elem_id=self.elem_id("file"))
with gr.Row():
checkbox_iterate = gr.Checkbox(label="Iterate seed per line", value=False, elem_id=self.elem_id("checkbox_iterate"))
checkbox_iterate_batch = gr.Checkbox(label="Use same seed", value=False, elem_id=self.elem_id("checkbox_iterate_batch"))
prompt_txt = gr.Textbox(label="Prompts", lines=1, elem_id=self.elem_id("prompt_txt"))
file = gr.File(label="Upload prompts", type='binary', elem_id=self.elem_id("file"))
file.change(fn=load_prompt_file, inputs=[file], outputs=[file, prompt_txt, prompt_txt], show_progress=False)
# We start at one line. When the text changes, we jump to seven lines, or two lines if no \n.
# We don't shrink back to 1, because that causes the control to ignore [enter], and it may
# be unclear to the user that shift-enter is needed.
prompt_txt.change(lambda tb: gr.update(lines=7) if ("\n" in tb) else gr.update(lines=2), inputs=[prompt_txt], outputs=[prompt_txt], show_progress=False)
return [checkbox_iterate, checkbox_iterate_batch, prompt_txt]
def run(self, p, checkbox_iterate, checkbox_iterate_batch, prompt_txt: str): # pylint: disable=arguments-differ
lines = [x.strip() for x in prompt_txt.splitlines()]
lines = [x for x in lines if len(x) > 0]
job_count = 0
jobs = []
for line in lines:
if "--" in line:
try:
@@ -134,33 +119,27 @@ class Script(scripts.Script):
args = {"prompt": line}
else:
args = {"prompt": line}
job_count += args.get("n_iter", p.n_iter)
jobs.append(args)
print(f"Will process {len(lines)} lines in {job_count} jobs.")
log.info(f"Prompts-from-file: lines={len(lines)} jobs={job_count}")
if (checkbox_iterate or checkbox_iterate_batch) and p.seed == -1:
p.seed = int(random.randrange(4294967294))
state.job_count = job_count
images = []
all_prompts = []
all_seeds = []
infotexts = []
for args in jobs:
state.job = f"{state.job_no + 1} out of {state.job_count}"
copy_p = copy.copy(p)
for k, v in args.items():
setattr(copy_p, k, v)
proc = process_images(copy_p)
all_seeds.append(proc.seed)
images += proc.images
if checkbox_iterate:
p.seed = p.seed + (p.batch_size * p.n_iter)
all_prompts += proc.all_prompts
infotexts += proc.infotexts
return Processed(p, images, p.seed, "", all_prompts=all_prompts, infotexts=infotexts)
return Processed(p, images, p.seed, "", all_prompts=all_prompts, all_seeds=all_seeds, infotexts=infotexts)
+2 -2
View File
@@ -4,7 +4,7 @@ from PIL import Image
import modules.scripts as scripts
from modules import processing, shared, images, devices
from modules.processing import Processed
from modules.shared import opts, state
from modules.shared import opts, state, log
class Script(scripts.Script):
@@ -61,7 +61,7 @@ class Script(scripts.Script):
batch_count = math.ceil(len(work) / batch_size)
state.job_count = batch_count * upscale_count
print(f"SD upscaling will process a total of {len(work)} images tiled as {len(grid.tiles[0][2])}x{len(grid.tiles)} per upscale in a total of {state.job_count} batches.")
log.info(f"SD upscale: images={len(work)} tile={len(grid.tiles[0][2])}x{len(grid.tiles)} batches={state.job_count}")
result_images = []
for n in range(upscale_count):
-2
View File
@@ -700,5 +700,3 @@ class Script(scripts.Script):
del processed.all_seeds[1]
del processed.infotexts[1]
return processed
print('HERE', [x.name for x in sd_samplers.samplers])