一篇文章系統(tǒng)看懂 AI 文生圖原理

1 評(píng)論 2287 瀏覽 12 收藏 20 分鐘

AI文生圖技術(shù)正在改變內(nèi)容創(chuàng)作的邊界,但你真的理解它的底層原理嗎?本文將從系統(tǒng)視角出發(fā),帶你厘清擴(kuò)散模型的生成機(jī)制、關(guān)鍵技術(shù)路徑和演化趨勢(shì),用通俗易懂的方式打開“一句話生成一張圖”背后的黑盒世界。

過去這一年,AI文生圖技術(shù)已經(jīng)火遍全網(wǎng),大家或多或少都體驗(yàn)過,指揮AI肆意創(chuàng)作的魅力。

但市面上關(guān)于文生圖的介紹非常零散,網(wǎng)上雖然有不少科普,但大多局限于工具教學(xué)(比如怎么用Midjourney、Stable Diffusion),或者稍微講講擴(kuò)散模型,但能把整個(gè)文生圖技術(shù)鏈路講清楚的系統(tǒng)化內(nèi)容,相對(duì)較少。

這篇文章就是我作為AI從業(yè)者,把過去自己學(xué)習(xí)、工作中積累的文生圖相關(guān)知識(shí),系統(tǒng)性地整理出來。

我將分享哪些內(nèi)容?

這篇文章不會(huì)深入講文生圖用到的向量、算法細(xì)節(jié),而是圍繞“AI是怎么理解你說的話,并一步步畫出圖”的流程,盡可能用簡(jiǎn)單易懂的文字,一口氣講清楚文生圖的底層邏輯。

我們就一張圖的生成開始說起,這是我用 GPT 4o 生成的一張圖片:

Prompt:Lone Tree at Dawn: a tranquil pre-dawn landscape under a vast indigo sky, featuring a solitary tree standing calmly on the horizon. The sky fades beautifully from deep midnight blue to a warm amber glow, signaling the first light of day. In the distance, gentle silhouettes of wind turbines line the far ridge, barely visible in the dim morning haze. The composition emphasizes negative space, with the tree perfectly framed against the glowing sky. The scene evokes stillness, solitude, and quiet hope. Delicately composed, subtly lit, and cinematic in mood. clear space above the subject, –ar 21:9 –raw –profile po9pk1w

我通過截圖的方式,記錄了它誕生的過程:

按照慣性思維來說,生成圖片的過程應(yīng)該是「從模糊到清晰」,是 AI 在一張模糊的草圖上“逐步完善細(xì)節(jié)”。

但為什么實(shí)際情況是,從開始階段到完成階段,無論是色彩還是構(gòu)圖,都相差甚遠(yuǎn)呢?因?yàn)殚_始階段的圖片,是純粹由噪聲構(gòu)成的。

“噪聲”是什么:圖像中沒有任何結(jié)構(gòu)和意義的隨機(jī)像素點(diǎn),類似于小時(shí)候電視沒信號(hào)時(shí)出現(xiàn)的“雪花屏”,黑白點(diǎn)雜亂跳動(dòng),沒有任何圖像內(nèi)容

換句話說,AI生成圖片,并不是“畫出來的”,而是從由噪聲中“還原”出來的。

這一切究竟是怎么發(fā)生的?從文本到圖片,模型到底都做了什么?

1. 文生圖的起源:CLIP模型

CLIP 模型的設(shè)計(jì)目標(biāo),是打通圖像和文字這兩種完全不同的信息表達(dá)方式,把文字和圖像映射到同一個(gè)高維向量空間中——也就是我們常說的嵌入空間(embedding space)

CLIP 的結(jié)構(gòu)包括兩個(gè)獨(dú)立的編碼器:一個(gè)處理圖像,一個(gè)處理文字。它們分別把輸入內(nèi)容壓縮成長(zhǎng)度相同的向量(通常是 512 維),然后通過對(duì)比學(xué)習(xí)的方式進(jìn)行訓(xùn)練。

所謂對(duì)比學(xué)習(xí),就是讓匹配的圖文對(duì)(positive pairs),比如“cat”的圖片和“a photo of a cat”,之間的向量距離盡量接近;而不匹配的組合,比如“cat”的圖片和“dog”的文本描述,則盡量遠(yuǎn)離。

久而久之,模型就學(xué)會(huì)了如何讓「圖片」和「文字」,在向量空間中相互對(duì)應(yīng)。

更有意思的是,這個(gè)嵌入空間不僅能用來對(duì)齊圖文信息,還支持向量之間的概念運(yùn)算。

舉個(gè)例子:

“一個(gè)戴帽子的人”? –? “一個(gè)沒戴帽子的人”? =? “帽子”

這說明 CLIP 不只是把圖和字對(duì)起來,它還能識(shí)別出“帽子”這個(gè)概念,并且能夠拎出來單獨(dú)分析、單獨(dú)處理。

然而,CLIP 雖然能讀懂圖像信息,也能讀懂文字信息,但卻不能自己提筆,根據(jù)文本信息輸出圖像,那AI是怎么生成圖片的呢?

生成的部分,就輪到擴(kuò)散模型(Diffusion Models)登場(chǎng)了。

2. 擴(kuò)散模型:由噪聲反推畫面

2020年,伯克利大學(xué)的一組研究人員發(fā)表了一篇開創(chuàng)性論文,提出了一個(gè)聽上去有些反直覺的做法:讓 AI 從一堆隨機(jī)噪音出發(fā),一步步“倒推”出一張完整的圖片。

這套方法被稱為 DDPM ,也就是“去噪擴(kuò)散概率模型”。

簡(jiǎn)單來說,他們訓(xùn)練模型的目標(biāo)是,讓模型學(xué)會(huì)一個(gè)另類的任務(wù):不是從一張白紙開始畫圖,而是反過來,從一張已經(jīng)被“完全打亂”的圖中,把內(nèi)容一點(diǎn)點(diǎn)還原回來。

具體做法是:先從真實(shí)圖片出發(fā),逐步加入隨機(jī)噪音,直到圖像完全變成一張看不懂的點(diǎn)陣圖;然后訓(xùn)練一個(gè)模型,按相反的順序,一步步去掉這些噪音,最終還原原圖。

這一方法的神奇之處,不只是逆向思維本身,還在于幾個(gè)核心突破:

第一,伯克利團(tuán)隊(duì)發(fā)現(xiàn):讓模型一步步減少噪聲,效果并不好,反而是直接預(yù)測(cè)整張圖中一共加了多少噪音,然后反推,還原的速度快且準(zhǔn)確率較高。

就像修復(fù)一張揉皺的畫,與其想著一層層、一步步撫平,不如先直接告訴 AI ,它本來是什么樣子,然后再揉皺,讓 AI 還原,效果還更好。這是一個(gè)非常有意思的結(jié)論,我會(huì)在本文結(jié)尾處,結(jié)合一本書細(xì)聊。

第二,他們還發(fā)現(xiàn),在“去噪”的每一步中,加入一點(diǎn)點(diǎn)隨機(jī)噪音,反而能提高最終圖像質(zhì)量。

這聽上去像反向操作,但其實(shí)非常關(guān)鍵,因?yàn)椴患釉胍舻脑?,模型容易走到“平均值”的方向,也就是生成一張“最安全”的圖,比如既像貓又像狗,又像山又像海,啥都有一點(diǎn),但啥都不像,更像多個(gè)事物的平均值。

而如果在去噪的過程中適當(dāng)加一點(diǎn)噪音,就像是給模型一些自由發(fā)揮的空間,它不會(huì)被困在模糊的、最保險(xiǎn)的平均值里,最終生成更有細(xì)節(jié)、更鮮明、更真實(shí)的圖像。

