Add files via upload
parent
18940d84c5
commit
439cb88f95
|
|
@ -0,0 +1,26 @@
|
|||
merge = None
|
||||
mergeandgen = None
|
||||
gen = None
|
||||
s_reserve = None
|
||||
s_reserve1 = None
|
||||
gengrid = None
|
||||
s_startreserve = None
|
||||
rand_merge = None
|
||||
|
||||
msettings = None
|
||||
esettings1 = None
|
||||
genparams = None
|
||||
hiresfix = None
|
||||
lucks = None
|
||||
currentmodel = None
|
||||
dfalse = None
|
||||
dtrue = None
|
||||
id_sets = None
|
||||
xysettings = None
|
||||
|
||||
submit_result = None
|
||||
imagegal = None
|
||||
numaframe = None
|
||||
|
||||
txt2img_params = []
|
||||
img2img_params = []
|
||||
|
|
@ -20,14 +20,19 @@ from modules.ui import plaintext_to_html
|
|||
from modules.shared import opts
|
||||
from modules.processing import create_infotext,Processed
|
||||
from modules.sd_models import load_model,checkpoints_loaded,unload_model_weights
|
||||
from modules.generation_parameters_copypaste import create_override_settings_dict
|
||||
from scripts.mergers.model_util import VAE_PARAMS_CH, filenamecutter,savemodel,usemodel
|
||||
from math import ceil
|
||||
import sys
|
||||
from multiprocessing import cpu_count
|
||||
from threading import Lock
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
|
||||
from inspect import currentframe
|
||||
|
||||
module_path = os.path.dirname(os.path.abspath(sys.modules[__name__].__file__))
|
||||
scriptpath = os.path.dirname(module_path)
|
||||
|
||||
def tryit(func):
|
||||
try:
|
||||
func()
|
||||
|
|
@ -77,11 +82,11 @@ def casterr(*args,hear=hear):
|
|||
def smergegen(weights_a,weights_b,model_a,model_b,model_c,base_alpha,base_beta,mode,
|
||||
calcmode,useblocks,custom_name,save_sets,id_sets,wpresets,deep,tensor,bake_in_vae,
|
||||
esettings,
|
||||
prompt,nprompt,steps,sampler,cfg,seed,w,h,
|
||||
hireson,hrupscaler,hr2ndsteps,denoise_str,hr_scale,
|
||||
s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,batch_size,
|
||||
s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,s_batch_size,
|
||||
genoptions,s_hrupscaler,s_hr2ndsteps,s_denois_str,s_hr_scale,
|
||||
lmode,lsets,llimits_u,llimits_l,lseed,lserial,lcustom,lround,
|
||||
currentmodel,imggen):
|
||||
currentmodel,imggen,
|
||||
id_task, prompt, negative_prompt, prompt_styles, steps, sampler_index, restore_faces, tiling, n_iter, batch_size, cfg_scale, seed, subseed, subseed_strength, seed_resize_from_h, seed_resize_from_w, seed_enable_extras, height, width, enable_hr, denoising_strength, hr_scale, hr_upscaler, hr_second_pass_steps, hr_resize_x, hr_resize_y, hr_sampler_index, hr_prompt, hr_negative_prompt, override_settings_texts, *args):
|
||||
|
||||
lucks = {"on":False, "mode":lmode,"set":lsets,"upp":llimits_u,"low":llimits_l,"seed":lseed,"num":lserial,"cust":lcustom,"round":int(lround)}
|
||||
deepprint = True if "print change" in esettings else False
|
||||
|
|
@ -104,8 +109,10 @@ def smergegen(weights_a,weights_b,model_a,model_b,model_c,base_alpha,base_beta,m
|
|||
devices.torch_gc()
|
||||
|
||||
if imggen :
|
||||
images = simggen(prompt,nprompt,steps,sampler,cfg,seed,w,h,hireson,hrupscaler,hr2ndsteps,denoise_str,hr_scale,
|
||||
s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,batch_size,currentmodel,id_sets,modelid)
|
||||
images = simggen(s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,s_batch_size,
|
||||
genoptions,s_hrupscaler,s_hr2ndsteps,s_denois_str,s_hr_scale,
|
||||
id_task, prompt, negative_prompt, prompt_styles, steps, sampler_index, restore_faces, tiling, n_iter, batch_size, cfg_scale, seed, subseed, subseed_strength, seed_resize_from_h, seed_resize_from_w, seed_enable_extras, height, width, enable_hr, denoising_strength, hr_scale, hr_upscaler, hr_second_pass_steps, hr_resize_x, hr_resize_y, hr_sampler_index, hr_prompt, hr_negative_prompt, override_settings_texts, *args,
|
||||
mergeinfo=currentmodel,id_sets=id_sets,modelid=modelid)
|
||||
return result,currentmodel,*images[:4]
|
||||
else:
|
||||
return result,currentmodel
|
||||
|
|
@ -223,8 +230,6 @@ def smerge(weights_a,weights_b,model_a,model_b,model_c,base_alpha,base_beta,mode
|
|||
print(f" Weights Seed\t: {lucks['ceed']}")
|
||||
print(f" Adjust \t: {fine}")
|
||||
|
||||
tryit(unload_model_weights)
|
||||
|
||||
theta_1=load_model_weights_m(model_b,False,True,save).copy()
|
||||
isxl = "conditioner.embedders.1.model.transformer.resblocks.9.mlp.c_proj.weight" in theta_1.keys()
|
||||
|
||||
|
|
@ -657,7 +662,6 @@ def smerge(weights_a,weights_b,model_a,model_b,model_c,base_alpha,base_beta,mode
|
|||
|
||||
return "",currentmodel,modelid,theta_0,metadata
|
||||
|
||||
|
||||
def multithread_smoothadd(key_and_alpha, theta_0, theta_1, threads, tasks_per_thread, hear):
|
||||
lock_theta_0 = Lock()
|
||||
lock_theta_1 = Lock()
|
||||
|
|
@ -665,7 +669,6 @@ def multithread_smoothadd(key_and_alpha, theta_0, theta_1, threads, tasks_per_th
|
|||
|
||||
def thread_callback(keys):
|
||||
nonlocal theta_0, theta_1
|
||||
|
||||
if stopmerge:
|
||||
return False
|
||||
|
||||
|
|
@ -699,12 +702,10 @@ def multithread_smoothadd(key_and_alpha, theta_0, theta_1, threads, tasks_per_th
|
|||
futures = []
|
||||
with ThreadPoolExecutor(max_workers=threads) as executor:
|
||||
futures = [executor.submit(thread_callback, extract_and_remove(keys, int(tasks_per_thread))) for i in range(total_threads)]
|
||||
|
||||
for future in as_completed(futures):
|
||||
if not future.result():
|
||||
executor.shutdown()
|
||||
return theta_0, theta_1, True
|
||||
|
||||
del progress
|
||||
|
||||
return theta_0, theta_1, False
|
||||
|
|
@ -828,8 +829,7 @@ def savestatics(modelid):
|
|||
saveekeys(result,f"{modelid}_{key}")
|
||||
|
||||
def get_font(fontsize):
|
||||
path_root = scripts.basedir()
|
||||
fontpath = os.path.join(path_root,"extensions","sd-webui-supermerger","scripts", "Roboto-Regular.ttf")
|
||||
fontpath = os.path.join(scriptpath, "Roboto-Regular.ttf")
|
||||
try:
|
||||
return ImageFont.truetype(opts.font or fontpath, fontsize)
|
||||
except Exception:
|
||||
|
|
@ -935,30 +935,90 @@ def eratiodealer(dr,randomer,block,num,lucks):
|
|||
else:
|
||||
return float(dr)
|
||||
|
||||
def simggen(prompt, nprompt, steps, sampler, cfg, seed, w, h,genoptions,hrupscaler,hr2ndsteps,denoise_str,hr_scale,
|
||||
s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,batch_size,mergeinfo="",id_sets=[],modelid = "no id"):
|
||||
def simggen(s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,s_batch_size,
|
||||
genoptions,s_hrupscaler,s_hr2ndsteps,s_denois_str,s_hr_scale,
|
||||
id_task, prompt, negative_prompt, prompt_styles, steps, sampler_index, restore_faces, tiling, n_iter, batch_size, cfg_scale, seed, subseed, subseed_strength, seed_resize_from_h, seed_resize_from_w, seed_enable_extras, height, width, enable_hr, denoising_strength, hr_scale, hr_upscaler, hr_second_pass_steps, hr_resize_x, hr_resize_y, hr_sampler_index, hr_prompt, hr_negative_prompt, override_settings_texts, *args,
|
||||
mergeinfo="",id_sets=[],modelid = "no id"):
|
||||
shared.state.begin()
|
||||
|
||||
#params = [s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,s_batch_size,genoptions,s_hrupscaler,s_hr2ndsteps,s_denois_str,s_hr_scale]
|
||||
#paramsname = ["s_prompt","s_nprompt","s_steps","s_sampler","s_cfg","s_seed","s_w","s_h","s_batch_size","genoptions","s_hrupscaler","s_hr2ndsteps","s_denois_str","s_hr_scale"]
|
||||
#params = [prompt, negative_prompt, prompt_styles, steps, sampler_index, restore_faces, tiling, n_iter, batch_size, cfg_scale, seed, subseed, subseed_strength, seed_resize_from_h, seed_resize_from_w, seed_enable_extras, height, width, enable_hr, denoising_strength, hr_scale, hr_upscaler, hr_second_pass_steps, hr_resize_x, hr_resize_y, hr_sampler_index, hr_prompt, hr_negative_prompt, override_settings_texts]
|
||||
#paramsname = ["prompt"," negative_prompt"," prompt_styles"," steps"," sampler_index"," restore_faces"," tiling"," n_iter"," batch_size"," cfg_scale"," seed"," subseed"," subseed_strength"," seed_resize_from_h"," seed_resize_from_w"," seed_enable_extras"," height"," width"," enable_hr"," denoising_strength"," hr_scale"," hr_upscaler"," hr_second_pass_steps"," hr_resize_x"," hr_resize_y"," hr_sampler_index"," hr_prompt"," hr_negative_prompt"," override_settings_texts"]
|
||||
|
||||
#from pprint import pprint
|
||||
#pprint([f"{n}={v}"for v,n in zip(params,paramsname)])
|
||||
|
||||
override_settings = create_override_settings_dict(override_settings_texts)
|
||||
|
||||
if sampler_index is None:sampler_index = 0
|
||||
if hr_sampler_index is None:hr_sampler_index = 0
|
||||
if s_sampler is None: s_sampler = 0
|
||||
|
||||
p = processing.StableDiffusionProcessingTxt2Img(
|
||||
sd_model=shared.sd_model,
|
||||
outpath_samples=opts.outdir_samples or opts.outdir_txt2img_samples,
|
||||
outpath_grids=opts.outdir_grids or opts.outdir_txt2img_grids,
|
||||
prompt=prompt,
|
||||
styles=prompt_styles,
|
||||
negative_prompt=negative_prompt,
|
||||
seed=seed,
|
||||
subseed=subseed,
|
||||
subseed_strength=subseed_strength,
|
||||
seed_resize_from_h=seed_resize_from_h,
|
||||
seed_resize_from_w=seed_resize_from_w,
|
||||
seed_enable_extras=seed_enable_extras,
|
||||
sampler_name=sd_samplers.samplers[sampler_index].name,
|
||||
batch_size=batch_size,
|
||||
n_iter=n_iter,
|
||||
steps=steps,
|
||||
cfg_scale=cfg_scale,
|
||||
width=width,
|
||||
height=height,
|
||||
restore_faces=restore_faces,
|
||||
tiling=tiling,
|
||||
enable_hr=enable_hr,
|
||||
denoising_strength=denoising_strength if enable_hr else None,
|
||||
hr_scale=hr_scale,
|
||||
hr_upscaler=hr_upscaler,
|
||||
hr_second_pass_steps=hr_second_pass_steps,
|
||||
hr_resize_x=hr_resize_x,
|
||||
hr_resize_y=hr_resize_y,
|
||||
override_settings=override_settings,
|
||||
do_not_save_grid=True,
|
||||
do_not_save_samples=True,
|
||||
do_not_reload_embeddings=True,
|
||||
)
|
||||
p.batch_size = int(batch_size)
|
||||
p.prompt = prompt if s_prompt == "" else s_prompt
|
||||
p.negative_prompt = nprompt if s_nprompt == "" else s_nprompt
|
||||
p.steps = steps if s_steps == 0 else s_steps
|
||||
try:
|
||||
p.sampler_name = sd_samplers.samplers[sampler].name if s_sampler == 0 or s_sampler == None else sd_samplers.samplers[s_sampler-1].name
|
||||
except:
|
||||
print(f"{bcolors.Fail}Error:sampler:{sampler},s_sampler:{s_sampler}{bcolors.ENDC}")
|
||||
p.cfg_scale = cfg if s_cfg == 0 else s_cfg
|
||||
p.seed = seed if s_seed == 0 else s_seed
|
||||
p.width = w if s_w == 0 else s_w
|
||||
p.height = h if s_h == 0 else s_h
|
||||
p.seed_resize_from_w=0
|
||||
p.seed_resize_from_h=0
|
||||
p.denoising_strength=None
|
||||
|
||||
p.scripts = scripts.scripts_txt2img
|
||||
p.script_args = args
|
||||
p.all_seeds = [p.seed]
|
||||
|
||||
if s_batch_size != 1 :p.batch_size = int(s_batch_size)
|
||||
if s_prompt: p.prompt = s_prompt
|
||||
if s_nprompt: p.negative_prompt = s_nprompt
|
||||
if s_steps: p.steps = s_steps
|
||||
if s_sampler: p.sampler_name = sd_samplers.samplers[sampler_index].name
|
||||
if s_cfg: p.cfg_scale = s_cfg
|
||||
if s_seed: p.seed = s_seed
|
||||
if s_w: p.width = s_w
|
||||
if s_h: p.height = s_h
|
||||
|
||||
p.hr_prompt=hr_prompt
|
||||
p.hr_negative_prompt=hr_negative_prompt
|
||||
p.hr_sampler_name=sd_samplers.samplers_for_img2img[hr_sampler_index - 1].name if hr_sampler_index != 0 else None
|
||||
|
||||
if "Hires. fix" in genoptions:
|
||||
if s_hrupscaler: p.hr_upscaler = s_hrupscaler
|
||||
if s_hr2ndsteps:p.hr_second_pass_steps = s_hr2ndsteps
|
||||
if s_denois_str:p.denoising_strength = s_denois_str
|
||||
if s_hr_scale:p.hr_scale = s_hr_scale
|
||||
|
||||
if "Restore faces" in genoptions:
|
||||
p.restore_faces = True
|
||||
|
||||
if "Tiling" in genoptions:
|
||||
p.tiling = True
|
||||
|
||||
p.cached_c = [None,None]
|
||||
p.cached_uc = [None,None]
|
||||
|
|
@ -966,21 +1026,6 @@ def simggen(prompt, nprompt, steps, sampler, cfg, seed, w, h,genoptions,hrupscal
|
|||
p.cached_hr_c = [None, None]
|
||||
p.cached_hr_uc = [None, None]
|
||||
|
||||
#"Restore faces", "Tiling", "Hires. fix"
|
||||
|
||||
if "Hires. fix" in genoptions:
|
||||
p.enable_hr = True
|
||||
p.denoising_strength = denoise_str
|
||||
p.hr_upscaler = hrupscaler
|
||||
p.hr_second_pass_steps = hr2ndsteps
|
||||
p.hr_scale = hr_scale
|
||||
|
||||
if "Tiling" in genoptions:
|
||||
p.tiling = True
|
||||
|
||||
if "Restore faces" in genoptions:
|
||||
p.restore_faces = True
|
||||
|
||||
if type(p.prompt) == list:
|
||||
p.all_prompts = [shared.prompt_styles.apply_styles_to_prompt(x, p.styles) for x in p.prompt]
|
||||
else:
|
||||
|
|
@ -994,7 +1039,7 @@ def simggen(prompt, nprompt, steps, sampler, cfg, seed, w, h,genoptions,hrupscal
|
|||
processed:Processed = processing.process_images(p)
|
||||
if "image" in id_sets:
|
||||
for i, image in enumerate(processed.images):
|
||||
processed.images[i] = draw_origin(image, str(modelid),w,h,w)
|
||||
processed.images[i] = draw_origin(image, str(modelid),p.width,p.height,p.width)
|
||||
|
||||
if "PNG info" in id_sets:mergeinfo = mergeinfo + " ID " + str(modelid)
|
||||
|
||||
|
|
@ -1011,7 +1056,7 @@ def simggen(prompt, nprompt, steps, sampler, cfg, seed, w, h,genoptions,hrupscal
|
|||
for i, image in enumerate(processed.images):
|
||||
images.save_image(image, opts.outdir_txt2img_samples, "",p.seed, p.prompt,shared.opts.samples_format, p=p,info=infotext)
|
||||
|
||||
if batch_size > 1:
|
||||
if s_batch_size > 1:
|
||||
grid = images.image_grid(processed.images, p.batch_size)
|
||||
processed.images.insert(0, grid)
|
||||
images.save_image(grid, opts.outdir_txt2img_grids, "grid", p.seed, p.prompt, opts.grid_format, info=infotext, short_filename=not opts.grid_extended_filename, p=p, grid=True)
|
||||
|
|
|
|||
|
|
@ -41,10 +41,10 @@ def freezetime():
|
|||
def numanager(startmode,xtype,xmen,ytype,ymen,ztype,zmen,esettings,
|
||||
weights_a,weights_b,model_a,model_b,model_c,alpha,beta,mode,calcmode,
|
||||
useblocks,custom_name,save_sets,id_sets,wpresets,deep,fine,bake_in_vae,
|
||||
prompt,nprompt,steps,sampler,cfg,seed,w,h,
|
||||
hireson,hrupscaler,hr2ndsteps,denoise_str,hr_scale,
|
||||
prompt_s,nprompt_s,steps_s,sampler_s,cfg_s,seed_s,w_s,h_s,batch_size,
|
||||
lmode,lsets,llimits_u,llimits_l,lseed,lserial,lcustom,lround):
|
||||
s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,s_batch_size,
|
||||
genoptions,s_hrupscaler,s_hr2ndsteps,s_denois_str,s_hr_scale,
|
||||
lmode,lsets,llimits_u,llimits_l,lseed,lserial,lcustom,lround,
|
||||
id_task, prompt, negative_prompt, prompt_styles, steps, sampler_index, restore_faces, tiling, n_iter, batch_size, cfg_scale, seed, subseed, subseed_strength, seed_resize_from_h, seed_resize_from_w, seed_enable_extras, height, width, enable_hr, denoising_strength, hr_scale, hr_upscaler, hr_second_pass_steps, hr_resize_x, hr_resize_y, hr_sampler_index, hr_prompt, hr_negative_prompt, override_settings_texts, *args):
|
||||
global numadepth
|
||||
grids = []
|
||||
sep = "|"
|
||||
|
|
@ -57,14 +57,13 @@ def numanager(startmode,xtype,xmen,ytype,ymen,ztype,zmen,esettings,
|
|||
xtype,xmen,ytype,ymen,weights_a,weights_b = crazyslot(lmode,lsets,llimits_u,llimits_l,lseed,lserial,lcustom,xtype,xmen,ytype,ymen,weights_a,weights_b,startmode)
|
||||
|
||||
lucks = {"on":startmode == RAND, "mode":lmode,"set":lsets,"upp":llimits_u,"low":llimits_l,"seed":lseed,"num":lserial,"cust":lcustom,"round":int(lround)}
|
||||
gensets = [prompt,nprompt,steps,sampler,cfg,seed,w,h]
|
||||
gensets_s = [prompt_s,nprompt_s,steps_s,sampler_s,cfg_s,seed_s,w_s,h_s]
|
||||
hr_sets = [hireson,hrupscaler,hr2ndsteps,denoise_str,hr_scale]
|
||||
gensets = [id_task, prompt, negative_prompt, prompt_styles, steps, sampler_index, restore_faces, tiling, n_iter, batch_size, cfg_scale, seed, subseed, subseed_strength, seed_resize_from_h, seed_resize_from_w, seed_enable_extras, height, width, enable_hr, denoising_strength, hr_scale, hr_upscaler, hr_second_pass_steps, hr_resize_x, hr_resize_y, hr_sampler_index, hr_prompt, hr_negative_prompt, override_settings_texts, *args,]
|
||||
gensets_s = [s_prompt,s_nprompt,s_steps,s_sampler,s_cfg,s_seed,s_w,s_h,s_batch_size,genoptions,s_hrupscaler,s_hr2ndsteps,s_denois_str,s_hr_scale]
|
||||
|
||||
allsets = [xtype,xmen,ytype,ymen,ztype,zmen,esettings,
|
||||
weights_a,weights_b,model_a,model_b,model_c,alpha,beta,mode,calcmode,
|
||||
useblocks,custom_name,save_sets,id_sets,wpresets,deep,fine,bake_in_vae,
|
||||
gensets,hr_sets,gensets_s,batch_size,lucks]
|
||||
gensets,gensets_s,lucks]
|
||||
|
||||
print(xtype,xmen,ytype,ymen,weights_a,weights_b)
|
||||
|
||||
|
|
@ -155,7 +154,7 @@ def caster(news,hear):
|
|||
def sgenxyplot(xtype,xmen,ytype,ymen,ztype,zmen,esettings,
|
||||
weights_a,weights_b,model_a,model_b,model_c,alpha,beta,mode,
|
||||
calcmode,useblocks,custom_name,save_sets,id_sets,wpresets,deep,fine,bake_in_vae,
|
||||
gensets,hr_sets,gensets_s,batch_size,lucks):
|
||||
gensets,gensets_s,lucks):
|
||||
global hear
|
||||
esettings = " ".join(esettings)
|
||||
savestat = "savestat" in deep
|
||||
|
|
@ -398,7 +397,7 @@ def sgenxyplot(xtype,xmen,ytype,ymen,ztype,zmen,esettings,
|
|||
|
||||
if xcount == 0: statid = modelid
|
||||
|
||||
image_temp = simggen(*gensets,*hr_sets,*gensets_s,batch_size,currentmodel,id_sets,modelid)
|
||||
image_temp = simggen(*gensets_s,*gensets,mergeinfo=currentmodel,id_sets=id_sets,modelid=modelid)
|
||||
gc.collect()
|
||||
devices.torch_gc()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue