想象你是一家剧院的总导演,手下有一位“万能 AI 摄制组”——只要你说得清要求,它就能把大脑里的画面变成流动的视频。问题来了:你该怎么让这位摄制组明白你要什么呢?最简单的方式是“写剧本”(文本条件);如果担心文字说不清画面质感,你可以“递一张概念图”(图像条件);如果角色有特定动作,比如后空翻或太极起手式,你还可以“请一位动作教练来示范动作卡”(姿态条件)。这三种方式,就是视频生成领域的三大条件控制:文本、图像、姿态。 从 Sora 到可灵、Pika,这些模型之所以能“指哪打哪”,靠的正是层层递进的条件控制机制。本文用这个“导演-摄制组”的比喻贯穿始终,带你从零看懂条件控制的技术本质、工程实现与调优方法。没有公式恐惧?放心,每个公式我们都会像拆剧本一样逐字解析。

岗位关联

对 AI 从业者而言,条件控制是视频生成产品的“方向盘”——掌握它,你才能把模型能力真正落地为可商用、可控、可验收的视频创作工具,这也是多模态与音视频 AI 领域的核心竞争力。

目录
  1. 可视化演示
  2. 条件控制全景
  3. 文本条件控制
  4. 图像条件控制
  5. 姿态条件控制
  6. 工程实现调优
  7. 验收与部署
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过文本条件驱动、姿态关键点控制和多条件融合三个模式,展示视频生成中条件信号注入与控制的完整机制。

本节配有交互动效(进入视口后自动加载,约 3KB)。

文本条件驱动 CLIP/T5编码器将提示词编码为语义向量 通过交叉注意力注入去噪网络指导帧生成 Cross-Attn(Q=feat, K=V=text_emb) 文本语义向量通过交叉注意力控制视频帧内容

条件控制全景

剧院里来了位“AI 摄制组”,它不会自己凭空创造,而是需要你这位导演递上“创作输入”。你可以递剧本(文本)、递样图(图像),或者递动作卡(姿态)。这三种输入被统称为条件(Condition),而让生成过程服从这些条件的技术,就是条件控制(Conditional Control)。没有条件控制的视频生成,就像摄制组自由发挥的即兴演出——可能惊艳,但完全不可控;有了条件控制,才能真正做到“指哪打哪”。

在主流架构中,Sora 采用扩散 Transformer(DiT)结构,把视频看作时空 token 序列,适合长视频与多模态联合建模;可灵、Pika 则多采用 U-Net 类扩散架构,在潜空间逐步去噪生成画面。条件控制并非某种模型专属,而是一套“把条件注入去噪过程”的通用机制:无论文本、图像还是姿态,都先被编码成向量或特征图,再以特定方式送入生成网络,引导每一帧的内容走向。

从工作流程看,一次完整的条件视频生成,通常分为四步:条件解析、条件编码、注入生成、解码输出。就像导演开拍前先读剧本、找参考图、排动作,然后把所有要求传达给摄影组,最后剪辑成片。

把条件控制比作“给摄制组开会”,你就能理解为什么它是产品落地的关键:没有条件的模型像一群自由艺术家,有了条件的模型才像一支能执行创意的正规团队。

Conditional Video Generation:p(v∣c),c∈{文本, 图像, 姿态}\text{Conditional Video Generation:}\quad p(v \mid c), \quad c\in\{\text{文本},\,\text{图像},\,\text{姿态}\}
这个式子说明:视频生成从“无条件的自由发挥”变成“有条件的定向创作”,条件 c 就是导演手中的指挥棒。
  1. 条件概率$p(v \mid c)$ 表示“在给定条件 c 时,生成视频 v 的概率分布”。写剧本、递样图、给动作卡,都是为这个概率分布增加约束。
    p(v∣c)p(v \mid c)
  2. 三种条件$c$ 可以具体化为文本提示、首帧图像或姿态骨架序列,它们统一抽象为“条件”这一概念。
    c∈{文本, 图像, 姿态}c\in\{\text{文本},\,\text{图像},\,\text{姿态}\}
  3. 生成目标模型学习的是条件分布而不是无条件分布,即学会“看着条件生成视频”。
    Learning: pθ(v∣c)≈p(v∣c)\text{Learning: } p_{\theta}(v \mid c) \approx p(v \mid c)

文本条件控制

文本条件是最常用、最直观的控制方式。你写下一句“一只金色的龙在云端盘旋”,AI 摄制组就按剧本开工。但模型并不懂人类语言,它只懂数字。于是第一步需要分词器(Tokenizer)把句子切成 token 序列,再用文本编码器把 token 变成向量。Sora 使用的大规模语言模型与 CLIP 文本编码器,都能把语义映射为高维向量空间中的点——意思相近的句子,向量距离也相近。

拿到文本向量后,模型通过交叉注意力(Cross-Attention)把语义“翻译”到视觉特征上:在生成每一帧时,模型会反复“回看”文本向量,决定画面的哪块区域对应“龙”,哪块区域对应“云”。为了让模型更听指令,训练时还会采用无分类器引导(Classifier-Free Guidance, CFG):同时预测“有条件”和“无条件”两个方向,再让生成轨迹向有条件方向偏移,从而增强提示词的约束力。

文本条件是门槛最低的控制方式,但“剧本写得再细,画风依然难精确”。比如“赛博朋克风格的龙”,不同模型能给出截然不同的画面。所以当画面质感要求高时,导演会再递一张样图。

ϵ~=ϵθ(zt,∅,t)+w⋅(ϵθ(zt,ctext,t)−ϵθ(zt,∅,t))\tilde{\epsilon} = \epsilon_{\theta}(z_t, \emptyset, t) + w \cdot \left(\epsilon_{\theta}(z_t, c_{\text{text}}, t) - \epsilon_{\theta}(z_t, \emptyset, t)\right)
这个式子是“导演音量旋钮”:w 越大,模型越听剧本;w 太小,生成画面就会偏离提示词。
  1. 噪声预测$\epsilon_{\theta}(z_t, c, t)$ 是扩散模型在第 t 步预测的噪声,$z_t$ 是当前带噪画面,$c$ 是条件,$t$ 是时间步。
    ϵθ(zt,c,t)\epsilon_{\theta}(z_t, c, t)
  2. 无条件方向$\epsilon_{\theta}(z_t, \emptyset, t)$ 表示不看任何提示时的“自由发挥”方向,$\emptyset$ 表示空条件。
    ϵθ(zt,∅,t)\epsilon_{\theta}(z_t, \emptyset, t)
  3. 条件偏移括号中的差值正是“剧本带来的改变”,把它乘上权重 $w$ 叠加到自由方向上。
    w⋅(ϵθ(zt,ctext,t)−ϵθ(zt,∅,t))w \cdot \left(\epsilon_{\theta}(z_t, c_{\text{text}}, t) - \epsilon_{\theta}(z_t, \emptyset, t)\right)
  4. 最终方向$\tilde{\epsilon}$ 是最终使用的去噪方向,相当于“自由发挥 + 导演强调”。
    ϵ~=ϵθ(zt,∅,t)+w⋅Δ\tilde{\epsilon} = \epsilon_{\theta}(z_t, \emptyset, t) + w \cdot \Delta

图像条件控制

如果说文本是“写意剧本”,图像条件就是“实物参考图”。以可灵、Pika 为代表的图生视频方案,允许用户上传一张首帧图片,模型需要让镜头从这个画面开始“动起来”。问题是:单张图片怎么变成一段连续视频?

首先,模型会用VAE 编码器把图片压缩成紧凑的潜空间特征,得到“画面语义浓缩包”。然后在潜空间中逐步添加噪声,再让 U-Net 或 DiT 基于这个首帧特征去噪生成后续帧。为了让视频不只是“会动的图片”,模型通常还会引入时序注意力(Temporal Attention),让相邻帧的特征相互“对表”,确保主体物、背景和光影在时间轴上连续变化,而不是每帧各行其是。

对于 Sora 这类文生视频模型,图像条件往往作为“首尾帧中间帧”条件或镜头控制信号使用;可灵则把首帧图像与文本提示一起作为条件,形成“图定基调、文补细节”的组合拳。

有了首帧样图,画面风格稳住了,但如果角色要做特定动作,导演还需要一张“动作卡”——姿态条件。

z0=E(Ifirst),zt+1=Denoise(zt,z0,ctext)z_0 = \mathcal{E}(I_{\text{first}}), \quad z_{t+1} = \text{Denoise}(z_t, z_0, c_{\text{text}})
首帧图像被压缩成潜变量 $z_0$,之后每一帧的去噪过程都以它为锚点,像放风筝时手中那根线。
  1. VAE 编码$\mathcal{E}(I_{\text{first}})$ 把像素级首帧图片 $I_{\text{first}}$ 编码为潜变量 $z_0$,大幅降低计算量。
    z0=E(Ifirst)z_0 = \mathcal{E}(I_{\text{first}})
  2. 循环去噪$z_{t+1} = \text{Denoise}(z_t, z_0, c_{\text{text}})$ 表示每一步去噪都参考上一帧 $z_t$、首帧锚点 $z_0$ 与文本条件。
    zt+1=Denoise(zt,z0,ctext)z_{t+1} = \text{Denoise}(z_t, z_0, c_{\text{text}})
  3. 锚点作用$z_0$ 参与每一步,确保画面不偏离首帧构图与配色。
    Anchor: z0 guides all timesteps\text{Anchor: } z_0 \text{ guides all timesteps}

姿态条件控制

姿态条件控制,是把人物的骨骼动作“告诉”生成模型。想象你在拍武打戏:你不需要一张张描述“左手抬到肩高、右腿前踢”,只需提供一段骨架序列,模型就能照着动作把画面画出来。实现这一目标,通常分三步:姿态估计、条件编码、ControlNet 注入。

第一步,用姿态估计模型(如 OpenPose、MediaPipe)从参考视频或图片中提取骨架关键点,得到一组坐标序列。第二步,把这些关键点编码成条件特征图。第三步,最关键的来了——ControlNet。ControlNet 会复制一份基础模型的可训练副本,把姿态特征注入其中,再与原始模型的特征相加。这样既不影响预训练模型已学会的“画质与语义”,又能精确控制生成内容的空间结构。

Sora、可灵、Pika 在姿态控制上各有侧重:可灵支持首尾帧与运动笔刷;Pika 支持局部编辑;Sora 对长视频中的动作一致性有较强约束。但共同点是,姿态条件管的是“人在哪、动作为何”,而纹理细节还需要文本或图像条件配合。

动作卡给到位后,模型就能“照着骨骼画皮肉”。但姿态越复杂,手指、衣摆等细节越容易崩。这时就需要工程调优来兜底。

ControlNet:y=F(x;θ)+Z(F(x+C(p);θcopy))\text{ControlNet:}\quad y = \mathcal{F}(x; \theta) + \mathcal{Z}\big(\mathcal{F}(x + \mathcal{C}(p); \theta_{\text{copy}})\big)
ControlNet 像一个“动作教练”:它不改变原有摄制组的核心能力,只是在旁边实时提示“手该抬多高、脚该迈多远”。
  1. 基础输出$\mathcal{F}(x; \theta)$ 是冻结的预训练 U-Net 在输入 $x$ 上的输出,保证原有画质不退化。
    F(x;θ)\mathcal{F}(x; \theta)
  2. 条件特征$\mathcal{C}(p)$ 把姿态骨架 $p$ 处理成与 $x$ 同尺寸的特征图,并加到输入上。
    x+C(p)x + \mathcal{C}(p)
  3. 可训练副本$\mathcal{F}(x+\mathcal{C}(p); \theta_{\text{copy}})$ 用一份可训练的模型副本处理带姿态条件的输入。
    F(x+C(p);θcopy)\mathcal{F}(x + \mathcal{C}(p); \theta_{\text{copy}})
  4. 零卷积合并$\mathcal{Z}(\cdot)$ 是零卷积层,把副本输出加权合并回主分支,实现“条件引导而不破坏原模型”。
    y=F(x;θ)+Z(⋅)y = \mathcal{F}(x;\theta) + \mathcal{Z}(\cdot)

工程实现调优

摄制组就位后,导演还要管预算与工期——工程实现就是解决“怎么让条件视频生成在真实产品中跑得动、跑得快、跑得省”。首先是数据与训练策略。视频生成模型需要大量“文本-视频”“图像-视频”“姿态-视频”配对数据。训练常采用两阶段:先在大规模视频上预训练基础生成能力,再冻结部分参数,用条件数据微调特定条件分支。条件分支通常用低秩适配(LoRA)实现,只训练少量参数,避免灾难性遗忘。

推理管线方面,视频生成最耗资源的是“逐步去噪 + 大模型前向”。优化手段包括:用FlashAttention 加速注意力计算、用VAE 分块解码降低峰值显存、用步数蒸馏把 50 步采样压缩到 8 步左右。轻量化方面,Sora 这类大模型在端侧跑不动,通常的做法是量化(如 FP16/INT8)+ 模型裁剪 + 蒸馏小模型。

部署时,面对大量用户同时生成视频,常规方案是异步任务队列 + GPU 弹性伸缩,配合结果缓存与抽帧审核。可灵、Pika 在实际部署中普遍采用“文生图定首帧 → 图生视频出成片”的两级流水线,把任务拆小,让每块 GPU 都能高效运转。

工程调优的目标,就是让导演在有限预算内拍出足够好的片子:钱要花在刀刃上,算力要花在关键帧上。

Cost≈采样步数×模型参数量×视频token数单卡算力×优化倍率\text{Cost} \approx \frac{\text{采样步数} \times \text{模型参数量} \times \text{视频token数}}{\text{单卡算力} \times \text{优化倍率}}
成本公式解释了为什么“少步数、小模型、短时长”是工程优化的硬道理。
  1. 采样步数分子第一项是扩散模型去噪的迭代步数,步数越少越快。
    采样步数=Nsteps\text{采样步数} = N_{\text{steps}}
  2. 模型规模模型参数量乘以视频 token 数,表示单帧前向计算量。
    模型参数量×视频token数\text{模型参数量} \times \text{视频token数}
  3. 优化倍率分母中的优化倍率是 FlashAttention、蒸馏、量化等带来的加速倍数,倍率越高成本越低。
    优化倍率=原始耗时优化后耗时\text{优化倍率} = \frac{\text{原始耗时}}{\text{优化后耗时}}

验收与部署

片子拍完,导演要审片。视频生成条件的验收,需要“客观指标 + 主观流程”双轨并行。客观指标中,FVD(Fréchet Video Distance)衡量生成视频与真实视频的分布距离,越低越好;CLIP Score 衡量文本与画面的语义一致性,越高越好;LPIPS 常用于评估帧间感知差异,帮助捕捉闪烁和跳变。主观验收则依赖人工打分:看动作是否连贯、风格是否统一、语义是否匹配。

在需求与方案选型上,如果你要“一句话生成大片”,选文本条件强的 Sora;如果你要“首帧编辑出短片”,选可灵、Pika;如果你要“让数字人复刻特定动作”,姿态条件是必选项。实际项目往往是多条件混合——文本定剧情、图像定风格、姿态定动作,三路合一。

未来演进方向包括:多条件组合控制(文本+姿态+音效同步)、实时交互生成(边生成边改提示)、以及可控性增强(让模型精确理解“第 3 秒开始下雨”这样的时序指令)。从部署角度看,模型蒸馏与端侧推理会让条件生成逐步下沉到手机与直播场景。

验收的价值在于形成闭环:指标告诉导演“哪里穿帮”,主观评审告诉导演“观众是否买账”,二者共同驱动模型迭代。当你既能拍、又能审、还能改时,一套完整的视频生成条件控制方案才算真正落地。

---

FVD=∥μr−μg∥2+Tr⁡(Cr+Cg−2(CrCg)1/2)\text{FVD} = \left\| \mu_r - \mu_g \right\|^2 + \operatorname{Tr}\left( C_r + C_g - 2 (C_r C_g)^{1/2} \right)
FVD 像“两批视频截图之间的距离尺”:生成视频与真实视频在特征空间里越近,FVD 越小,质量越高。
  1. 分布均值$\mu_r$ 与 $\mu_g$ 分别是真实视频与生成视频的特征均值。
    μr−μg\mu_r - \mu_g
  2. 协方差$C_r$ 与 $C_g$ 是两组视频特征的协方差矩阵,刻画内部变化模式。
    Cr+CgC_r + C_g
  3. 耦合项$2(C_r C_g)^{1/2}$ 衡量两组分布的重叠程度,分布越相似,这一项越接近 $C_r + C_g$。
    Tr⁡(Cr+Cg−2(CrCg)1/2)\operatorname{Tr}\left( C_r + C_g - 2 (C_r C_g)^{1/2} \right)

AI 应用场景

数字人电商直播

阶段:模型推理与部署

解决的问题:过去数字人直播需要逐帧动画师手工调整动作,成本高、响应慢。利用姿态条件控制,只需输入真人主播的动作骨架序列,数字人就能实时复刻动作;文本条件则驱动话术内容,实现“画面与口播同步”。

具体案例:某电商平台搭建 24 小时数字人直播间,真人主播录制 30 分钟动作样本,提取骨架序列后,用 ControlNet 注入姿态条件;同时接入商品文案的文本条件,系统自动生成对应讲解视频。上新时只需改文案,无需重新录制。

影视预演与分镜验证

阶段:条件编码与内容生成

解决的问题:导演在实拍前想快速验证“镜头运动 + 角色走位”是否合理。传统做法是拍真人粗剪或做 3D 预演,耗时数天。用姿态条件控制,可把粗略的骨架动画直接转化成写实视频预览。

具体案例:广告剧组用 Pika 的图生视频接口,上传场景概念图(图像条件)并绘制角色路径(姿态条件),输入一句“主角从画面左侧走入镜头,转身看向镜头”,几分钟内得到多版本分镜预览,加速提案决策。

在线教育课程视频自动生成

阶段:多条件融合与工程调优

解决的问题:课程视频制作需要“讲师形象 + 课件画面 + 动作讲解”,传统拍摄成本高。通过图像条件锁定讲师形象,姿态条件驱动讲解手势,文本条件生成口播台词,即可低成本批量化生产课程。

具体案例:一家职业教育公司用可灵 API 构建课程视频流水线:讲师照片定形象,课件截图控制画面内容,讲义文本生成逐句字幕与配音。一次上线 200 门课程,生产周期从 3 个月缩至 1 周。

Python 演示

python91 行
# -*- coding: utf-8 -*-"""视频生成条件控制模拟器:演示文本/图像/姿态三种条件如何影响生成结果"""import numpy as np class BaseGenerator:    """基座:模拟扩散模型的去噪过程"""    def __init__(self, frames=8, tokens=64):        self.frames = frames        self.tokens = tokens        self.noise_scale = 0.5     def denoise(self, z_t, cond, step):        """模拟单步去噪:条件越强,噪声衰减越快"""        return z_t * (1 - cond * 0.1) + self.noise_scale / (step + 1)     def generate(self, condition_vec, steps=20):        z = np.random.randn(self.frames, self.tokens)        for s in range(steps):            z = self.denoise(z, condition_vec, s)        return np.clip(z, 0, 1)  class TextVideoGenerator(BaseGenerator):    """文本条件生成器:提示词编码后作为条件"""    def encode_text(self, prompt):        """把提示词长度映射成条件强度"""        return min(1.0, len(prompt) / 40.0)     def add_condition(self, prompt):        vec = self.encode_text(prompt)        print("文本条件注入:提示词有效长度 =", len(prompt), "条件强度 =", vec)        return vec  class ImageVideoGenerator(BaseGenerator):    """图像条件生成器:首帧特征作为锚点"""    def __init__(self, frames=8, tokens=64):        super().__init__(frames, tokens)        self.first_frame = None     def add_condition(self, first_frame_feat):        self.first_frame = first_frame_feat        print("图像条件注入:首帧特征均值 =", round(float(np.mean(first_frame_feat)), 4))        return 0.85     def generate(self, condition_vec, steps=20):        z = np.random.randn(self.frames, self.tokens) + self.first_frame * 0.3        for s in range(steps):            z = self.denoise(z, condition_vec, s)        return np.clip(z, 0, 1)  class PoseVideoGenerator(BaseGenerator):    """姿态条件生成器:骨架关键点驱动动作"""    landmarks = 17     def __init__(self, frames=8, tokens=64):        super().__init__(frames, tokens)        self.pose_list = []     def add_condition(self, skeleton_seq):        self.pose_list = skeleton_seq        energy = float(np.mean([np.std(frame) for frame in skeleton_seq]))        print("姿态条件注入:骨架序列动作能量 =", round(energy, 4))        return min(1.0, energy * 2.0)  def main():    print("=== 方案一:文本条件 ===")    tg = TextVideoGenerator()    c1 = tg.add_condition("一只金色龙在云端盘旋")    v1 = tg.generate(c1)    print("生成视频张量形状:", v1.shape)     print("\n=== 方案二:图像条件 ===")    ig = ImageVideoGenerator()    first_feat = np.random.rand(1, 64) * 0.5 + 0.3    c2 = ig.add_condition(first_feat)    v2 = ig.generate(c2)    print("生成视频张量形状:", v2.shape)     print("\n=== 方案三:姿态条件 ===")    pg = PoseVideoGenerator()    skel = [np.sin(np.linspace(0, i, 17)) for i in range(1, 9)]    c3 = pg.add_condition(skel)    v3 = pg.generate(c3)    print("生成视频张量形状:", v3.shape)  if __name__ == "__main__":    main()
目的:用极简概率模型模拟三种条件控制的注入逻辑,展示文本、图像、姿态条件在生成过程中的参与方式与效果差异。
  1. class BaseGenerator定义基座生成器,模拟扩散模型“逐步去噪”的行为
  2. self.noise_scale = 0.5噪声基准,控制画面初始随机程度
  3. def denoise(self, z_t, cond, step)条件越强,每步保留的有效信息越多
  4. z = np.random.randn(self.frames, self.tokens)初始化随机噪声视频潜变量
  5. def encode_text(self, prompt)用提示词长度近似模拟文本编码后的条件强度
  6. self.first_frame = first_frame_feat保存首帧特征作为后续生成的锚点
  7. z + self.first_frame * 0.3首帧特征参与初始化,画面从锚点附近开始演化
  8. energy = float(np.mean([np.std(frame) for frame in skeleton_seq]))用骨架序列的方差衡量动作剧烈程度
  9. min(1.0, energy * 2.0)动作越剧烈,姿态条件权重越高