第三,從數(shù)學(xué)上看,這個(gè)過程其實(shí)模擬了物理里的“擴(kuò)散過程”的反方向,屬于一種隨機(jī)微分方程的解法。沿著這條思路,研究者們還進(jìn)一步提出了 DDIM(Denoising Diffusion Implicit Models),即去掉中間的隨機(jī)跳動(dòng),只保留主要的還原路徑。

DDIM的結(jié)果就是模型能用更少的步驟、更短的時(shí)間,生成同樣質(zhì)量的圖像,大大減少生成步驟和算力成本。

從那之后,擴(kuò)散模型真正成為生成圖像的主流方法。我們今天看到的 Stable Diffusion、Midjourney、DALL·E 等等,幾乎都是在這套原理上生長(zhǎng)出來的。

現(xiàn)在,我們有了一個(gè)能畫畫的擴(kuò)散模型,有了一個(gè)能理解文本和圖像的 CLIP 模型,接下來關(guān)鍵的問題就是——怎么把這兩者組合起來,讓AI“按我們說的去畫”、做到真正意義上的“AI文生圖”?

3. CLIP 如何為擴(kuò)散模型引路?

前面我們提到,CLIP 模型擅長(zhǎng)理解信息,能把文字和圖像都轉(zhuǎn)化成向量,并放進(jìn)同一個(gè)語義空間里,但它自己不會(huì)“動(dòng)手畫畫”,只能判斷“這張圖像像不像你說的東西”,這就是 CLIP 的正向用法:輸入圖和詞,它幫你判斷圖文是否匹配。

而擴(kuò)散模型雖然能畫,但畫的時(shí)候沒有方向感。

那有沒有辦法把 CLIP 的語言理解能力,和擴(kuò)散模型的生成能力結(jié)合起來?讓前者負(fù)責(zé)理解語義,后者負(fù)責(zé)還原圖像,從而實(shí)現(xiàn)一種從文字直接生成圖像的閉環(huán)?OpenAI 在 2022 年提出的一種架構(gòu)做到了。

這個(gè)方法簡(jiǎn)單來說,就是把 CLIP 的文本編碼器和擴(kuò)散模型結(jié)合起來,先把用戶輸入的 prompt,比如“一個(gè)騎馬的宇航員”變成向量,再讓這個(gè)向量嵌入到每一步的去噪聲操作中,作為一種條件去輸入。

這種方式反向使用 CLIP的方式,就叫 UnCLIP,它不是讓模型理解圖像,而是反過來使用 CLIP ,它先用 CLIP 的文本編碼器把一句話(比如“一個(gè)騎馬的宇航員”)變成一個(gè)語義向量,然后在擴(kuò)散模型生成圖像的每一步中,把這個(gè)向量當(dāng)作“目標(biāo)方向”,指導(dǎo)模型往這個(gè)方向畫圖。

為什么這樣做效果會(huì)好?因?yàn)?CLIP 在訓(xùn)練時(shí)吸收了大量圖文對(duì),它的語義空間非常豐富。通過它的文本向量,來指導(dǎo)擴(kuò)散模型,本質(zhì)上就是在把 CLIP 的語義空間當(dāng)成地圖,幫助擴(kuò)散模型在高維噪聲中找準(zhǔn)目標(biāo),按照我們的 prompt 去進(jìn)行生成。

上面的文字稍微有些難懂,這里貼個(gè)省流版:

把 CLIP 理解為高德地圖,prompt 是輸入的目的地坐標(biāo),擴(kuò)散模型負(fù)責(zé)開車,抵達(dá)目的地。

這項(xiàng)技術(shù)后來在 OpenAI 的 DALL·E 2 中被正式商用化,成為首批高質(zhì)量、強(qiáng)指令響應(yīng)的文本生成圖像產(chǎn)品。

至此,生成式 AI 從“能畫”到“遵循人類指令作畫”,從自由發(fā)揮進(jìn)化到精準(zhǔn)理解,AI 的文生圖能力,也就基本成型了。

