4、文本到视频(T2V)技术:文本编码器、交叉注意力与提示词工程
文本到视频,说白了就是让AI看懂你的文字描述,然后生成一段对应的视频。这背后涉及几个核心技术点:文本编码器怎么理解语言、交叉注意力怎么对齐文本和画面、以及我们怎么写出AI能“听懂”的提示词。
我个人习惯把T2V拆成三个环节来看:编码、注入、生成。编码是把文字变成向量,注入是把向量塞进模型,生成是最终出视频。今天咱们重点聊前两个,顺便把提示词工程的基础打牢。
4.1 文本编码器:CLIP与T5
文本编码器的作用,就是把一句人话变成一串数字(向量)。模型不认识“一只猫在追蝴蝶”,它只认识浮点数数组。
目前主流方案有两种:CLIP 和 T5。
4.1.1 CLIP:图文对齐的老牌选手
CLIP是OpenAI开源的模型,核心思路是用4亿对图文数据做对比学习。它把文本和图像映射到同一个向量空间,让匹配的图文对距离近,不匹配的远。
我在项目中遇到过一个问题:CLIP对具象名词理解很好,比如“红苹果”、“蓝天空”。但遇到抽象概念或复杂关系,比如“在...之后”、“逐渐变成”,它就有点懵。为什么?因为CLIP的训练数据大多是静态图文对,缺少时序信息。
4.1.2 T5:更强的文本理解能力
T5是Google的文本到文本模型。它不局限于图文对齐,而是用海量纯文本数据训练。所以它对语法结构、逻辑关系、长文本的理解更强。
举个例子,你写“一个男人从左边走到右边,然后停下来”。CLIP可能只抓住“男人”、“左边”、“右边”这些关键词,但T5能理解“从...到...然后”这个时序关系。
我个人习惯:简单场景用CLIP,复杂场景用T5。如果视频需要精确控制物体运动轨迹或状态变化,T5是更好的选择。
| 模型 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| CLIP | 图文对齐好、推理快 | 时序理解弱、抽象概念差 | 简单静态场景、风格迁移 |
| T5 | 文本理解强、逻辑关系好 | 模型大、推理慢 | 复杂动作、多物体交互 |
4.2 交叉注意力机制:文本怎么“看”视频
文本编码器把文字变成了向量,但怎么让视频生成模型“看到”这些向量?答案就是交叉注意力。
你想想看,视频生成模型内部是一堆卷积或Transformer层。每一层都在处理图像特征。交叉注意力层的作用,就是让这些图像特征去“查询”文本特征,找到最相关的部分。
4.2.1 工作原理
简单来说,交叉注意力有三个输入:Query(查询)、Key(键)、Value(值)。
- Query:来自图像特征(比如当前帧的某个区域)
- Key:来自文本特征(每个词对应的向量)
- Value:也是文本特征
计算过程是:Query和Key做点积,得到注意力权重。然后用这个权重去加权求和Value。结果就是:图像区域从文本中“拿”到了它最需要的信息。
举个例子,提示词是“一只白色的猫在草地上奔跑”。生成模型在处理“猫”这个区域时,交叉注意力会让它重点关注文本中的“白色”、“猫”、“奔跑”。而处理背景时,它会关注“草地”。
Attention(Q, K, V) = softmax(Q * K^T / sqrt(d)) * V
4.2.2 注入方式:早融合 vs 晚融合
文本条件怎么注入到模型里?主要有两种方式:
- 早融合(Early Fusion):在模型最开始的层就把文本特征拼进去。好处是文本信息能影响整个生成过程,坏处是计算量大。
- 晚融合(Late Fusion):在模型中间或后期才注入文本。好处是节省算力,但文本对底层特征的控制力弱。
我记得有一次做项目,用早融合时视频里物体的位置控制得很准,但生成速度慢了一倍。换成晚融合后速度快了,但物体经常“跑偏”。最后我折中了一下:在关键层做早融合,其他层做晚融合。效果和速度都满意了。
4.3 文本条件注入:不只是“塞进去”
文本条件注入,不是简单地把文本向量拼到图像特征里就完事了。这里有几个细节要注意。
4.3.1 注入位置
文本条件可以注入到:
- 时间层:控制视频的时序变化(比如“逐渐变亮”)
- 空间层:控制每一帧的画面内容(比如“左边有棵树”)
- 时空层:同时控制时间和空间
我个人习惯:空间层用CLIP特征,时间层用T5特征。因为空间信息偏静态,CLIP够用;时间信息偏动态,T5更擅长。
4.3.2 注入强度
文本条件注入太强,视频会过拟合文本,失去多样性。注入太弱,视频又跟文本没关系。怎么调?
我一般用classifier-free guidance(CFG)来控制。CFG有一个scale参数,值越大,文本控制力越强。经验值:7.5到12之间。低于7.5,视频容易跑题;高于12,视频会显得僵硬。
4.4 提示词工程基础:让AI听懂人话
提示词工程,说白了就是写AI能理解的指令。同样的模型,不同人写提示词,效果天差地别。
4.4.1 结构化提示词
我建议把提示词拆成几个部分:
- 主体:谁在做什么(“一只橘猫在追蝴蝶”)
- 环境:背景是什么(“阳光明媚的草地”)
- 风格:画面风格(“宫崎骏动画风格”)
- 运动:怎么动(“蝴蝶忽高忽低地飞”)
- 镜头:拍摄方式(“镜头缓慢推进”)
举个例子:
# 不好的提示词
一只猫在草地上
# 好的提示词
一只橘猫在阳光明媚的草地上追逐白色蝴蝶,宫崎骏动画风格,蝴蝶忽高忽低飞行,镜头缓慢推进,背景虚化
4.4.2 负面提示词
负面提示词告诉AI不要生成什么。这个非常有用。
我曾经生成一个“夜晚城市”的视频,结果画面里总有月亮。我加了“no moon, no lunar”到负面提示词里,问题就解决了。
常见的负面提示词:
- 模糊、扭曲、变形
- 多余的手指、畸形肢体
- 水印、文字、logo
- 低质量、噪点、压缩痕迹
4.4.3 权重控制
有些模型支持给关键词加权重。比如用括号或数字:
# 强调“橘猫”
一只(橘猫:1.5)在草地上奔跑
# 弱化“草地”
一只橘猫在(草地:0.8)上奔跑
权重范围一般在0.5到2.0之间。超过2.0,画面容易过饱和或出现伪影。
4.4.4 迭代优化
提示词工程不是一次搞定的。我的工作流是:
- 写初版:把核心要素写清楚
- 生成预览:用低分辨率快速跑一次
- 分析问题:哪里不对?主体?环境?运动?
- 修改提示词:针对问题调整
- 重复2-4步:直到满意
嗯,这里要注意:每次只改一个变量。不要同时改主体和风格,否则你分不清是哪个改动起了作用。
好了,文本到视频的核心技术就这些。文本编码器负责理解,交叉注意力负责对齐,条件注入负责控制,提示词工程负责沟通。把这四块搞明白,你就能写出高质量的T2V模型了。