专业书籍精读 · Generative AI System Design Interview · 第 9 章

文生图:难的不是画得好看,是让那句话真的管用

Generative AI System Design Interview · Ch 9 · Ali Aminian, Hao Sheng & Alex Xu · 2024

EN →

这一章讲什么?

你在手机上打一句「一只戴着宇航头盔的柴犬,水彩风」,几秒后出来一张图——这一章讲的就是这条链路。但它的重点不是「怎么把图画得好看」,上一章已经把那件事解决了。这一章从头到尾只追一个问题:怎么让那句话真的管住那张图。

先说个怪事

一个只会画好看图的模型,和一个听话的模型,是两回事。你说「戴头盔」,它给你一只特别漂亮、但没戴头盔的柴犬——这种失败最麻烦的地方在于:它不报错、不留白,就是安安静静地漏掉了一半要求。而且自动打分工具还会给它高分,因为那张图确实很像真照片。

它是怎么「听」的

关键在于:那句话不是在开头交代一次就完了。模型画图是一遍遍擦、一遍遍改的过程,它每改一次、每改到画面的哪一小块,都会回头把那句话再读一遍——就像一个边做菜边反复看订单的厨子,处理到狗头那一片时去问「头上有什么要求吗」,处理到背景时去问「什么风格来着」。所以「头盔」这个词只会落到该落的地方,而不是糊满整张画布。

核心的招:让它画两遍

光这样还不够听话。真正管用的那一招有点反常识:同一步里让模型画两遍——一遍读着你的要求画,一遍完全不看要求随便画。两张的差别,就是「你这句话到底把画面往哪个方向拽」。然后系统不满足于这点差别,而是顺着这个方向再多推几步。想让它更听话,就把这个「多推几步」的倍数调大。

这个倍数是能实时拧的旋钮,也是整条链路上最值钱的一个设计:不用重训模型,就能在「乖」和「野」之间滑动。

该怎么拧

拧小了,图好看但自由发挥,你说的细节它当耳旁风;拧大了,它字字照办,但画面开始发僵、颜色发艳、构图千篇一律——老实到没灵气。大多数产品把它落在偏中间,让用户自己在滑杆上微调。

另外还有个便宜的副产品:既然有一遍是「不看要求」的,那就干脆让那一遍去看一句你不想要的东西(「模糊、多余的手指、水印」),于是那根推力就变成了「远离这些」。这就是很多绘图工具里的「反向提示词」,它不是玄学,就是同一招的背面。

代价也很直白:一步画两遍,算力和电费直接翻倍。

一句话记住

文生图真正的工程难题不是画质,是服从:靠「每画一笔都回头再读一遍那句话」把要求落到正确的位置,再靠「画两遍、朝差别的方向多推几步」把服从度放大成一个能实时拧的旋钮——拧得越紧越听话,但也越僵,而且成本翻倍。

想进到具体机制、记号和示意图? → 切到精读版