不過,早期使用過 Midjourney 等文生圖產(chǎn)品的用戶朋友應(yīng)該知道,要讓 AI 畫出來的東西如你所愿,還是有一定距離。

用過 Midjourney 早期版本的用戶應(yīng)該有類似體驗(yàn):你輸入一句 prompt,比如“一個(gè)穿宇航服的貓?jiān)谏衬矧T車”,結(jié)果出來的圖可能是——畫了一片沙漠,但是沒貓;或者有只貓穿著衣服但不是宇航服。

這可能不是你的 prompt 沒寫清楚,而是模型知道沒有完全遵行指令,因?yàn)樗m然收到了 prompt ,但這個(gè) prompt 對(duì)模型而言只是一個(gè)建議,不是強(qiáng)制執(zhí)行。因此它在生成圖像的每一步中,其實(shí)還是邊畫、邊理解、邊推測(cè)你給出的建議,因此容易走偏。

有沒有一種辦法,能把 prompt 的重要性放大、讓模型更好地遵循 prompt 的要求進(jìn)行圖片生成?

這就是接下來我們要講的無分類器引導(dǎo)(Classifier-Free Guidance)要解決的問題。

4. 生圖能力再進(jìn)階:無分類器引導(dǎo)(CFG)

為了解決模型“理解了但沒照做”的問題,OpenAI 在 2022 年提出了一種方法,叫做“無分類器引導(dǎo)”(Classifier-Free Guidance,簡(jiǎn)稱 CFG)。

這個(gè)方法的核心目的是:增強(qiáng)生成模型對(duì)文本提示的響應(yīng)能力,使其在生成圖像時(shí)更精確地執(zhí)行語義指令。

傳統(tǒng)的生成方法,雖然可以讓模型根據(jù)文字生成圖像,但在實(shí)際使用中經(jīng)常出現(xiàn)目標(biāo)元素缺失、位置錯(cuò)誤、細(xì)節(jié)偏弱等問題。原因在于 prompt 雖然提供了生成方向,但模型在生成過程中,并沒有足夠強(qiáng)的機(jī)制去判斷自己偏離了多少,也缺乏手段主動(dòng)修正方向。

而 CFG 的提出,正好解決這個(gè)“沒有校準(zhǔn)系統(tǒng)”的問題。它的做法是,在模型訓(xùn)練階段混合使用兩類樣本:一類帶 prompt ,另一類不帶 prompt 。這使得模型學(xué)會(huì)了兩種生成路徑:

一是遵循 prompt 進(jìn)行圖像生成的路徑;二是拋開 prompt 自由發(fā)揮的生成路徑。

而到了生成階段,系統(tǒng)可以同時(shí)執(zhí)行這兩條路徑,分別得出兩個(gè)潛在的結(jié)果,然后計(jì)算出兩者之間的差異

——這個(gè)差異就是模型從「自由發(fā)揮」轉(zhuǎn)為「嚴(yán)格遵循 prompt 」的引導(dǎo)方向。通過給這個(gè)方向乘上一個(gè)放大系數(shù),引導(dǎo)信號(hào)被系統(tǒng)化地注入到每一步圖像生成的過程之中。

這個(gè)放大的系數(shù),通常是一個(gè)可以手動(dòng)調(diào)節(jié)的參數(shù),用于決定 prompt 對(duì)生成結(jié)果的干預(yù)程度,系數(shù)越大,生成圖像越嚴(yán)格遵循 prompt ,但也可能犧牲構(gòu)圖的自然度;系數(shù)越小,圖像自由度更高,但對(duì)于 prompt 的遵循能力也會(huì)相應(yīng)減弱。

舉個(gè)具體的例子,prompt 為 “一個(gè)穿宇航服的貓?jiān)谏衬序T車”時(shí),如果 CFG 系數(shù)設(shè)置較低,模型可能會(huì)只畫出沙漠場(chǎng)景,貓或宇航服元素缺失;而系數(shù)調(diào)高后,貓的形象開始清晰出現(xiàn),穿著宇航服,甚至包含車輛元素,整個(gè)畫面與提示詞高度一致。

