mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
tweaks to make postprocess fixing work better
- modify strength of embiggen to reduce tiling ghosts - normalize naming of postprocessed files (could improve more to avoid name collisions) - move restoration modules under ldm.dream
This commit is contained in:
parent
cd69d258aa
commit
283a0d72c7
@ -62,6 +62,9 @@ class Embiggen(Generator):
|
|||||||
embiggen_tiles = list(map(lambda n: n-1, embiggen_tiles))
|
embiggen_tiles = list(map(lambda n: n-1, embiggen_tiles))
|
||||||
embiggen_tiles.sort()
|
embiggen_tiles.sort()
|
||||||
|
|
||||||
|
if strength >= 0.5:
|
||||||
|
print(f'* WARNING: Embiggen may produce mirror motifs if the strength (-f) is too high (currently {strength}). Try values between 0.35-0.45.')
|
||||||
|
|
||||||
# Prep img2img generator, since we wrap over it
|
# Prep img2img generator, since we wrap over it
|
||||||
gen_img2img = Img2Img(self.model)
|
gen_img2img = Img2Img(self.model)
|
||||||
|
|
||||||
|
@ -519,6 +519,8 @@ class Generate:
|
|||||||
skip_normalize=opt.skip_normalize,
|
skip_normalize=opt.skip_normalize,
|
||||||
log_tokens =opt.log_tokenization
|
log_tokens =opt.log_tokenization
|
||||||
)
|
)
|
||||||
|
opt.strength = 0.40
|
||||||
|
print(f'>> Setting img2img strength to {opt.strength} for happy embiggening')
|
||||||
# embiggen takes a image path (sigh)
|
# embiggen takes a image path (sigh)
|
||||||
generator.generate(
|
generator.generate(
|
||||||
prompt,
|
prompt,
|
||||||
|
@ -245,9 +245,9 @@ def main_loop(gen, opt, infile):
|
|||||||
# Here is where the images are actually generated!
|
# Here is where the images are actually generated!
|
||||||
last_results = []
|
last_results = []
|
||||||
try:
|
try:
|
||||||
file_writer = PngWriter(current_outdir)
|
file_writer = PngWriter(current_outdir)
|
||||||
prefix = file_writer.unique_prefix()
|
prefix = file_writer.unique_prefix()
|
||||||
results = [] # list of filename, prompt pairs
|
results = [] # list of filename, prompt pairs
|
||||||
grid_images = dict() # seed -> Image, only used if `opt.grid`
|
grid_images = dict() # seed -> Image, only used if `opt.grid`
|
||||||
prior_variations = opt.with_variations or []
|
prior_variations = opt.with_variations or []
|
||||||
first_seed = opt.seed
|
first_seed = opt.seed
|
||||||
@ -259,7 +259,9 @@ def main_loop(gen, opt, infile):
|
|||||||
if opt.grid:
|
if opt.grid:
|
||||||
grid_images[seed] = image
|
grid_images[seed] = image
|
||||||
else:
|
else:
|
||||||
if upscaled and opt.save_original:
|
if operation == 'postprocess':
|
||||||
|
filename = choose_postprocess_name(opt.prompt)
|
||||||
|
elif upscaled and opt.save_original:
|
||||||
filename = f'{prefix}.{seed}.postprocessed.png'
|
filename = f'{prefix}.{seed}.postprocessed.png'
|
||||||
else:
|
else:
|
||||||
filename = f'{prefix}.{seed}.png'
|
filename = f'{prefix}.{seed}.png'
|
||||||
@ -270,6 +272,8 @@ def main_loop(gen, opt, infile):
|
|||||||
formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed)
|
formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed)
|
||||||
elif len(prior_variations) > 0:
|
elif len(prior_variations) > 0:
|
||||||
formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed)
|
formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed)
|
||||||
|
elif operation == 'postprocess':
|
||||||
|
formatted_dream_prompt = '!fix '+opt.dream_prompt_str(seed=seed)
|
||||||
else:
|
else:
|
||||||
formatted_dream_prompt = opt.dream_prompt_str(seed=seed)
|
formatted_dream_prompt = opt.dream_prompt_str(seed=seed)
|
||||||
path = file_writer.save_image_and_prompt_to_png(
|
path = file_writer.save_image_and_prompt_to_png(
|
||||||
@ -355,6 +359,18 @@ def do_postprocess (gen, opt, callback):
|
|||||||
opt = opt,
|
opt = opt,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def choose_postprocess_name(original_filename):
|
||||||
|
basename,_ = os.path.splitext(os.path.basename(original_filename))
|
||||||
|
if re.search('\d+\.\d+$',basename):
|
||||||
|
return f'{basename}.fixed.png'
|
||||||
|
match = re.search('(\d+\.\d+)\.fixed(-(\d+))?$',basename)
|
||||||
|
if match:
|
||||||
|
counter = match.group(3) or 0
|
||||||
|
return '{prefix}-{counter:02d}.png'.format(prefix=match.group(1), counter=int(counter)+1)
|
||||||
|
else:
|
||||||
|
return f'{basename}.fixed.png'
|
||||||
|
|
||||||
|
|
||||||
def get_next_command(infile=None) -> str: # command string
|
def get_next_command(infile=None) -> str: # command string
|
||||||
if infile is None:
|
if infile is None:
|
||||||
command = input('dream> ')
|
command = input('dream> ')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user