天天看點

喜馬實踐:5分鐘讀懂AI是如何畫圖的

作者:閃念基因

前言

随着"AI出圖", "AI封面"等概念不斷出現在我們的視線中、朋友圈中、甚至是PRD中,大家可能會好奇AI是如何按照我們的要求畫圖的,今天我們以通俗淺顯的方式講解下其中的過程。本文隻講主要原理和過程,不講細節和使用,面向的是對AI出圖沒有經驗的同學,讀者可請根據自己的經驗值酌情跳過。

快速了解主流AI出圖工具差別

目前主流AI出圖工具有Stable Difussion(下文簡稱SD)、Midjourney和Dalle3,剔除一個不具代表性的Midjourney,剩下兩個的差別可通過幾個例子展現。

栗子1:

我:"I have a dream when a was young"

Dalle3:"那時的你向往奇幻,向往天空,夢裡都是五彩斑斓的世界,我想大概是這樣的吧..."

然後開始畫圖:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

我:"I have a dream when a was young"

SD:"你啥玩意兒?"

然後開始畫圖:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

由此可見, Dalle3不怎麼挑輸入品質,甚至能對抽象或模糊的輸入進行聯想,最終畫出一張品質還可以的圖,而SD對輸入資訊要求較高,如果不告訴SD具體要畫什麼,它會選擇直接躺平。

栗子2:

我:"給你一個奇幻風格模型, 再給你一個寫實人物Lora,再給你億點點提示詞In Casey Baugh's evocative style, art of a beautiful young girl cyborg with long brown hair, futuristic, scifi, intricate, elegant, highly detailed, majestic, Baugh's brushwork infuses the painting with a unique combination of realism and abstraction, greg rutkowski, surreal gold filigree, broken glass, (masterpiece, sidelighting, finely detailed beautiful eyes: 1.2), hdr, realistic painting, natural skin, textured skin, closed mouth, crystal eyes, butterfly filigree, chest armor, eye makeup, robot joints, long hair moved by the wind, window facing to another world, Baugh's distinctive style captures the essence of the girl's enigmatic nature, inviting viewers to explore the depths of her soul, award winning art,嚴格按照我的要求畫一張圖"

Dalle3:"不得行,處理不了自定義模型,處理不了Lora"

然後開始畫圖:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

我:"給你一個奇幻風格模型, 再給你一個寫實人物Lora,再給你億點點提示詞In Casey Baugh's evocative style, art of a beautiful young girl cyborg with long brown hair, futuristic, scifi, intricate, elegant, highly detailed, majestic, Baugh's brushwork infuses the painting with a unique combination of realism and abstraction, greg rutkowski, surreal gold filigree, broken glass, (masterpiece, sidelighting, finely detailed beautiful eyes: 1.2), hdr, realistic painting, natural skin, textured skin, closed mouth, crystal eyes, butterfly filigree, chest armor, eye makeup, robot joints, long hair moved by the wind, window facing to another world, Baugh's distinctive style captures the essence of the girl's enigmatic nature, inviting viewers to explore the depths of her soul, award winning art,嚴格按照我的要求畫一張圖"

SD:"明白!"

然後開始畫圖:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

由此可見,Dalle3不支援自定義主模型和Lora,而SD出圖效果的可控性和定制化能力都較強,比如示例中可以自定義主模型,指定某個人物Lora,甚至指定圖中人物的表情和姿勢 。

通過以上場景示例我們發現Dalle3和SD在以下方面有着明顯的差別:

語義了解 上手難度 畫圖控制能力 費用
Dalle3 頂級了解 簡單 較弱 收費
SD 有一點,但不多 有一定難度 極高 免費

創作者生态裡AI封面的場景(通過聲音标題或專輯名生成封面)輸入大多是抽象的,且對圖像控制沒有訴求,是以有着優秀語義了解的Dalle3比較契合我們的場景,目前我們的AI封面選用的是Dalle3。

了解出圖過程

通過開頭的例子,我們對于什麼是AI出圖有了大概的印象,接下來就是本文的主要内容 - 了解AI是如何出圖的。由于SD開源且定制能力更強,本文就以SD為例講解AI出圖過程,其中會省略部分晦澀且不影響了解(主要是我也不懂)的環節和原理,主打一個讀完包懂。

