* Some first steps * Fancy filename work and started on model choosing * progress * Decent first version working * Stabilisation and fixes * Added quality gate Started reworking how prompts are generated from scripts. So it works more in line with One Button run * Reworked how prompt compounder works * Started some work on IMG2IMG * Some changes and fixes * Added img2img options to interface * First version of ultimate sd upscale Some fun with buttons as well * added ultimate SD upscale logic to UI some small bugfixes as well * controlnet tile resample integration (!!!) * Some changes Controlnet is misbehaving, researching * Fixed controlnet started work on extras upscaling * Finished upscale with extras * Working on upscale only mode * Some stability and Ui changes * Minor changes * Update one_button_run_and_upscale.md Started work on user_guide * Minor bug in size choosing * Update one_button_run_and_upscale.md * Update README.md * Update my_first_generation.md * Update my_first_generation.md * Update my_first_generation.md * added folder button hacky fix for PLMS en UniPC * Update my_first_generation.md * Update README.md * Update my_first_generation.md * Update one_button_run_and_upscale.md * last bits finally stable? * last bug? * Update one_button_run_and_upscale.md * Stability fixes * fixing the last bug
72 lines
4.2 KiB
Python
72 lines
4.2 KiB
Python
import modules.scripts as scripts
|
|
import os
|
|
from modules import modelloader, paths, shared
|
|
from modules.paths import models_path
|
|
|
|
|
|
def get_models():
|
|
model_dir = "Stable-diffusion"
|
|
model_path = os.path.abspath(os.path.join(paths.models_path, model_dir))
|
|
model_url = None
|
|
modellist = modelloader.load_models(model_path=model_path, model_url=model_url, command_path=shared.cmd_opts.ckpt_dir, ext_filter=[".ckpt", ".safetensors"], download_name="v1-5-pruned-emaonly.safetensors", ext_blacklist=[".vae.ckpt", ".vae.safetensors"])
|
|
modellist = [s.replace(model_path, "") for s in modellist]
|
|
modellist = [s.replace("\\\\", "") for s in modellist]
|
|
modellist = [s.replace("\\", "") for s in modellist]
|
|
modellist = [s.replace(".ckpt", "") for s in modellist]
|
|
modellist = [s.replace(".safetensors", "") for s in modellist]
|
|
return modellist
|
|
|
|
def get_upscalers():
|
|
#Upscalers are sort of hardcoded as well for Latent, but not for the 2 others. So build it up!
|
|
latentlist=["Latent","Latent (antialiased)","Latent (bicubic)","Latent (bicubic antialiased)","Latent (nearest)","Latent (nearest-exact)","Lanczos","Nearest"]
|
|
|
|
RealESRGAN_dir = "RealESRGAN"
|
|
RealESRGAN_path = os.path.abspath(os.path.join(paths.models_path, RealESRGAN_dir))
|
|
model_url = None
|
|
RealESRGANlist = modelloader.load_models(model_path=RealESRGAN_path, model_url=model_url, command_path=shared.cmd_opts.ckpt_dir, ext_filter=[".pt", ".pth"], download_name="", ext_blacklist=[".vae.ckpt", ".vae.safetensors"])
|
|
RealESRGANlist = [s.replace(RealESRGAN_path, "") for s in RealESRGANlist]
|
|
RealESRGANlist = [s.replace("\\\\", "") for s in RealESRGANlist]
|
|
RealESRGANlist = [s.replace("\\", "") for s in RealESRGANlist]
|
|
RealESRGANlist = [s.replace(".pth", "") for s in RealESRGANlist]
|
|
RealESRGANlist = [s.replace(".pt", "") for s in RealESRGANlist]
|
|
|
|
ESRGAN_dir = "ESRGAN"
|
|
ESRGAN_path = os.path.abspath(os.path.join(paths.models_path, ESRGAN_dir))
|
|
ESRGANlist = modelloader.load_models(model_path=ESRGAN_path, model_url=model_url, command_path=shared.cmd_opts.ckpt_dir, ext_filter=[".pt", ".pth"], download_name="", ext_blacklist=[".vae.ckpt", ".vae.safetensors"])
|
|
ESRGANlist = [s.replace(ESRGAN_path, "") for s in ESRGANlist]
|
|
ESRGANlist = [s.replace("\\\\", "") for s in ESRGANlist]
|
|
ESRGANlist = [s.replace("\\", "") for s in ESRGANlist]
|
|
ESRGANlist = [s.replace(".pth", "") for s in ESRGANlist]
|
|
ESRGANlist = [s.replace(".pt", "") for s in ESRGANlist]
|
|
|
|
#hardcode some things for Real ESGRAN, because its named differently (note, I could have just hardcoded this. Oh well...)
|
|
RealESRGANlist = [s.replace("RealESRGAN_x4plus","R-ESRGAN 4x+") for s in RealESRGANlist]
|
|
RealESRGANlist = [s.replace("RealESRGAN x4plus_anime_6B","R-ESRGAN 4x+ Anime6B") for s in RealESRGANlist]
|
|
RealESRGANlist = [s.replace("R-ESRGAN 4x+_anime_6B","R-ESRGAN 4x+ Anime6B") for s in RealESRGANlist]
|
|
|
|
upscalerlist = latentlist + RealESRGANlist + ESRGANlist
|
|
return upscalerlist
|
|
|
|
def get_samplers():
|
|
#Samplers are hardcoded in WEBui, so lets do it here as well
|
|
samplerlist = ["Euler a", "Euler", "LMS","Heun","DPM2","DPM2 a","DPM++ 2S a","DPM++ 2M","DPM++ SDE","DPM fast","DPM adaptive","LMS Karras","DPM2 Karras","DPM2 a Karras","DPM++ 2S a Karras","DPM++ 2M Karras","DPM++ SDE Karras"]
|
|
samplerlist += ["DDIM","UniPC", "PLMS"]
|
|
return samplerlist
|
|
|
|
def get_upscalers_for_img2img():
|
|
upscalerlist = get_upscalers()
|
|
# basically have to remove a lot of these, these aren't supported
|
|
upscalerlist.remove("Latent")
|
|
upscalerlist.remove("Latent (antialiased)")
|
|
upscalerlist.remove("Latent (bicubic)")
|
|
upscalerlist.remove("Latent (bicubic antialiased)")
|
|
upscalerlist.remove("Latent (nearest)")
|
|
upscalerlist.remove("Latent (nearest-exact)")
|
|
return upscalerlist
|
|
|
|
def get_samplers_for_img2img():
|
|
#Samplers are hardcoded in WEBui, so lets do it here as well
|
|
samplerlist = ["Euler a", "Euler", "LMS","Heun","DPM2","DPM2 a","DPM++ 2S a","DPM++ 2M","DPM++ SDE","DPM fast","DPM adaptive","LMS Karras","DPM2 Karras","DPM2 a Karras","DPM++ 2S a Karras","DPM++ 2M Karras","DPM++ SDE Karras"]
|
|
samplerlist += ["DDIM"] #UniPC and PLMS dont support upscaling apparently
|
|
return samplerlist
|