From 102735463011e523136f5f220ca90907d29b4820 Mon Sep 17 00:00:00 2001 From: kijai <40791699+kijai@users.noreply.github.com> Date: Mon, 11 Dec 2023 19:31:15 +0200 Subject: [PATCH 1/2] Add GenerateNoise --- nodes.py | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/nodes.py b/nodes.py index 5e4d7e4..3f8d525 100644 --- a/nodes.py +++ b/nodes.py @@ -2703,6 +2703,35 @@ class SoundReactive: return (average_level, low_level, mid_level, high_level, average_level_int, low_level_int, mid_level_int, high_level_int) + +class GenerateNoise: + @classmethod + def INPUT_TYPES(s): + return {"required": { + "width": ("INT", {"default": 512,"min": 16, "max": 4096, "step": 1}), + "height": ("INT", {"default": 512,"min": 16, "max": 4096, "step": 1}), + "batch_size": ("INT", {"default": 1, "min": 1, "max": 4096}), + "seed": ("INT", {"default": 123,"min": 0, "max": 0xffffffffffffffff, "step": 1}), + "multiplier": ("FLOAT", {"default": 80.3,"min": 0.0, "max": 4096, "step": 0.01}), + "constant_batch_noise": ("BOOLEAN", {"default": False}), + "normalize": ("BOOLEAN", {"default": False}), + }, + } + + RETURN_TYPES = ("LATENT",) + FUNCTION = "generatenoise" + + CATEGORY = "KJNodes/noise" + + def generatenoise(self, batch_size, width, height, seed, multiplier, constant_batch_noise, normalize): + generator = torch.manual_seed(seed) + noise = torch.randn([batch_size, 4, height // 8, width // 8], dtype=torch.float32, layout=torch.strided, generator=generator, device="cpu") + noise *= multiplier + if normalize: + noise = noise / noise.std() + if constant_batch_noise: + noise = noise[0].repeat(batch_size, 1, 1, 1) + return ({"samples":noise}, ) NODE_CLASS_MAPPINGS = { "INTConstant": INTConstant, @@ -2754,7 +2783,8 @@ NODE_CLASS_MAPPINGS = { "InjectNoiseToLatent": InjectNoiseToLatent, "AddLabel": AddLabel, "ReferenceOnlySimple3": ReferenceOnlySimple3, - "SoundReactive": SoundReactive + "SoundReactive": SoundReactive, + "GenerateNoise": GenerateNoise } NODE_DISPLAY_NAME_MAPPINGS = { "INTConstant": "INT Constant", @@ -2805,6 +2835,7 @@ NODE_DISPLAY_NAME_MAPPINGS = { "InjectNoiseToLatent": "InjectNoiseToLatent", "AddLabel": "AddLabel", "ReferenceOnlySimple3": "ReferenceOnlySimple3", - "SoundReactive": "SoundReactive" + "SoundReactive": "SoundReactive", + "GenerateNoise": "GenerateNoise" } \ No newline at end of file From a66ddc8b04817e551349714d594b0be20a76c878 Mon Sep 17 00:00:00 2001 From: kijai <40791699+kijai@users.noreply.github.com> Date: Mon, 11 Dec 2023 22:39:47 +0200 Subject: [PATCH 2/2] Update nodes.py --- nodes.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/nodes.py b/nodes.py index 3f8d525..38b0fcc 100644 --- a/nodes.py +++ b/nodes.py @@ -2712,10 +2712,14 @@ class GenerateNoise: "height": ("INT", {"default": 512,"min": 16, "max": 4096, "step": 1}), "batch_size": ("INT", {"default": 1, "min": 1, "max": 4096}), "seed": ("INT", {"default": 123,"min": 0, "max": 0xffffffffffffffff, "step": 1}), - "multiplier": ("FLOAT", {"default": 80.3,"min": 0.0, "max": 4096, "step": 0.01}), + "multiplier": ("FLOAT", {"default": 1.0,"min": 0.0, "max": 4096, "step": 0.01}), "constant_batch_noise": ("BOOLEAN", {"default": False}), "normalize": ("BOOLEAN", {"default": False}), }, + "optional": { + "model": ("MODEL", ), + "sigmas": ("SIGMAS", ), + } } RETURN_TYPES = ("LATENT",) @@ -2723,10 +2727,17 @@ class GenerateNoise: CATEGORY = "KJNodes/noise" - def generatenoise(self, batch_size, width, height, seed, multiplier, constant_batch_noise, normalize): + def generatenoise(self, batch_size, width, height, seed, multiplier, constant_batch_noise, normalize, sigmas=None, model=None): + generator = torch.manual_seed(seed) noise = torch.randn([batch_size, 4, height // 8, width // 8], dtype=torch.float32, layout=torch.strided, generator=generator, device="cpu") - noise *= multiplier + if sigmas is not None: + sigma = sigmas[0] - sigmas[-1] + sigma /= model.model.latent_format.scale_factor + noise *= sigma + + noise *=multiplier + if normalize: noise = noise / noise.std() if constant_batch_noise: