最近我在做一个AI短片项目,遇到一个特别崩溃的事——同一个角色,换个镜头角度,脸就变了。棕色短发变成了深褐色卷发,衣服上的细节也对不上。我相信很多用AI做视频的朋友都有这个痛苦。今天请来的嘉宾正好最近在研究一套解决这个问题的工作流,基于Google Veo 3.1的,据说效果相当不错。
对,这个问题其实不是你运气差,是扩散模型的底层机制决定的。你想啊,这些模型每次生成画面,本质上都是从随机噪声里一步步去噪,每次都是独立的随机过程。它没有一个持久的角色记忆,不像人类画师会记住说这个角色鼻子长什么样、眼睛间距多大。模型只能靠你给的文字描述和参考图去猜,而文字天然就是模糊的——你说棕色短发,那可以对应一万种具体造型。
所以本质上是模型没有记忆,每次都在重新猜。
没错,就是这样。所以这套工作流的核心思路其实很朴素——既然模型自己记不住,那我们就人为给它搭一个外部记忆系统。通过每个环节都提供充分的视觉参考,把角色一致性从碰运气变成一个可控的流程。
嗯,那具体用到哪些工具呢?
工具组合很简洁,就两个:Google Veo 3.1负责视频生成,Nano Banana Pro负责图片生成。它们都集成在Google Flow这个平台里,所有操作在一个界面完成,不用在不同工具之间导来导去。Veo 3.1是DeepMind最新的视频生成模型,在时间一致性和物理运动合理性上比前代有明显提升。整个流程分五步走,每一步都有明确的输入输出,像一条生产流水线。
好,那我们就一步步来拆。第一步是什么?
第一步是创建角色参考图,这里有一个关键改进——一定要用纯色背景。听起来特别简单对吧?但这个细节太重要了。你想,如果角色站在一个复杂的场景里,比如一个红色调的酒吧,AI模型的注意力机制很可能把背景的红色调错误地编码成角色属性的一部分。技术上叫特征纠缠,就是模型分不清哪些视觉特征属于角色、哪些属于背景。
哦,这就像你拍证件照要白底一样,把人和背景干净地分开。
这个类比特别好!就是这个道理。纯色背景让模型能干干净净地认识你的角色——服装细节、面部特征、体型比例,全都不会被环境干扰。不管你的角色是超级英雄还是宇航员,这条原则都适用。
好,角色建好了,第二步呢?
第二步是整个流程的灵魂——生成角色联系表,英文叫Contact Sheet。简单说就是用主参考图配合专门的提示词,生成一张展示角色正面、侧面、背面、四分之三角度等多个视角的综合图。这个概念其实来自传统胶片摄影,摄影师把整卷底片印在一张相纸上做总览。在动画和游戏行业里,这演变成了角色设定表或角色转面图。我们在AI工作流里借用这个概念,本质上是把人类创作流程中的角色设定环节数字化了。
相当于给AI一份角色的全方位档案。
对,而且这里有个非常关键的点:后续所有步骤,你都要同时使用主参考图和联系表这两张图。少了任何一张,一致性都会明显下降。这种双重参考机制是整个工作流的核心保障。
明白了。那第三步呢?我看到说是生成一个九格网格?
对,第三步是场景网格生成。你准备好主参考图、联系表,再加上场景描述——包括情绪、光线方向这些信息,然后让AI一次性生成一个三乘三的九格网格,就是同一场景的九个不同镜头角度。很多人会问,为什么不直接生成单张图片呢?
对啊,为什么要搞这么复杂?
这跟扩散模型的注意力机制有关。当模型在同一张画布上同时生成九个画面时,这九个区域在去噪过程中会共享同一个潜在空间的上下文信息。通俗点说,模型在画第五格的光影时,能看到其他八格是怎么处理的,就会自然地保持风格统一。但如果你单独生成九张图,每次都是独立的随机过程,即使提示词完全一样,色调、光线方向都可能不一致。其实Midjourney默认的四格输出也是基于类似原理。
嗯,这就像一个画家同时在一张纸上画九个小格子,自然会保持手感一致。但如果分九天画九张,风格肯定会有偏差。
完全正确。而且网格还有两个额外好处:一是选择多,一个网格就能挑出好几个可用镜头;二是效率高,一次出九个候选,比逐张生成快多了。还有个效率技巧,生成完一张网格后,在Google Flow里点Reuse Text Prompt,只改场景描述,就能快速批量生成不同场景的网格。
好,网格有了,第四步是从里面提取单帧?
对,但注意,这里不是简单地用Photoshop裁剪。直接裁剪的话分辨率会下降,因为九格网格里每个小格子的像素量只有整张图的九分之一。正确的做法是用专门的提取提示词,输入面板编号,附上网格图片,让AI重新生成一张全分辨率的单帧。这本质上是一次有条件的图像生成,模型以网格中的特定区域为主要视觉条件来输出独立画面。
等等,如果是重新生成的话,那角色不会又变样吗?
好问题!所以这里有个关键细节——如果画面中有角色,提取时一定要把场景网格和主参考图一并附上。这种组合能约束AI在提取帧中保持角色一致性。结果不是每次都完美,但大多数情况下效果够用。
好,最后一步应该就是让画面动起来了吧?
对,第五步是动画生成。把全分辨率镜头上传到Google Flow,写运动提示词描述相机和角色怎么动。这里有个特别多人踩的坑——到底用Ingredients to Video还是Frames to Video。
这两个有什么区别?
区别很大。Ingredients模式把你的图片当作通用视觉参考,像一个灵感板,AI从中提取角色外观、场景氛围这些高层信息,然后自由发挥。而Frames模式会把图片理解为视频的起始帧或结束帧,约束非常强,用的是关键帧插值的思路。因为我们的图片并不是视频的真实首帧,用Frames模式反而会产生不自然的扭曲和跳变。所以答案是——绑多数情况下用Ingredients模式。
嗯,这个区别确实容易搞混。
还有个省钱的建议:一次只生成一个片段。视频生成对算力的消耗远超图像生成,一段几秒的视频可能要生成上百帧,各平台都是按次或按时长收费的。如果你一次生成四个片段然后全丢掉,那就是四倍的浪费。在实际项目中,一个几分钟的AI短片可能需要几百次尝试,积分费用从几十到几百美元不等,所以减少无效生成是必备技能。
这么一梳理,整个流程其实逻辑很清晰:纯色背景建角色、联系表固化特征、九格网格保证镜头一致、全分辨率提取、最后用Ingredients模式生成动画。本质上就是在每个环节都给模型提供足够的视觉参考,弥补它没有持久记忆的缺陷。
对,你总结得很到位。这套工作流的核心价值就是系统化。AI生成肯定还是有不确定性,不可能每次完美。但有了这个框架,你至少知道哪个环节出了问题、怎么调整,而不是面对一堆不一致的素材干瞪眼。把流程跑通一遍你就会发现,角色一致性这件事,真没想象中那么难。