mirror of https://github.com/vladmandic/automatic
refactor: remove face restoration from CLI tools and XYZ grid
- Remove gfpgan/codeformer face template lines from cli/generate.py - Remove gfpgan_visibility, codeformer_visibility, codeformer_weight from cli/generate.json upscale config - Simplify cli/process.py upscale_restore_image() to remove the restore path and codeformer parameters - Remove codeformer/gfpgan special cases from xyz_grid_shared.py apply_detailer(), keep generic boolean parsing - Remove p.restore_faces assignment from xyz_grid_on.pypull/4637/head
parent
356505cab2
commit
3d0edb4f8f
|
|
@ -24,10 +24,7 @@
|
|||
{
|
||||
"upscaler_1": "SwinIR_4x",
|
||||
"upscaler_2": "None",
|
||||
"upscaling_resize": 0,
|
||||
"gfpgan_visibility": 0,
|
||||
"codeformer_visibility": 0,
|
||||
"codeformer_weight": 0.5
|
||||
"upscaling_resize": 0
|
||||
},
|
||||
"options":
|
||||
{
|
||||
|
|
|
|||
|
|
@ -65,8 +65,6 @@ def exif(info, i = None, op = 'generate'):
|
|||
seed = ', '.join([str(x) for x in seed]) # int list to str list to single str
|
||||
template = '{prompt} | negative {negative_prompt} | seed {s} | steps {steps} | cfgscale {cfg_scale} | sampler {sampler_name} | batch {batch_size} | timestamp {job_timestamp} | model {model} | vae {vae}'.format(s = seed, model = sd.options['sd_model_checkpoint'], vae = sd.options['sd_vae'], **info) # pylint: disable=consider-using-f-string
|
||||
if op == 'upscale':
|
||||
template += ' | faces gfpgan' if sd.upscale.gfpgan_visibility > 0 else ''
|
||||
template += ' | faces codeformer' if sd.upscale.codeformer_visibility > 0 else ''
|
||||
template += ' | upscale {resize}x {upscaler}'.format(resize = sd.upscale.upscaling_resize, upscaler = sd.upscale.upscaler_1) if sd.upscale.upscaler_1 != 'None' else '' # pylint: disable=consider-using-f-string
|
||||
template += ' | upscale {resize}x {upscaler}'.format(resize = sd.upscale.upscaling_resize, upscaler = sd.upscale.upscaler_2) if sd.upscale.upscaler_2 != 'None' else '' # pylint: disable=consider-using-f-string
|
||||
if op == 'grid':
|
||||
|
|
@ -309,7 +307,6 @@ def args(): # parse cmd arguments
|
|||
sd.generate.height = params.height if params.height > 0 else sd.generate.height
|
||||
sd.generate.steps = params.steps if params.steps > 0 else sd.generate.steps
|
||||
sd.upscale.upscaling_resize = params.upscale if params.upscale > 0 else sd.upscale.upscaling_resize
|
||||
sd.upscale.codeformer_visibility = 1 if params.detailer else sd.upscale.codeformer_visibility
|
||||
sd.options.sd_vae = params.vae if params.vae != '' else sd.options.sd_vae
|
||||
sd.options.sd_model_checkpoint = params.model if params.model != '' else sd.options.sd_model_checkpoint
|
||||
sd.upscale.upscaler_1 = 'SwinIR_4x' if params.upscale > 1 else sd.upscale.upscaler_1
|
||||
|
|
|
|||
|
|
@ -126,11 +126,9 @@ def reset():
|
|||
all_images = []
|
||||
|
||||
|
||||
def upscale_restore_image(res: Result, upscale: bool = False, restore: bool = False):
|
||||
def upscale_restore_image(res: Result, upscale: bool = False):
|
||||
kwargs = util.Map({
|
||||
'image': encode(res.image),
|
||||
'codeformer_visibility': 0.0,
|
||||
'codeformer_weight': 0.0,
|
||||
})
|
||||
if res.image.width >= options.process.target_size and res.image.height >= options.process.target_size:
|
||||
upscale = False
|
||||
|
|
@ -138,14 +136,10 @@ def upscale_restore_image(res: Result, upscale: bool = False, restore: bool = Fa
|
|||
kwargs.upscaler_1 = 'SwinIR_4x'
|
||||
kwargs.upscaling_resize = 2
|
||||
res.ops.append('upscale')
|
||||
if restore:
|
||||
kwargs.codeformer_visibility = 1.0
|
||||
kwargs.codeformer_weight = 0.2
|
||||
res.ops.append('restore')
|
||||
if upscale or restore:
|
||||
if upscale:
|
||||
result = sdapi.postsync('/sdapi/v1/extra-single-image', kwargs)
|
||||
if 'image' not in result:
|
||||
res.message = 'failed to upscale/restore image'
|
||||
res.message = 'failed to upscale image'
|
||||
else:
|
||||
res.image = Image.open(io.BytesIO(base64.b64decode(result['image'])))
|
||||
return res
|
||||
|
|
@ -309,7 +303,7 @@ def file(filename: str, folder: str, tag = None, requested = []):
|
|||
if res.image is None:
|
||||
return res
|
||||
# post processing steps
|
||||
res = upscale_restore_image(res, 'upscale' in requested, 'restore' in requested)
|
||||
res = upscale_restore_image(res, 'upscale' in requested)
|
||||
if res.image.width < options.process.target_size or res.image.height < options.process.target_size:
|
||||
res.message = f'low resolution: [{res.image.width}, {res.image.height}]'
|
||||
res.image = None
|
||||
|
|
|
|||
|
|
@ -285,14 +285,7 @@ def apply_context(p: processing.StableDiffusionProcessingTxt2Img, opt, x):
|
|||
|
||||
def apply_detailer(p, opt, x):
|
||||
opt = opt.lower()
|
||||
if opt == 'codeformer':
|
||||
is_active = True
|
||||
p.detailer_model = 'CodeFormer'
|
||||
elif opt == 'gfpgan':
|
||||
is_active = True
|
||||
p.detailer_model = 'GFPGAN'
|
||||
else:
|
||||
is_active = opt in ('true', 'yes', 'y', '1')
|
||||
is_active = opt in ('true', 'yes', 'y', '1')
|
||||
p.detailer_enabled = is_active
|
||||
shared.log.debug(f'XYZ grid apply face-restore: "{x}"')
|
||||
|
||||
|
|
|
|||
|
|
@ -452,7 +452,6 @@ class Script(scripts_manager.Script):
|
|||
|
||||
def process_images(self, p, *args): # pylint: disable=W0221, W0613
|
||||
if xyz_results_cache is not None and len(xyz_results_cache.images) > 0:
|
||||
p.restore_faces = False
|
||||
p.detailer_enabled = False
|
||||
p.color_corrections = None
|
||||
# p.scripts = None
|
||||
|
|
|
|||
Loading…
Reference in New Issue