mirror of
https://git.datalinker.icu/kijai/ComfyUI-KJNodes.git
synced 2026-05-26 17:37:55 +08:00
Add WeightScheduleConvert
This commit is contained in:
parent
e9b8af8fd0
commit
9b25146064
82
nodes.py
82
nodes.py
@ -386,8 +386,8 @@ and interpolating from that to fully black at the 16th frame.
|
|||||||
"points_string": ("STRING", {"default": "0:(0.0),\n7:(1.0),\n15:(0.0)\n", "multiline": True}),
|
"points_string": ("STRING", {"default": "0:(0.0),\n7:(1.0),\n15:(0.0)\n", "multiline": True}),
|
||||||
"invert": ("BOOLEAN", {"default": False}),
|
"invert": ("BOOLEAN", {"default": False}),
|
||||||
"frames": ("INT", {"default": 16,"min": 2, "max": 255, "step": 1}),
|
"frames": ("INT", {"default": 16,"min": 2, "max": 255, "step": 1}),
|
||||||
"width": ("INT", {"default": 512,"min": 16, "max": 4096, "step": 1}),
|
"width": ("INT", {"default": 512,"min": 1, "max": 4096, "step": 1}),
|
||||||
"height": ("INT", {"default": 512,"min": 16, "max": 4096, "step": 1}),
|
"height": ("INT", {"default": 512,"min": 1, "max": 4096, "step": 1}),
|
||||||
"interpolation": (["linear", "ease_in", "ease_out", "ease_in_out"],),
|
"interpolation": (["linear", "ease_in", "ease_out", "ease_in_out"],),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -4906,8 +4906,7 @@ class MaskOrImageToWeight:
|
|||||||
FUNCTION = "execute"
|
FUNCTION = "execute"
|
||||||
CATEGORY = "KJNodes"
|
CATEGORY = "KJNodes"
|
||||||
DESCRIPTION = """
|
DESCRIPTION = """
|
||||||
Gets the mean value of mask or image
|
Converts different value lists/series to another type.
|
||||||
and returns it as a float value.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def execute(self, output_type, images=None, masks=None):
|
def execute(self, output_type, images=None, masks=None):
|
||||||
@ -4915,7 +4914,6 @@ and returns it as a float value.
|
|||||||
if masks is not None and images is None:
|
if masks is not None and images is None:
|
||||||
for mask in masks:
|
for mask in masks:
|
||||||
mean_values.append(mask.mean().item())
|
mean_values.append(mask.mean().item())
|
||||||
print(mean_values)
|
|
||||||
elif masks is None and images is not None:
|
elif masks is None and images is not None:
|
||||||
for image in images:
|
for image in images:
|
||||||
mean_values.append(image.mean().item())
|
mean_values.append(image.mean().item())
|
||||||
@ -4934,9 +4932,79 @@ and returns it as a float value.
|
|||||||
raise Exception("MaskOrImageToWeight: pandas is not installed. Please install pandas to use this output_type")
|
raise Exception("MaskOrImageToWeight: pandas is not installed. Please install pandas to use this output_type")
|
||||||
return pd.Series(mean_values),
|
return pd.Series(mean_values),
|
||||||
elif output_type == 'tensor':
|
elif output_type == 'tensor':
|
||||||
return torch.tensor(mean_values, dtype=torch.float32)
|
return torch.tensor(mean_values, dtype=torch.float32),
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unsupported output_type: {output_type}")
|
raise ValueError(f"Unsupported output_type: {output_type}")
|
||||||
|
|
||||||
|
class WeightScheduleConvert:
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"input_values": ("FLOAT", {"default": 0.0, "forceInput": True}),
|
||||||
|
"output_type": (
|
||||||
|
[
|
||||||
|
'list',
|
||||||
|
'list of lists',
|
||||||
|
'pandas series',
|
||||||
|
'tensor',
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"default": 'list'
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
RETURN_TYPES = ("FLOAT",)
|
||||||
|
FUNCTION = "execute"
|
||||||
|
CATEGORY = "KJNodes"
|
||||||
|
DESCRIPTION = """
|
||||||
|
Gets the mean value of mask or image
|
||||||
|
and returns it as a float value.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def detect_input_type(self, input_values):
|
||||||
|
import pandas as pd
|
||||||
|
if isinstance(input_values, list):
|
||||||
|
return 'list'
|
||||||
|
elif isinstance(input_values, pd.Series):
|
||||||
|
return 'pandas series'
|
||||||
|
elif isinstance(input_values, torch.Tensor):
|
||||||
|
return 'tensor'
|
||||||
|
elif isinstance(input_values, list) and all(isinstance(sub, list) for sub in input_values):
|
||||||
|
return 'list of lists'
|
||||||
|
else:
|
||||||
|
raise ValueError("Unsupported input type")
|
||||||
|
|
||||||
|
def execute(self, input_values, output_type):
|
||||||
|
import pandas as pd
|
||||||
|
# Detect the input type
|
||||||
|
input_type = self.detect_input_type(input_values)
|
||||||
|
|
||||||
|
# Convert input_values to a list of floats
|
||||||
|
if input_type == 'list of lists':
|
||||||
|
float_values = [item for sublist in input_values for item in sublist]
|
||||||
|
elif input_type == 'pandas series':
|
||||||
|
float_values = input_values.tolist()
|
||||||
|
elif input_type == 'tensor':
|
||||||
|
float_values = input_values
|
||||||
|
else:
|
||||||
|
float_values = input_values
|
||||||
|
|
||||||
|
if output_type == 'list':
|
||||||
|
return float_values,
|
||||||
|
elif output_type == 'list of lists':
|
||||||
|
return [[value] for value in float_values],
|
||||||
|
elif output_type == 'pandas series':
|
||||||
|
return pd.Series(float_values),
|
||||||
|
elif output_type == 'tensor':
|
||||||
|
if input_type == 'pandas series':
|
||||||
|
return torch.tensor(input_values.values, dtype=torch.float32),
|
||||||
|
else:
|
||||||
|
raise ValueError(f"Unsupported output_type: {output_type}")
|
||||||
|
|
||||||
class FloatToMask:
|
class FloatToMask:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -5060,6 +5128,7 @@ NODE_CLASS_MAPPINGS = {
|
|||||||
"ImageAndMaskPreview": ImageAndMaskPreview,
|
"ImageAndMaskPreview": ImageAndMaskPreview,
|
||||||
"StabilityAPI_SD3": StabilityAPI_SD3,
|
"StabilityAPI_SD3": StabilityAPI_SD3,
|
||||||
"MaskOrImageToWeight": MaskOrImageToWeight,
|
"MaskOrImageToWeight": MaskOrImageToWeight,
|
||||||
|
"WeightScheduleConvert": WeightScheduleConvert,
|
||||||
"FloatToMask": FloatToMask,
|
"FloatToMask": FloatToMask,
|
||||||
"CustomSigmas": CustomSigmas
|
"CustomSigmas": CustomSigmas
|
||||||
}
|
}
|
||||||
@ -5145,6 +5214,7 @@ NODE_DISPLAY_NAME_MAPPINGS = {
|
|||||||
"ImageAndMaskPreview": "Image & Mask Preview",
|
"ImageAndMaskPreview": "Image & Mask Preview",
|
||||||
"StabilityAPI_SD3": "Stability API SD3",
|
"StabilityAPI_SD3": "Stability API SD3",
|
||||||
"MaskOrImageToWeight": "Mask Or Image To Weight",
|
"MaskOrImageToWeight": "Mask Or Image To Weight",
|
||||||
|
"WeightScheduleConvert": "Weight Schedule Convert",
|
||||||
"FloatToMask": "Float To Mask",
|
"FloatToMask": "Float To Mask",
|
||||||
"CustomSigmas": "Custom Sigmas",
|
"CustomSigmas": "Custom Sigmas",
|
||||||
}
|
}
|
||||||
@ -123,7 +123,7 @@ app.registerExtension({
|
|||||||
createSplineEditor(this, true)
|
createSplineEditor(this, true)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.setSize([550, 800])
|
this.setSize([550, 850])
|
||||||
this.splineEditor.parentEl = document.createElement("div");
|
this.splineEditor.parentEl = document.createElement("div");
|
||||||
this.splineEditor.parentEl.className = "spline-editor";
|
this.splineEditor.parentEl.className = "spline-editor";
|
||||||
this.splineEditor.parentEl.id = `spline-editor-${this.uuid}`
|
this.splineEditor.parentEl.id = `spline-editor-${this.uuid}`
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user