菜单

CLIP 视觉模型

相关源文件

本文档介绍了 ComfyUI 的 CLIP 视觉模型系统,该系统负责图像理解中视觉编码器的加载、配置和执行。这些模型将输入图像转换为嵌入向量,可用于多模态工作流中的条件设置。

有关 CLIP 文本模型、T5 和 BERT 等文本编码器信息,请参阅 文本编码器。有关 UNet 注意机制和 Transformer 架构,请参阅 UNet 和注意力

系统架构

CLIP 视觉系统由几个关键组件组成,它们协同工作以处理图像并生成嵌入。

CLIP 视觉模型处理流程

来源:comfy/clip_vision.py45-78 comfy/clip_model.py150-244

图像预处理流程

图像在输入视觉编码器之前会经过标准化的预处理

图像预处理流程

clip_preprocess 函数处理以下步骤:

  • 通道选择(仅 RGB)
  • 维度重排,符合 PyTorch 约定
  • 双三次插值缩放
  • 中心裁剪至目标尺寸
  • 使用 ImageNet 统计数据进行归一化

来源:comfy/clip_vision.py20-37

模型配置和加载

该系统支持通过 JSON 配置文件加载多种视觉编码器架构

模型类型配置文件层数隐藏层大小图像尺寸
CLIP ViT-Lclip_vision_config_vitl.json241024224
CLIP ViT-L-336clip_vision_config_vitl_336.json241024336
CLIP ViT-Gclip_vision_config_g.json481664224
CLIP ViT-Hclip_vision_config_h.json321280224
SigLIP-384clip_vision_siglip_384.json231152384
SigLIP-512clip_vision_siglip_512.json231152512
DINOv2dino2_giant.json--224

load_clipvision_from_sd 函数通过检查 state_dict 结构来自动检测模型架构。

来源:comfy/clip_vision.py106-141 comfy/clip_vision_config_vitl_336_llava.json1-19

神经网络架构

视觉模型实现了一个基于 Transformer 的架构,包含几个关键组件

CLIP 视觉架构组件

不同模型类型的关键架构差异

  • 标准 CLIP:使用类别嵌入(class embedding)token,无 patch bias
  • SigLIP:无类别嵌入,在卷积中使用 patch bias
  • LLaVA 变体:包含多模态投影器(multi-modal projector)以集成语言模型

来源:comfy/clip_model.py150-244 comfy/clip_model.py5-74

编码过程和输出格式

encode_image 方法通过完整流程处理图像。

图像编码状态机

Output 类提供对不同嵌入类型的字典式访问。

输出键描述形状用例
last_hidden_state最终 Transformer 层输出[B, N, D]完整序列特征
image_embeds池化图像表示[B, D]全局图像嵌入
penultimate_hidden_states倒数第二层[B, N, D]中间特征
mm_projected多模态投影[B, N, 4096]LLaVA 集成

来源:comfy/clip_vision.py68-78 comfy/clip_vision.py14-18

模型类型注册表和扩展

系统采用注册表模式支持不同的编码器架构

这使得轻松扩展新视觉编码器类型成为可能。配置文件中的 model_type 字段决定了要实例化的类。

支持的激活函数

功能实现模型
quick_gelua * sigmoid(1.702 * a)标准 CLIP
gelutorch.nn.functional.gelu多种
gelu_pytorch_tanhgelu(a, approximate="tanh")较新模型

来源:comfy/clip_vision.py39-43 comfy/clip_model.py24-27

与模型管理集成

CLIP 视觉模型与 ComfyUI 更广泛的模型管理系统集成

模型管理集成

ModelPatcher 系统允许对视觉模型进行动态修改,而不会对基础权重进行永久性更改,支持 LoRA 适配等技术。

来源:comfy/clip_vision.py54-60 comfy/clip_vision.py69-77