常见误区

误区我以为视频生成的条件控制就是“写提示词”,生成画面的质量只取决于提示词写得多详细。

正解文本只是三种主流条件之一。图像条件负责定锚点、控画风,姿态条件负责管动作、控结构。实际项目中,三者就像导演的剧本、样图和动作卡,各管一段。只用文本,相当于只给摄制组念了段旁白,画面细节和动作仍然不可控。

为何常见:市面上 Sora 等产品的宣传以文生视频为主,导致用户把“条件控制”直接等同于“提示词工程”。

误区我以为把文本、图像直接拼到输入张量后面,模型就能理解条件。

正解条件必须经过对应的编码器(CLIP、VAE、姿态编码器)转换成语义向量或特征图,再通过交叉注意力、ControlNet 等专用模块注入。就像是导演不能把剧本手稿直接扔给摄影机,而要由“场记”翻译成灯光、走位、镜头指令。

为何常见:从 CV 分类任务迁移而来的思维定式,忽略了生成模型是“条件分布建模”而非“判别分类”。

误区我把 CFG 的权重调到最大,把姿态条件拼命加强,总觉得条件越强就越听话。

正解条件权重过大会导致画面失真、色彩过饱和、动作僵硬。CFG 的 w 一般取 3~8 之间,姿态条件过强会让模型失去纹理细节。就像导演不停在演员耳边喊“再用力一点”,最后表演反而用力过猛。

为何常见:直觉上“更强的约束 = 更好的结果”,忽略了生成模型需要平衡“条件遵循度”与“自然多样性”。

误区我以为给模型姿态骨架序列,生成的视频里会直接出现火柴人或骨架线条。

正解骨架只是“控制信号”,不会出现在最终画面里。ControlNet 把骨架当作空间引导,只影响“人应该出现在哪、动作怎么摆”,而外观完全由文本与图像条件决定。就像动作教练在片场比划动作,但镜头里只有演员本人。

为何常见:把“输入给模型的中间表示”误认为是“模型要输出的内容”,混淆了条件与结果。

误区我以为只要首帧条件给得好,生成出来的视频自然就时序连贯,不用额外处理。

正解首帧条件只能保证“起点稳定”,而帧与帧之间的运动连贯性依赖时序注意力、运动模块以及潜空间的光流约束。Sora 的大规模 DiT 架构正是为了建模时空依赖关系;如果模型没有好的时序建模,条件再强也会出现闪烁跳变。

为何常见:低估了视频生成的时序复杂度,把问题简单化为“多张图片拼接”。

面试题

Q1. 以下哪一项不属于视频生成三大条件控制方式?

单选题 · easy

  • A.文本条件控制
  • B.图像条件控制
  • C.姿态条件控制
  • D.音频频谱控制← 正确答案

答案:D。三大条件控制是文本、图像、姿态,对应导演的剧本、样图、动作卡。音频频谱控制属于音频条件,不是视频生成三大主流条件之一。

Q2. 文本条件中,CLIP 编码器的主要作用是什么?

单选题 · easy

  • A.把图像压缩为低维潜变量
  • B.把文本映射为语义向量← 正确答案
  • C.提取人体骨骼关键点
  • D.加速视频采样

