--- license: creativeml-openrail-m tags: - stable-diffusion - stable-diffusion-diffusers - text-to-image - multires_noise inference: true --- A model trained with Pyramid Noise - see https://wandb.ai/johnowhitaker/multires_noise/reports/Multi-Resolution-Noise-for-Diffusion-Model-Training--VmlldzozNjYyOTU2 for details ```python from torch import nn import random def pyramid_noise_like(x, discount=0.9): b, c, w, h = x.shape u = nn.Upsample(size=(w, h), mode='bilinear') noise = torch.randn_like(x) for i in range(6): r = random.random()*2+2 # Rather than always going 2x, w, h = max(1, int(w/(r**i))), max(1, int(h/(r**i))) noise += u(torch.randn(b, c, w, h).to(x)) * discount**i if w==1 or h==1: break return noise / noise.std() # Scale back to unit variance ``` To use the mode for inference, just load it like a normal stable diffusion pipeline: ```python from diffusers import StableDiffusionPipeline model_path = "pyramid_noise_test_500steps" pipe = StableDiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16) pipe.to("cuda") image = pipe(prompt="A black image").images[0] image ```