Stable Diffusion 提示词的77和768的理解

文本编译器

Stable Diffusion 目前使用的Text Encoder(文本编译器)是 CLIP 模型即Contrastive Language Image Pre-training(对比语言图像预训练)。

CLIP 是 OpenAI 训练的一种模型,广泛用于文本-图像匹配(例如在 Stable Diffusion 这样的 AI 生成模型中)。在这个系统中,文本会被 CLIP 编码器转换为固定长度的向量序列,其中 最大长度为 77。

为什么是77个等长向量?

1.固定的 token 上限:

  • CLIP 使用 Transformer 作为文本编码器,并对文本进行 Tokenization(分词) 处理。

  • 为了保证输入的 统一长度,CLIP 规定 文本最大 token 长度为 77,即输入的文本最多可以拆分成 77 个 token。

2.包含特殊标记(Special Tokens):

  • Token 序列的 首个 token 是 起始 token (<start_of_text> 或 [SOS])。

  • Token 序列的 最后一个 token 是 终止 token (<end_of_text> 或 [EOS])。

  • 即使文本长度不足 77 个 token,剩余部分会用 填充 token(Padding) 补足,使其仍然是 77 个 token 的向量序列。

3.与 Transformer 结构匹配:

  • CLIP 的 Transformer 编码器 使用固定的序列长度,以便进行高效的批量计算(Batch Processing)。

  • 77 这个数值是 OpenAI 设定的 一个经验性值,保证了模型可以适应 大多数文本输入,又不会占用过多的计算资源。

为什么每个向量有 768 维?

1. CLIP 使用 ViT-B/32 作为视觉编码器,文本编码器也遵循了 ViT(Vision Transformer) 的特征维度设定。

2. Transformer 模型的隐藏层维度通常设定为 768,类似于 BERT-base(它的隐藏层也是 768 维)。

3. 每个 token 的表示是一个 768 维的向量,这样可以 更容易适配 Transformer 的多层自注意力机制(Self-Attention)。

所以CLIP 的 Text Encoder 会输出 77 × 768 维的文本特征矩阵,并被用于图像-文本匹配或者扩散模型的文本条件输入。故 Stable Diffusion的提示词会分为77个token,每一个是768维的等长向量。

例如:

提示词输入的是 ”画一个小狗“。

  1. 你输入 “画一个小狗”,CLIP 先进行 分词(Tokenization)。

  2. 每个 token 变成一个 768 维向量,最终组成一个 77 × 768 的特征矩阵。

  3. 这个矩阵被输入到 AI 生成模型,用于理解你的 Prompt 并生成图像。
    画一个小狗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值