拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Agentic Optimization:解决图生视频遵循度与主体漂移难题

做图像到视频生成时最让人头疼的往往不是画面不够精致而是“跑题”起始图里那张人脸几秒之后就变成另一个人原本笔直的杯子在运动中慢慢扭曲提示词明明要求镜头缓慢推进画面里的主体却自己消失了。这类问题在业内叫 Image-to-Video Adherence也就是生成视频对输入图像的遵循程度。为了把它调好很多人第一反应是反复改提示词、换种子、调采样参数靠一轮轮人工试错解决。而这次要聊的是一个更结构化的思路Agentic Optimization用智能体在生成闭环里承担评测、归因和策略调整把人工试错变成可打分、可复现、可收敛的优化过程。这篇文章适合两类人一类是正在用图生视频模型做短剧分镜、广告素材、产品演示或个人创作被“主体漂移”“身份保持不住”折磨过的人另一类是已经接触过提示词工程和评估指标想进一步把“调 Prompt”这件事自动化、系统化的同学。下面会先拆开 Adherence 的难点再说 Trial-and-Error 为什么靠不住然后给出一套 Agentic Optimization 的闭环设计最后落到批量落地时要怎么接、怎么测、怎么避坑。1. 先搞懂 Image-to-Video 的 Adherence 到底在解决什么1.1 从“像”到“稳”为什么视频生成比单帧生成更容易跑偏单张图像生成只需要一张图的静态一致性。模型把参考图里的主体特征保留住输出一张相似图任务基本就完成了。但视频生成多了一个维度时间连续性。每一帧都像输入图不等于整段视频像输入图因为帧与帧之间还有运动、遮挡、光照变化和形变。实际测试时最常见的现象是第一帧看起来非常接近参考图到第十帧人脸角度转了一下特征开始模糊第二十帧之后人物衣着、五官、发际线已经明显偏离。这就是为什么图生视频的 Adherence 不能只看首帧和末帧要看整段时间线上的一致性。还有一个容易被忽略的点视频模型有“先验运动倾向”。有些模型默认动作幅度大有些模型默认带镜头抖动。同一个参考图放到不同模型里Adherence 表现可能差异非常大。如果你只在一个模型上测试过别急着下结论说“某个方法没用”很可能是模型本身的运动先验和你的提示词发生了冲突。1.2 最常见的“不遵循”表现主体漂移、身份丢失、结构形变我一般会把 Adherence 失败分成三类方便后续定位问题主体漂移参考图里的人在左侧画面生成几秒后人物位置发生不该有的移动或者镜头外主体重新入场后已经不是同一个物体。身份丢失人脸五官、发型、肤色、服装细节慢慢变化。这个在人物镜头里最明显也最容易被观众察觉。结构形变物体几何关系不稳定。比如建筑物边缘会抖动、桌腿弯曲、车身线条断裂。参考图里的比例关系没有保持住。除此之外还有一种“风格脱离”参考图是水墨风生成视频逐渐变成写实风或者色调在中间帧突变。这种情况不一定算严格意义上的 Adherence 失败但放在统一评测体系里也属于需要追踪的维度。做优化之前先明确你当前失败属于哪一类。不要一上来就改 Prompt更不要同时调五个参数。否则你可能调好了身份保持却把运动幅度压没了最后视频变成一张会呼吸的静态图。2. 为什么 Trial-and-Error 撑不起批量出片和可控生成2.1 人工试错的问题不在慢而在不可复现人工试错不是完全没用。单条镜头、时间充裕、目标模糊时人工反复生成确实能找到不错的 prompt。但问题是你很难说清“上一次为什么成功”。比如你换了三个 seed改了一个负面描述输出比之前好。到底是哪个改动起作用是 seed 带来的随机性还是新描述真的抑制了主体漂移如果下一次用同一套配置生成别的图效果又变了你根本无法判断这套经验能不能复用。这正是 Trial-and-Error 最大的缺陷结果没有结构化记录判断没有统一标准每一次调试都是独立事件。对于单个创意镜头成本还能接受一旦进入批量出片流程比如一个项目几十个镜头每个镜头都要试十几次时间和费用都会迅速失控。2.2 一张图能跑通换一张图可能全变另一个容易踩的坑是“局部最优迁移失败”。你可能在 A 参考图上找到一组完美 prompt既保持了人脸又让镜头运动自然。但把这个 prompt 换成 B 参考图效果立刻变差。原因在于图生视频模型的生成结果高度依赖输入图的构图、光照、主体比例和背景复杂度。提示词只是描述“想要什么”而输入图决定了“生成时从哪里开始”。不同参考图的特征空间差异很大单一 prompt 很难通吃。所以更合理的做法不是寻找一个万能 prompt而是建立一套“自动适配每个输入图的优化流程”。Agentic Optimization 的核心价值正在于此它不保证给你一个固定公式而是每张图都通过多轮生成、评测、调整逐步逼近更适合这张图的结果。3. Agentic Optimization 的闭环是怎么设计的3.1 核心组件生成器、评测器、优化器、记忆要把“智能体优化”落地至少需要四个组件生成器可靠的图生视频调用入口。无论是本地模型还是在线服务都要有稳定的接口能传入参考图、Prompt、种子和参数返回视频文件或帧序列。评测器负责把“看起来像不像”转成数值。规则指标负责测量可量化的相似度多模态模型负责判断主观观感。优化器也就是 Agent 本体。它接收评测器的分数、上一轮 Prompt、参考图的关键描述然后生成下一轮修改建议。记忆保存每一轮的 Prompt、参数、视频路径、分数和 Agent 建议。没有记忆Agent 就只是在随机试探谈不上优化。这四个组件缺一个闭环都不完整。尤其是记忆很多人做自动化时容易忽略结果重复生成相同趋势的失败结果浪费大量算力。3.2 从人工反馈到结构化 Rubric想让 Agent 理解“哪里不行”不能只让它看一个总分。总分只能说明质量高低不能说明问题原因。更可行的方式是先定义 Rubric也就是评分维度。以人物镜头为例比较常用的维度包括评分维度说明常见判断方式人脸一致性人脸五官是否与参考图一致人脸相似度模型 人工抽查主体结构稳定性是否有形变、断裂、比例失调抽帧对比 视频连续观察场景一致性背景、光照、色调是否保持CLIP 相似度 关键帧比对运动自然度运动是否合理是否僵硬或跳跃光流异常检测 人工评分提示词遵循度是否执行了镜头、动作、风格要求多模态模型打分Rubric 不要一开始就设十个维度。建议先定三个核心维度然后逐步扩。Agent 在每一轮拿到分数后还需要一条关键信息分数不佳的视频片段发生在第几秒到第几秒。否则 Agent 只能泛泛地说“人物不像”无法判断是开头还是结尾出了问题。3.3 一次迭代的完整数据流一次标准的 Agentic Optimization 迭代大概是这样的输入参考图和初始 Prompt生成器产出一段视频。抽帧模块把视频按时间均匀抽成 6 到 8 个关键帧。规则指标计算人脸相似度、CLIP 相似度等数值。多模态模型或人工把关键帧和参考图对比按 Rubric 打分并输出文字描述。Agent 接收分数和描述结合记忆中的历史生成下一轮 Prompt 和参数建议。生成器用新配置再跑一轮。如果分数达到目标或者连续多轮不再提升提前停止。下面是示意代码用于理解流程结构不代表某个真实库# 示意单轮 Agentic Optimization 循环 def agentic_optimize(generator, evaluator, agent, reference_image, prompt, max_rounds6): history [] current_prompt prompt best_result None for round_idx in range(max_rounds): video generator.generate(reference_image, current_prompt) scores evaluator.evaluate(reference_image, video, current_prompt) history.append({ round: round_idx, prompt: current_prompt, scores: scores, video: video }) if evaluator.is_pass(scores): return video, current_prompt, history suggestion agent.suggest(historyhistory, current_promptcurrent_prompt, scoresscores) current_prompt suggestion[revised_prompt] # 也可以让 Agent 返回 seed、motion、cfg 等参数调整建议 # 如果没有达标至少返回历史里总分最高的一版 best_result max(history, keylambda x: x[scores][overall]) return best_result[video], best_result[prompt], history这只是一个框架工程上还要考虑视频文件如何保存、评分失败如何处理、Agent 调用超时怎么办。你不需要一开始就做得很复杂先把数据流跑通再逐步完善。4. 怎么把这套闭环落到自己的生成流程里4.1 先确定评测维度和权重我个人建议第一版不要追求全面先解决你最痛的问题。如果你主要是人物镜头就把人脸一致性权重设为 0.4主体结构稳定性 0.3运动自然度 0.2提示词遵循度 0.1。这个权重不是固定的后续可以调。权重的意义在于让 Agent 知道优先级。如果所有维度都同等重要优化时就会摇摆这轮提高了人脸分下轮又为了运动自然度把人脸描述改了最后陷入来回震荡。4.2 用规则指标打底用 LLM 评估补主观维度规则指标的好处是稳定、便宜、可重复。比如用人脸相似度模型计算人脸 embedding 的余弦相似度用 CLIP 计算关键帧与参考图的语义相似度。这类指标适合作为“硬门槛”低于某个阈值直接判失败不用再去问 LLM。但规则指标有一个明显问题分数高不等于观感好。CLIP 相似度高的时候可能只是整体色调和构图接近人脸其实已经完全变了。所以还需要 LLM 或多模态模型在更高层做判断比如“人物是不是同一个人”“动作是否符合提示词描述”“有没有明显的形变”。实际执行时可以先用规则指标把明显不合格的结果过滤掉再把合格的结果交给 LLM 打分。这样既降低 LLM 的成本又避免规则指标误判。4.3 控制迭代次数、token 成本和早停条件图生视频的生成成本比文生图高很多尤其是高分辨率、长时长。Agentic Optimization 如果无限迭代成本会非常夸张。我建议在一开始就设好三个上限最大迭代轮数单条视频建议最多 6 到 8 轮。连续无进步停轮如果连续两轮各项分数都没有提升就停止。单轮 token 预算Agent 每次调用不要塞入全部历史只给它最近 2 到 3 轮的关键信息避免上下文过长。早停条件也很重要。不要等到分数达到满分才停因为主观维度很难有完美。更实用的做法是总评分达到目标值或连续两轮提升幅度小于设定阈值就停止。注意如果前 3 轮内分数还在持续上升不要急着提前停说明 Agent 的策略可能还有空间如果第 5、6 轮还在小幅波动大概率已经进入平台期继续跑意义不大。4.4 批量场景下的任务归档与回归控制当你要优化多个镜头时建议每次生成都保留一份结构化记录。下面是一个简单的 JSON 记录格式{ task_id: shot_023, reference_image: assets/shot_023.png, round: 4, prompt: close-up, face moving slightly to the right, soft daylight, seed: 1024, params: { motion: 5, cfg: 7.5 }, scores: { face_sim: 0.76, clip_sim: 0.31, motion_naturalness: 82, overall: 78 }, video_path: outputs/shot_023_round_04.mp4, agent_suggestion: keep reference, reduce background detail in prompt }批量任务最怕的问题是回归第 4 轮已经很好你继续优化到第 6 轮结果反而变差。所以流程里必须保留“当前最佳结果”的指针每一轮都跟最佳结果对比。一旦新一轮没有超过历史最佳不更新最佳结果。另外不同镜头之间如果失败模式相似可以把 Agent 总结出的优化策略复用过去。比如多个镜头都是“人脸在侧脸时崩坏”大概率是同一个问题应该在一开始就统一调整 prompt 角度描述和负面词而不是每张图都从零开始试。5. 优化过程中最容易踩的坑和对应的排查顺序5.1 优化到什么程度算达标很多人会问Agent 反馈说分数够了但人工看还是不行怎么办这说明你的评测器没有和“达标线”对齐。建议先做一件事人工标注 5 到 10 个样例。把“明显失败”“一般般”“合格”“优秀”对应的视频和分数整理出来看看分数分布在哪个区间。这个动作叫定 Anchor。没有 Anchor评测器的分数就是空中楼阁。比如某个人脸相似度模型可能在你使用的模型和输入图上普遍只能跑到 0.6 左右。你如果设 0.8 为达标那 Agent 永远无法达成。正确做法是把阈值设到 0.65再用 LLM 评估兜底判断观感是否合格。5.2 为什么指标涨了观感反而变差这是 Agentic Optimization 最常见的失败模式。原因通常有三个评测器被“钻空子”了。比如你用了 CLIP 相似度Agent 修改 prompt 时把所有可能降低 CLIP 分数的描述都删掉了结果画面变得更平均、更平淡虽然分数高但失去了风格。优化头重脚轻。人脸一致性权重太高Agent 倾向于让画面不运动、不转脸生产出安全但无聊的视频。Agent 在生成侧没有约束。有些生成模型具有随机性同一 prompt 不同 seed 结果差异很大Agent 修改 prompt 后分数上升可能只是这次运气好并不是策略有效。遇到这种情况先把评测结果打开看Agent 到底改了哪些词改完之后视频哪些帧的分数变化最大。不要只看总分。如果发现 Agent 专门删掉高风险描述需要在 Rubric 里增加“提示词信息量”“运动幅度下限”一类的约束。5.3 排查顺序输入图、Prompt、参数、评测器、Agent 策略如果 Agentic Optimization 完全无效不要第一时间怀疑 Agent 水平不行。我的排查顺序通常是先看输入图。参考图本身是否清晰主体占比是否合理有没有遮挡、模糊、多重主体。如果输入图质量低任何优化都很难补救。再看 Prompt。初始 Prompt 是否包含与参考图矛盾的信息。比如参考图是室内光Prompt 却写“bright sunlight”Adherence 一定会被拉扯。然后看参数。seed、cfg、motion 等参数是否在合理范围。有些模型 cfg 过高会导致画面死板也会加剧帧间跳变。接着看评测器。评分是否稳定规则指标是否出现明显误判LLM 打分是否前后不一致。最后看 Agent 策略。它是只改 prompt还是会调整 seed、运动强度、负面词它有没有参考历史最佳结果前三步是数据层后两步是系统层。数据层出问题系统层再聪明也没用。注意当画面卡住、输出为空或者生成失败时先看日志和资源占用不要盲目开始下一轮优化。很多问题不是模型能力不足而是路径、权限、输入格式或显存不够。6. 对个人和小团队的建议先做半自动再谈全自动6.1 一个相对轻量的落地路径Agentic Optimization 听起来很诱人但全自动闭环的前置成本不低你要接评测器、接 LLM、写记忆模块、做批量调度。对个人创作者来说可以先从半自动开始第一步用生成器生成 4 到 6 个候选视频。第二步用规则指标先过滤掉明显失败的结果。第三步把剩下的候选抽帧人工或 LLM 打分排序。第四步选出最好的一版记录其 Prompt 和参数。第五步如果结果依然不达预期再让 Agent 基于这个最好版本做下一轮生成。这样每一步都可干预成本也不会失控。很多情况下你不需要让 Agent 自动跑完所有轮次只需要让它替代“人工查错”和“凭感觉改词”这两步效率就已经提升很多。6.2 需要保留哪些日志和记录你不需要一开始就搭数据库但至少要有一个目录结构比如projects/shot_023/ reference.png rounds/ round_01_prompt.txt round_01.mp4 round_01_scores.json round_02_prompt.txt round_02.mp4 round_02_scores.json best.txtbest.txt 里记录当前最佳一轮的 Prompt、参数、分数和视频路径。这样即使 Agent 把后续轮次跑偏你也能一键找回最好的版本。日志的作用不仅是恢复更是复盘。跑了十几个镜头后你会发现某些失败模式反复出现。把这些模式整理成先验规则后续 Agent 优化时一开始就避开省下大量时间和算力。6.3 什么时候必须回到人工判断最后说一个容易被忽视的边界Agentic Optimization 能优化的是 prompt、参数、seed、前处理和后处理。它不太擅长突破模型本身的能力上限。比如某个模型在大幅度转脸时几乎一定会崩脸Agent 无论怎么改 prompt 都很难解决因为这是模型先验和训练数据决定的。这时更有效的做法是换一个更适合的生成模型或者在输入图层面先把转脸幅度限制住或者在生成后做局部修复。另外当你的优化目标本身很主观比如“这个镜头必须有高级感”建议不要让 Agent 独立判断。Agent 可以给出候选方案但最终裁定权应该留给人。尤其商业项目里甲方观感和指标分数不一定一致过早全自动反而会增加返工。我自己更推荐的方式是把 Agentic Optimization 当成一个“能自动轮询、自动评测、自动记录”的助手而不是一个“替你决定好”的导演。它负责把试错成本压低把历史经验沉淀下来把判断节奏加快。至于最终哪些镜头要保人设、哪些镜头可以大胆运动仍然是创作者自己的选择。如果你现在还在手工调 Prompt可以先把评测维度、日志记录和“最佳版本回退”这三件事做起来。等数据积累到一定程度再把 Agent 接进去。你会发现真正让优化提效的不是某一次神奇 Prompt而是一套能持续积累、可复现的决策闭环。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门