答案:B。CLIP 编码器把提示词转换为语义向量,供交叉注意力使用。VAE 编码器才负责压缩图像,姿态估计负责骨架关键点,蒸馏用于加速采样,分别对应其他三个选项。

Q3. CFG 引导公式中,权重 w 的取值偏大时,会导致什么现象?

单选题 · mid

  • A.画面多样性增强
  • B.生成结果更加可控但可能失真← 正确答案
  • C.视频生成速度变快
  • D.文本语义完全失效

答案:B。w 是“导演音量旋钮”,越大越听剧本,但过大会让画面过饱和、动作僵硬,多样性下降而非增强。它不影响采样速度,也不会让语义失效。

Q4. 姿态条件控制中,ControlNet 的设计核心是什么?

单选题 · mid

  • A.替换原始 U-Net 的全部参数
  • B.复制一份可训练模型注入条件再合并← 正确答案
  • C.直接用文本编码器处理骨架
  • D.放弃预训练模型能力

答案:B。ControlNet 复制基础模型的可训练副本,处理带姿态条件的输入后再通过零卷积合并回主分支。它不替换或放弃预训练能力,也不依赖文本编码器处理骨架。

Q5. 关于图像条件控制,以下哪个说法正确?

单选题 · mid

  • A.首帧图像会被直接送入 U-Net 参与每一步去噪
  • B.首帧图像经 VAE 编码后作为潜空间锚点← 正确答案
  • C.图像条件与文本条件不能同时使用
  • D.图像条件能完全取代姿态控制

答案:B。首帧图像先由 VAE 编码器压缩为潜变量 $z_0$,再作为锚点参与后续去噪。图像不能直接送 U-Net,也与文本条件可叠加使用,且不能表达动作信息,无法取代姿态控制。

Q6. 下列哪项不是视频生成工程调优的常见手段?

单选题 · hard

  • A.用 FlashAttention 加速注意力计算
  • B.用步数蒸馏减少采样步数
  • C.用更大 batch 强制提升单卡显存上限← 正确答案
  • D.用 VAE 分块解码降低峰值显存

答案:C。FlashAttention、步数蒸馏、VAE 分块解码都是主流优化手段。增大 batch 只会增加显存压力而非优化,不能突破单卡显存上限,因此不属于调优手段。

Q7. FVD 指标的核心思想是什么?

单选题 · hard

  • A.比较生成视频与真实视频在特征空间中的分布距离← 正确答案
  • B.计算生成视频的像素均值
  • C.衡量文本与画面的余弦相似度
  • D.统计视频文件压缩率

答案:A。FVD 先用预训练网络抽取特征,再计算真实视频与生成视频特征分布间的 Fréchet 距离。像素均值和余弦相似度是其他指标,压缩率与质量评估无关。

Q8. 以下哪些是文本条件控制的关键技术?()

多选题 · mid

  • A.分词器与文本编码器← 正确答案
  • B.交叉注意力机制← 正确答案
  • C.CFG 无分类器引导← 正确答案
  • D.姿态骨架提取

答案:ABC。文本条件控制涉及 token 化、CLIP 文本编码、交叉注意力注入和 CFG 引导增强。姿态骨架提取属于姿态条件控制,不属于文本条件范式。

Q9. 关于姿态条件控制,下列说法正确的有哪些?()

多选题 · mid

  • A.姿态骨架序列仅作为控制信号,不出现在最终画面← 正确答案
  • B.姿态条件可以表达特定动作但难以约束空间结构
  • C.ControlNet 使用冻结主模型加可训练副本注入条件← 正确答案
  • D.姿态条件能完全替代文本与图像条件

答案:AC。姿态骨架只是控制信号不会画进视频,ControlNet 正是“冻结主模型+可训练副本”的结构。姿态条件擅长约束空间结构,但无法代替文本定剧情和图像定风格。

Q10. 多条件混合生成时,文本、图像、姿态各自的典型分工是什么?()

多选题 · hard

  • A.文本负责剧情与语义描述← 正确答案
  • B.图像负责定画面风格与构图← 正确答案
  • C.姿态负责控制人物动作与空间关系← 正确答案
  • D.姿态负责压缩视频文件

答案:ABC。三种条件各司其职:文本写剧情、图像定基调、姿态管动作。姿态条件属于生成控制,与视频文件压缩无关。混合使用能获得最强可控性。