From e3c143250294a264cdb1b60bcf8d5a9f82e559e7 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Tue, 27 Feb 2024 17:11:37 -0500 Subject: [PATCH] experimental playground 2.5 support --- CHANGELOG.md | 9 +++ html/reference.json | 5 ++ ...ndai--playground-v2.5-1024px-aesthetic.jpg | Bin 0 -> 52058 bytes modules/sd_models.py | 65 +++++++++--------- modules/sd_samplers_diffusers.py | 12 ++++ 5 files changed, 60 insertions(+), 31 deletions(-) create mode 100644 models/Reference/playgroundai--playground-v2.5-1024px-aesthetic.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index c0f4ebabe..aff2c5db9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,16 @@ # Change Log for SD.Next +## TODO + +- EDM samplers for Playground require diffusers==0.27.0 +- StableCascade requires diffuers side-branch + ## Update for 2024-02-26 +- [Playground v2.5](https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic) + - new model version from Playground: based on SDXL, but with some cool new concepts + - download using networks -> reference + - set sampler to DPM++ 2M EDM or Euler EDM - **Image2Video** - new module for creating videos from images - simply enable from *img2img -> scripts -> image2video* diff --git a/html/reference.json b/html/reference.json index f05fee1fe..c0d84b466 100644 --- a/html/reference.json +++ b/html/reference.json @@ -169,6 +169,11 @@ "desc": "Playground v2 is a diffusion-based text-to-image generative model. The model was trained from scratch by the research team at Playground. Images generated by Playground v2 are favored 2.5 times more than those produced by Stable Diffusion XL, according to Playground’s user study.", "preview": "playgroundai--playground-v2-1024px-aesthetic.jpg" }, + "Playground v2.5": { + "path": "playground-v2.5-1024px-aesthetic.fp16.safetensors@https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic/resolve/main/playground-v2.5-1024px-aesthetic.fp16.safetensors?download=true", + "desc": "Playground v2.5 is a diffusion-based text-to-image generative model, and a successor to Playground v2. Playground v2.5 is the state-of-the-art open-source model in aesthetic quality. Our user studies demonstrate that our model outperforms SDXL, Playground v2, PixArt-α, DALL-E 3, and Midjourney 5.2.", + "preview": "playgroundai--playground-v2-1024px-aesthetic.jpg" + }, "DeepFloyd IF Medium": { "path": "DeepFloyd/IF-I-M-v1.0", "desc": "DeepFloyd-IF is a pixel-based text-to-image triple-cascaded diffusion model, that can generate pictures with new state-of-the-art for photorealism and language understanding. The result is a highly efficient model that outperforms current state-of-the-art models, achieving a zero-shot FID-30K score of 6.66 on the COCO dataset. It is modular and composed of frozen text mode and three pixel cascaded diffusion modules, each designed to generate images of increasing resolution: 64x64, 256x256, and 1024x1024.", diff --git a/models/Reference/playgroundai--playground-v2.5-1024px-aesthetic.jpg b/models/Reference/playgroundai--playground-v2.5-1024px-aesthetic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2c46bbb5c90b6be596c7d49500272e133bb2d26 GIT binary patch literal 52058 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 2048 else False - if large and k == 'ss_datasets': - continue - if large and k == 'workflow': - continue - if large and k == 'prompt': - continue - if large and k == 'ss_bucket_info': - continue - if v[0:1] == '{': - try: - v = json.loads(v) - if large and k == 'ss_tag_frequency': - v = { i: len(j) for i, j in v.items() } - if large and k == 'sd_merge_models': - scrub_dict(v, ['sd_merge_recipe']) - except Exception: - pass - res[k] = v + try: + metadata_len = file.read(8) + metadata_len = int.from_bytes(metadata_len, "little") + json_start = file.read(2) + if metadata_len <= 2 or json_start not in (b'{"', b"{'"): + shared.log.error(f"Model metadata invalid: fn={filename}") + json_data = json_start + file.read(metadata_len-2) + json_obj = json.loads(json_data) + for k, v in json_obj.get("__metadata__", {}).items(): + if v.startswith("data:"): + v = 'data' + if k == 'format' and v == 'pt': + continue + large = True if len(v) > 2048 else False + if large and k == 'ss_datasets': + continue + if large and k == 'workflow': + continue + if large and k == 'prompt': + continue + if large and k == 'ss_bucket_info': + continue + if v[0:1] == '{': + try: + v = json.loads(v) + if large and k == 'ss_tag_frequency': + v = { i: len(j) for i, j in v.items() } + if large and k == 'sd_merge_models': + scrub_dict(v, ['sd_merge_recipe']) + except Exception: + pass + res[k] = v + except Exception as e: + shared.log.error(f"Model metadata: fn={filename} {e}") sd_metadata[filename] = res global sd_metadata_pending # pylint: disable=global-statement sd_metadata_pending += 1 diff --git a/modules/sd_samplers_diffusers.py b/modules/sd_samplers_diffusers.py index eb2742210..8299ea567 100644 --- a/modules/sd_samplers_diffusers.py +++ b/modules/sd_samplers_diffusers.py @@ -72,6 +72,14 @@ samplers_data_diffusers = [ sd_samplers_common.SamplerData('SA Solver', lambda model: DiffusionSampler('SA Solver', SASolverScheduler, model), [], {}), ] +try: # diffusers==0.27.0 + from diffusers import EDMDPMSolverMultistepScheduler, EDMEulerScheduler + config['DPM++ 2M EDM'] = { 'solver_order': 2, 'solver_type': 'midpoint', 'final_sigmas_type': 'zero' } # 'algorithm_type': 'dpmsolver++' + config['Euler EDM'] = { } + samplers_data_diffusers.append(sd_samplers_common.SamplerData('DPM++ 2M EDM', lambda model: DiffusionSampler('DPM++ 2M EDM', EDMDPMSolverMultistepScheduler, model), [], {})) + samplers_data_diffusers.append(sd_samplers_common.SamplerData('Euler EDM', lambda model: DiffusionSampler('Euler EDM', EDMEulerScheduler, model), [], {})) +except Exception: + pass class DiffusionSampler: def __init__(self, name, constructor, model, **kwargs): @@ -126,6 +134,10 @@ class DiffusionSampler: self.config['algorithm_type'] = shared.opts.schedulers_dpm_solver if name == 'DEIS': self.config['algorithm_type'] = 'deis' + if 'EDM' in name: + del self.config['beta_start'] + del self.config['beta_end'] + del self.config['beta_schedule'] # validate all config params signature = inspect.signature(constructor, follow_wrapped=True) possible = signature.parameters.keys()