MagicNodes / mod /hard /mg_adaptive.py
DZRobo
Initial project structure and core files added (#1)
695fbf0 unverified
raw
history blame
1.25 kB
"""Adaptive sampler helper node (moved to mod/).
Keeps class/key name AdaptiveSamplerHelper for backward compatibility.
"""
import numpy as np
from scipy.ndimage import laplace
class AdaptiveSamplerHelper:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"image": ("IMAGE", {}),
"steps": ("INT", {"default": 20, "min": 1, "max": 200}),
"cfg": ("FLOAT", {"default": 7.0, "min": 0.1, "max": 20.0, "step": 0.1}),
"denoise": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.01}),
}
}
RETURN_TYPES = ("INT", "FLOAT", "FLOAT")
RETURN_NAMES = ("steps", "cfg", "denoise")
FUNCTION = "tune"
CATEGORY = "MagicNodes"
def tune(self, image, steps, cfg, denoise):
img = image[0].cpu().numpy()
gray = img.mean(axis=2)
brightness = float(gray.mean())
contrast = float(gray.std())
sharpness = float(np.var(laplace(gray)))
tuned_steps = int(max(1, round(steps + sharpness * 10)))
tuned_cfg = float(cfg + contrast * 2.0)
tuned_denoise = float(np.clip(denoise + (0.5 - brightness), 0.0, 1.0))
return (tuned_steps, tuned_cfg, tuned_denoise)