73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
|
|
# Documentation
|
|
- Class name: `ControlNetHadamard`
|
|
- Category: `Bmad/conditioning`
|
|
- Output node: `False`
|
|
|
|
ControlNetHadamard节点应用控制网络到一组图像和条件上,根据控制网络的输出和指定的强度调整条件。它旨在实现动态图像调节,允许根据控制网络的逻辑修改图像属性或风格。
|
|
|
|
# Input types
|
|
## Required
|
|
- conds
|
|
- 要应用于每个图像的条件,这些条件会被控制网络修改以达到预期效果。
|
|
- Comfy dtype: CONDITIONING
|
|
- Python dtype: List[Tuple[torch.Tensor, Dict[str, Any]]]
|
|
- control_net
|
|
- 用于基于图像和指定强度修改条件的控制网络。
|
|
- Comfy dtype: CONTROL_NET
|
|
- Python dtype: torch.nn.Module
|
|
- image
|
|
- 应用条件的图像,作为控制网络修改的基础。
|
|
- Comfy dtype: IMAGE
|
|
- Python dtype: List[torch.Tensor]
|
|
- strength
|
|
- 决定控制网络对条件影响的强度,允许进行精细调整。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
|
|
# Output types
|
|
- conditioning
|
|
- 经过控制网络处理后的修改条件,反映了应用的变化。
|
|
- Comfy dtype: CONDITIONING
|
|
- Python dtype: List[Tuple[torch.Tensor, Dict[str, Any]]]
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `GPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class ControlNetHadamard(nodes.ControlNetApply):
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {"required": {"conds": ("CONDITIONING",),
|
|
"control_net": ("CONTROL_NET",),
|
|
"image": ("IMAGE",),
|
|
"strength": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}),
|
|
}}
|
|
|
|
RETURN_TYPES = ("CONDITIONING",)
|
|
FUNCTION = "apply"
|
|
CATEGORY = "Bmad/conditioning"
|
|
INPUT_IS_LIST = True
|
|
OUTPUT_IS_LIST = (True,)
|
|
|
|
def apply(self, conds, control_net, images, strength):
|
|
control_net = control_net[0]
|
|
strength = strength[0]
|
|
|
|
if len(images) != len(conds):
|
|
raise "lists sizes do not match" # maybe relax check and allow for fewer conds than images?
|
|
|
|
print(len(images))
|
|
print(len(images[0]))
|
|
print(len(conds))
|
|
new_conds = []
|
|
for i in range(len(images)):
|
|
new_conds.append(super().apply_controlnet(conds[i], control_net, images[i], strength)[0])
|
|
return (new_conds,)
|
|
|
|
```
|