Files
CavinHuang-comfyui-nodes-docs/docs/BNK_CLIPTextEncodeAdvanced.md
2024-05-26 20:35:16 +08:00

3.4 KiB

Documentation

AdvancedCLIPTextEncode节点旨在将文本输入处理和编码成可用于高级条件任务的形式。它利用CLIP模型的能力生成捕获文本语义属性的嵌入。该节点特别适用于需要对输入文本有更深入理解的应用,如生成模型或需要对输入文本有更深入理解的自然语言处理任务。

Input types

Required

  • text
    • 'text'参数是节点的主要输入,代表需要编码的文本。它应该是一个字符串,并且可以包含多行文本,允许处理更复杂和更长的文本输入。此参数至关重要,因为编码的质量在很大程度上取决于所提供文本的准确性和丰富性。
    • Comfy dtype: STRING
    • Python dtype: str
  • clip
    • 'clip'参数指定用于文本编码的CLIP模型。它是一个必需的输入,因为节点依赖于CLIP模型的架构和能力,从文本输入生成有意义的嵌入。
    • Comfy dtype: CLIP
    • Python dtype: Any
  • token_normalization
    • 'token_normalization'参数确定在编码之前文本中的标记是如何规范化的。它可以采用不同的策略,如'none'、'mean'、'length'或'length+mean',这会影响标记嵌入的分布和尺度。这个参数对于控制嵌入中的方差很重要,并且可以影响条件性能。
    • Comfy dtype: COMBO[none, mean, length, length+mean]
    • Python dtype: str
  • weight_interpretation
    • 'weight_interpretation'参数影响编码过程中标记权重的解释方式。它提供各种选项,如'comfy'、'A1111'、'compel'、'comfy++'或'down_weight',每种选项都可能导致对文本某些方面的不同强调。此参数对于微调编码以符合下游任务的具体要求至关重要。
    • Comfy dtype: COMBO[comfy, A1111, compel, comfy++, down_weight]
    • Python dtype: str

Optional

  • affect_pooled
    • 'affect_pooled'参数是一个可选输入,用于控制是否应通过编码过程影响CLIP模型的池化输出。它接受'enable'或'disable'的值,这决定了池化输出是否包含在最终嵌入中。
    • Comfy dtype: STRING
    • Python dtype: str

Output types

  • CONDITIONING
    • AdvancedCLIPTextEncode节点的输出是一个张量,代表编码后的文本。这个张量用作进一步处理或生成任务的条件输入。它包含了从文本中提取的语义信息,提供了丰富和细致的表示,可以指导工作流程中的后续步骤。
    • Comfy dtype: TENSOR
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: CPU

Source code

class AdvancedCLIPTextEncode:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'text': ('STRING', {'multiline': True}), 'clip': ('CLIP',), 'token_normalization': (['none', 'mean', 'length', 'length+mean'],), 'weight_interpretation': (['comfy', 'A1111', 'compel', 'comfy++', 'down_weight'],)}}
    RETURN_TYPES = ('CONDITIONING',)
    FUNCTION = 'encode'
    CATEGORY = 'conditioning/advanced'

    def encode(self, clip, text, token_normalization, weight_interpretation, affect_pooled='disable'):
        (embeddings_final, pooled) = advanced_encode(clip, text, token_normalization, weight_interpretation, w_max=1.0, apply_to_pooled=affect_pooled == 'enable')
        return ([[embeddings_final, {'pooled_output': pooled}]],)