基本原理

擴散模型(Diffusion model)

擴散模型是一個大類,它們的目的是生成類似于它們訓練資料的新資料。對于SD來說,就是生成類似訓練樣本圖像的新圖像。

舉個栗子:

用一張貓圖作為訓練圖像,通過為其不斷添加噪聲,最終得出一張噪聲圖,這個添加噪聲的過程被噪聲預測器所記錄

喜馬實踐:5分鐘讀懂AI是如何畫圖的

當我們需要生成一張貓圖的時候,便可通過如下方法來達成:

1、生成一張完全随機的噪聲圖像作為原始圖像 。

2、要求噪聲預測器告訴我們生成貓圖所需要的噪聲(記錄器記錄了之前訓練時如何通過添加噪聲把一張貓圖變成一張随機噪點圖,是以能預測出反向操作所需要的噪聲)

3、然後我們從原始圖像中減去這個預測的噪聲

4、不斷重複,便會得到一張貓圖。

喜馬實踐:5分鐘讀懂AI是如何畫圖的

例子中的擴散過程所需要的計算量在普通計算機上很難完成,是以SD的擴散模型不再是在像素空間中完成,而是在低維的潛空間中完成,這帶來的直接結果就是我們手中的破電腦也能本地AI出圖了。

詞向量(word embedding)

為了友善後續了解我們先來講一個概念:詞向量。簡單來說就是它可以把自然語言中的表示方法轉換為高維空間内的向量,然後通過餘弦相似度或歐氏距離計算它們之間的關系。

舉個栗子:我們通過某小說文本内容(假設它足夠長)訓練了一個詞向量模型,那當我們把 “黃魚面”、“凱迪拉克”、“排骨年糕” 這三個詞給到它,它是能得出“黃魚面”和“排骨年糕”更近似。因為在訓練中我們給到它足夠多包含了這些詞的文本,它把每個字和詞向量化,然後根據每個字和詞出現的位置、頻率,從某種意義上計算出彼此之間的關系。雖然它不知道三個詞在人類語言中代表什麼意思,但是它知道這三個詞在向量次元上彼此之間的“關系”。是以,詞向量模型可以計算相似度。

再舉個栗子:劉煥通過自己的日記和微網誌上的文本(假設有并且足夠多)訓練了一個詞向量模型,那當他輸入“我要”兩個字的時候,模型便能預測出接下來大機率要輸“放假”。是以,詞向量模型可以預測機率。

由此可得,詞向量模型雖然不知道輸入給它的文本内容在人類世界中代表什麼,但是它可以借助向量确定這些内容在它的世界裡是什麼,甚至計算這些内容彼此之前的關系。

CLIP

前面講詞向量,其實是為了友善了解clip。詞向量模型可以處理文本與文本的比對關系(比如知道“狗”和“犬”大概是同一個東西),而clip模型則能處理文本和圖像的比對關系(比如知道“狗”和一張狗的圖檔是對應的)。

SD的clip包含text encoder和image encoder,text encoder負責把我們輸入的文本進行分詞,然後轉換為标記(Token),再将每個标記向量化(Embedding)。而image encoder在訓練時已經掌握了大量的樣本, 這裡拿文本向量結果按餘弦距離進行比對即可,過程如下圖:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

現在回過頭來看圖像生成的過程,當我們輸入“一隻貓”作為提示詞的時候,都發生了什麼:

1、提示詞被拆分(clip text encoder)

2、拆分後的詞被轉為标記(clip text encoder)

3、标記被向量化(clip text encoder)

4、從向量次元比對文本和圖像(clip text encoder + clip image encoder)

5、預測生成目标圖像所需要的噪聲(difussion model)

6、在随機噪聲的圖上不斷減去預測的噪聲(difussion model)

7、最終形成一張貓圖(difussion model)

這是SD通過文本生成圖像的過程,SD還支援通過圖像生成圖像,感興趣的小夥伴們可以去了解下生成過程,這裡不做展開。

圖像控制