相比以往需要額外訓(xùn)練分類器來判斷圖像是否符合 prompt 的做法,CFG 更為簡(jiǎn)潔有效。

它不依賴額外的模型來進(jìn)行遵循能力提升,而是在同一個(gè)生成架構(gòu)內(nèi),通過對(duì)比生成路徑的方式,直接獲取引導(dǎo)方向,大大提高了執(zhí)行效率和模型穩(wěn)定性。

因此從這項(xiàng)技術(shù)被提出之后,幾乎所有主流的擴(kuò)散圖像生成產(chǎn)品,都開始集成 CFG,包括后續(xù)版本的 Midjourney(主觀猜測(cè)從V3以后開始集成 CFG)、Stable Diffusion(v1.4開始集成CFG)等等。

CFG也讓模型成為從“能畫圖”,進(jìn)階到“畫得準(zhǔn)”,讓生成式 AI 從「理解語義」,進(jìn)一步走向「可控生成」。

結(jié)尾

回顧整條文生圖技術(shù)鏈條,我們看到一個(gè)清晰的演化邏輯:

  • CLIP建立了圖文共通的語義空間,讓模型能理解文字與圖像之間的聯(lián)系
  • 擴(kuò)散模型提供了一種驚艷的生成機(jī)制,讓圖像可以從純?cè)肼曋兄鸩竭€原出來;
  • UnCLIP架構(gòu)使模型不僅聽得懂人話,還能朝著需求目標(biāo)進(jìn)行生圖;
  • CFG則進(jìn)一步強(qiáng)化了prompt在生成過程中的主導(dǎo)性,提升了準(zhǔn)確度與可控性。

一些看起來毫不相關(guān)的、甚至完全不同的技術(shù)、完全不同的研究方向,單拎出來好像都沒有任何價(jià)值,但最終卻形成了一個(gè)偉大的、顛覆人類歷史的圖像生成系統(tǒng),它能夠接受模糊的輸入、理解抽象的語義、執(zhí)行目標(biāo)引導(dǎo),并在迭代中優(yōu)化結(jié)果。

如果從方法論的角度來看,這整套體系并不是依靠“教模型如何一步步畫出一張圖”,而是通過建立空間、構(gòu)建目標(biāo)、釋放自由度,讓模型自己在混沌中尋找最優(yōu)路徑。這種訓(xùn)練機(jī)制的精髓,不在于控制每一個(gè)步驟,而在于設(shè)置目標(biāo),并設(shè)計(jì)出一種可以自我糾偏、自動(dòng)趨近目標(biāo)的訓(xùn)練機(jī)制。

這剛好跟《為什么偉大不可以被計(jì)劃》中提出的觀點(diǎn)高度契合:偉大的成果往往不是依靠一套清晰可控的計(jì)劃達(dá)成的,它們更常見的路徑是:先明確一個(gè)清晰的、正確的方向,然后在不斷試探和調(diào)整中,一步步走出屬于自己的路徑。

這和人生的選擇,似乎有共通之處?

很多人總希望生活能像寫代碼一樣,有明確的路徑、有確定的成功方法,但現(xiàn)實(shí)往往不是那樣的。大多數(shù)時(shí)候,你只能先確認(rèn)自己想往哪個(gè)方向走,然后接受中途的混亂、不確定性,甚至是偏離,然后再一點(diǎn)點(diǎn)把它拉回正軌。

AI 文生圖不就是這樣嗎?從一堆隨機(jī)噪聲開始,一次次嘗試,一點(diǎn)點(diǎn)修正,最后才畫出想要的圖。

所以我們也許并不需要太過于著急,也并不需要早早計(jì)劃好自己的成功路徑。

只要確定方向是對(duì)的,就值得一直走下去。

本文由 @比沃特 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖來自Pixabay,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 嗯嗯,根本沒看懂哇???♂?

    來自上海 回復(fù)