162 lines
6.2 KiB
Markdown
162 lines
6.2 KiB
Markdown
|
|
# Documentation
|
|
- Class name: AV_IPAdapter
|
|
- Category: Art Venture/IP Adapter
|
|
- Output node: False
|
|
|
|
AV_IPAdapter节点旨在将IP Adapter模型集成并应用于Art Venture框架中的图像。它通过利用IP Adapter和CLIP视觉模型来促进图像的增强或改变,允许基于指定参数和选项来定制视觉内容。
|
|
|
|
# Input types
|
|
## Required
|
|
- ip_adapter_name
|
|
- 指定要使用的IP Adapter模型的名称。这个参数对于选择适当的图像处理模型至关重要。
|
|
- Comfy dtype: COMBO[STRING]
|
|
- Python dtype: str
|
|
- clip_name
|
|
- 确定要与IP Adapter模型一起使用的CLIP视觉模型。这个参数对于将两个模型结合应用于图像至关重要。
|
|
- Comfy dtype: COMBO[STRING]
|
|
- Python dtype: str
|
|
- model
|
|
- 应用IP Adapter之前的初始模型状态。这个参数代表了适应过程的起点。
|
|
- Comfy dtype: MODEL
|
|
- Python dtype: object
|
|
- image
|
|
- 将要应用IP Adapter和CLIP视觉模型的图像。这个参数是节点功能的核心,作为适应过程的输入。
|
|
- Comfy dtype: IMAGE
|
|
- Python dtype: object
|
|
- weight
|
|
- 控制IP Adapter对图像的影响。这个参数调整适应效果的强度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- noise
|
|
- 调整适应过程中引入的噪声水平。这个参数可用于微调视觉输出。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
## Optional
|
|
- ip_adapter_opt
|
|
- IP Adapter模型的可选配置。这个参数允许进一步自定义适应过程。
|
|
- Comfy dtype: IPADAPTER
|
|
- Python dtype: dict
|
|
- clip_vision_opt
|
|
- CLIP视觉模型的可选配置。这个参数允许对CLIP模型的应用方式进行额外调整。
|
|
- Comfy dtype: CLIP_VISION
|
|
- Python dtype: dict
|
|
- attn_mask
|
|
- 一个可选的掩码,可以在适应过程中应用,允许进行有针对性的修改。
|
|
- Comfy dtype: MASK
|
|
- Python dtype: object
|
|
- start_at
|
|
- 定义IP Adapter应用效果的起始点,实现对图像的分阶段集成。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- end_at
|
|
- 指定IP Adapter效果的结束点,允许适应效果逐渐消失。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- weight_type
|
|
- 确定应用于适应效果的权重类型,提供标准、提示重要性或风格转移的选项。
|
|
- Comfy dtype: COMBO[STRING]
|
|
- Python dtype: str
|
|
- enabled
|
|
- 切换IP Adapter和CLIP视觉模型的应用。当设置为false时,适应过程被跳过。
|
|
- Comfy dtype: BOOLEAN
|
|
- Python dtype: bool
|
|
|
|
# Output types
|
|
- model
|
|
- 应用IP Adapter后的模型,反映了对图像所做的修改。
|
|
- Comfy dtype: MODEL
|
|
- Python dtype: object
|
|
- pipeline
|
|
- 包含适应过程中使用的IP Adapter和CLIP视觉模型的字典。这个输出提供了对模型配置的洞察。
|
|
- Comfy dtype: IPADAPTER
|
|
- Python dtype: dict
|
|
- clip_vision
|
|
- 适应过程中应用的特定CLIP视觉模型。这个输出突出了CLIP视觉在图像转换中的作用。
|
|
- Comfy dtype: CLIP_VISION
|
|
- Python dtype: object
|
|
|
|
|
|
## Usage tips
|
|
- Infra type: `CPU`
|
|
- Common nodes:
|
|
- [KSampler (Efficient)](../../efficiency-nodes-comfyui/Nodes/KSampler (Efficient).md)
|
|
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class AV_IPAdapter(IPAdapterModelLoader, IPAdapterApply):
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"ip_adapter_name": (["None"] + folder_paths.get_filename_list("ipadapter"),),
|
|
"clip_name": (["None"] + folder_paths.get_filename_list("clip_vision"),),
|
|
"model": ("MODEL",),
|
|
"image": ("IMAGE",),
|
|
"weight": ("FLOAT", {"default": 1.0, "min": -1, "max": 3, "step": 0.05}),
|
|
"noise": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.01}),
|
|
},
|
|
"optional": {
|
|
"ip_adapter_opt": ("IPADAPTER",),
|
|
"clip_vision_opt": ("CLIP_VISION",),
|
|
"attn_mask": ("MASK",),
|
|
"start_at": ("FLOAT", {"default": 0.0, "min": 0.0, "max": 1.0, "step": 0.001}),
|
|
"end_at": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.001}),
|
|
"weight_type": (
|
|
["standard", "prompt is more important", "style transfer (SDXL only)"],
|
|
{"default": "standard"},
|
|
),
|
|
"enabled": ("BOOLEAN", {"default": True}),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("MODEL", "IPADAPTER", "CLIP_VISION")
|
|
RETURN_NAMES = ("model", "pipeline", "clip_vision")
|
|
CATEGORY = "Art Venture/IP Adapter"
|
|
FUNCTION = "apply_ip_adapter"
|
|
|
|
def apply_ip_adapter(
|
|
self,
|
|
ip_adapter_name,
|
|
clip_name,
|
|
model,
|
|
image,
|
|
weight,
|
|
noise,
|
|
ip_adapter_opt=None,
|
|
clip_vision_opt=None,
|
|
enabled=True,
|
|
**kwargs,
|
|
):
|
|
if not enabled:
|
|
return (model, None, None)
|
|
|
|
if ip_adapter_opt:
|
|
if "ipadapter" in ip_adapter_opt:
|
|
ip_adapter = ip_adapter_opt["ipadapter"]["model"]
|
|
else:
|
|
ip_adapter = ip_adapter_opt
|
|
else:
|
|
assert ip_adapter_name != "None", "IP Adapter name must be specified"
|
|
ip_adapter = loader.load_ipadapter_model(ip_adapter_name)[0]
|
|
|
|
if clip_vision_opt:
|
|
clip_vision = clip_vision_opt
|
|
elif ip_adapter_opt and "clipvision" in ip_adapter_opt:
|
|
clip_vision = ip_adapter_opt["clipvision"]["model"]
|
|
else:
|
|
assert clip_name != "None", "Clip vision name must be specified"
|
|
clip_path = folder_paths.get_full_path("clip_vision", clip_name)
|
|
clip_vision = comfy.clip_vision.load(clip_path)
|
|
|
|
pipeline = {"ipadapter": {"model": ip_adapter}, "clipvision": {"model": clip_vision}}
|
|
|
|
res: Tuple = apply.apply_ipadapter(model, pipeline, image=image, weight=weight, **kwargs)
|
|
res += (pipeline, clip_vision)
|
|
|
|
return res
|
|
|
|
```
|