具備生成圖像的能力隻是完成了第一步,實際場景中應用,當我們把能給的提示詞都給到之後,可能生成效果仍然和預期有一定出入,這時候就要借助圖像生成的随機性通過重新生成來碰運氣,就是俗說的“抽卡”。

那如何減少抽卡的機率呢?就是增強圖像生成時的控制能力,SD的圖像控制主要通過提示詞、主模型、Lora模型、ControlNet來完成。

1、提示詞、反向提示詞

SD文本生成圖像過程中,提示詞是成本最低的控制方式,比如通過文本來限定圖像的主題、場景、鏡頭等要素。

提示詞是告訴SD生成圖像中要有什麼,如果要告訴SD避免圖中出現什麼,就要用到反向提示詞。

舉個栗子:

提示詞:master piece,high qulity,a beautifull girl,black long straigh hair,pretty face,moonlight

反向提示詞:nsfw,sexy

上面提示詞要求圖中出現女孩兒,黑長直,月光,要求避免出現社死内容,出圖如下:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

出圖效果基本符合要求,但這是劉煥愛看的風格而不是我們愛看的,是以我們再加一個反向提示詞要求避免出現裸露的腿部:

提示詞:master piece,high qulity,a beautifull girl,black long straigh hair,pretty face,moonlight

反向提示詞:nsfw,sexy,leg skin

出圖就會盡量避免出現腿部皮膚:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

2、主模型

前面講到SD生成圖像的核心原理之一是擴散模型,官方的大模型都是花費巨額成本訓練了大量圖檔得到的,它的特點是大而全,但是在特定風格圖像的生成上有些力不從心,于是小夥伴們在這些官方基礎模型之上,加以訓練或融合,最終産出各種不同風格的模型。使用相同的提示詞,在不同模型下的表現明顯帶有對應模型的風格。

還是以剛才的“女孩兒,黑長直,月光”提示詞為例,在寫實風格模型下出圖效果:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

在二次元風格模型下出圖效果:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

在國漫風格模型下出圖效果:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

3、Lora模型

SD主模型的訓練是需要大量圖像樣本和計算資源的,如果隻需要定制人物、畫風等要素,則可以通過對應的Lora模型來實作,訓練Lora模型所耗費的資源比主模型要小很多,對人物、畫風等要素的定制效果立竿見影

還是以剛才的“女孩兒,黑長直,月光”為提示詞為例,使用iu的人物Lora模型:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

使用八重神子的Lora模型:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

4、ControNet

Lora主要用作控制人物,而人物的表情和姿勢控制,則要用到ControlNet,Controlnet可以通過參照圖像或者畫布上畫火柴圖來控制出圖效果。

還是以剛才的“女孩兒,黑長直,月光”為提示詞為例,我們指定一個頂流舞蹈小熊舞截圖的姿勢:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

并把ControlNet的processor設為openpose,出圖效果就會偏向這個姿勢:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

當我們在畫布上畫一個橫着的小人作為參照姿勢:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

出圖就會盡量貼近這個橫着人的小人:

喜馬實踐:5分鐘讀懂AI是如何畫圖的

以上就是SD中常用的圖像生成控制方式,SD中還有其它的手段可以幹預出圖品質和效果,比如VAE、采樣器、疊代次數等,感興趣的小夥伴可以深入的去了解,這裡就不展開了。現在我們簡單總結一下AI出圖的流程:

1、輸入提示詞(文生圖場景輸入提示詞,圖生圖場景輸入參照圖)

2、SD clip處理輸入的文本,經過一系列流程轉為向量,通過計算近而得知要出什麼樣的圖

3、主模型、Lora、ControlNet出圖控圖(這裡省略VAE、采樣器、步數、随機種子等)

4、不斷疊代最終生成效果圖

結束語

簡單的提示詞就可以讓工具按要求生成圖像,稍加控制就能指定人物的表情和姿勢,還能訓練自己的人物模型,AI畫圖給我們工作和生活帶來便利的同時,不禁讓我們感慨AI的無所不能。既然它畫的比我們快,還畫的比我們好,那本着打不過就加入的原則,讓我們一起擁抱AI吧!

來源-微信公衆号:喜馬拉雅技術團隊

出處:https://mp.weixin.qq.com/s/k8OEDIvvXb-dY1C3nR1YrQ