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

高分辨率图像合成:难的不是画得更细,是别在原尺寸上画

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

EN →

这一章讲什么?

你在手机上敲一句「雪山下的小木屋,黄昏」,几秒后出来一张能当壁纸的图——这一章讲的就是这类系统背后那套东西。它要回答一个很具体的工程问题:怎么让机器画出一张又大又清楚的图,同时别把算力烧光。

先说个怪事

教机器画画最管用的办法,居然是先教它怎么把画毁掉。拿一张真照片,一点点往上撒雪花点,撒上一千次,最后变成纯雪花屏。这个「毁掉」的过程简单到不用学,照着固定配方撒就行。然后训练一个网络只干一件事:看着一张带雪花的图,指出哪些是雪花。指出来减掉,图就干净一点点。

倒着来,为什么反而行

因为它把一件难事拆成了一千件容易事。让机器「一口气从空白画出一整张脸」太难了——上一章那套让两个网络互相较劲的老办法,经常练着练着就崩。但让它「把一张有点糊的图擦干净一点点」,这件事容易得多,而且练习材料要多少有多少:随便找张照片,自己撒一把雪花,标准答案就是你刚撒的那把,根本不用请人来标。

画画的过程于是变成:从一屏纯雪花出发,让网络擦一下、擦一下、再擦一下……几十下之后,一张图就从雪花里「显影」出来了。

真正的难关:换张小草稿纸

问题来了:一张 512×512 的图有几十万个点,擦一下就要把这几十万个点全过一遍网络,要擦几十上百下。放在原尺寸上折腾,显卡直接跪。

这一章的关键招数是换张草稿纸:先另外训练一对「压缩员 / 还原员」——压缩员把照片压成一张巴掌大的小图(只有原来约五十分之一的信息量),还原员负责把小图放回原尺寸。然后那几十下擦拭全都在小草稿上做,做完再让还原员放大一次。算一次的开销就此掉了一个量级,这才让「家用显卡也能出图」成为可能。

代价也很实在:压缩是有损的,最细的笔画会被抹掉——所以这类图里的小字、手指、密集格栅特别容易画坏。

擦几下,是可以调的

擦得多,细节稳、耗时长;擦得少,出图快、偶尔构图翻车。所以做产品时这是一个明码标价的旋钮:预览图少擦几下求快,最终稿多擦几下求稳。这比「换个更大的模型」要好用得多——它不用重训,线上随时能调。

一句话记住

把「画一张图」倒过来做成「一步步擦掉雪花」,一件难事就变成了一千件容易事;再把这些擦拭全搬到一张小草稿纸上完成,算力才降得下来。擦几下,是你能随时调的那个旋钮。

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