Hi, 我是海辛,是一名影視導演,上面放的短片畫面是完全透過 AI Disco Diffusion 生成的。為了更好地學習如何提升 AI 畫面的質量,最近看了許多總結得很好的英文文件,在取得了原作者授權同意的情況,本文由週末和海辛共同翻譯。

本文將涉及以下引數,善用 ctrl/cmd + F 進行搜尋:
-
1. output image size
-
2. clamp_grad, clamp_max
-
3. eta
-
4. cutn_schedule
-
5. range_scale
Disco Diffusion 引數效果大全(上)查詢更多引數。
1. output image size 輸出圖片大小
width_height: 預設生成圖片寬高比為 [1280, 768] 可以設定方形、寬屏、窄屏圖片。但數值需要是 64 的倍數,由於 Clip 模型設定的要求,至少需要 512px.如果輸入的數值不是 64 的倍數,DD 會自動修改該值為某個 64 倍數的值。
[512, 768] 是一箇中等大小影像不錯的起始值,[1024, 768] 可以被認為對於 DD 來說是比較大的生成影像,有可能會出現爆視訊記憶體的錯誤。越大的畫素會顯著增加爆視訊記憶體的機率,所以從較小的圖片開始更為明智。如果最終你需要一個較高畫素的圖片,一個更通用的流程是,先用 DD 生成中等大小的影像,再用另外一個擴大畫素型別的 AI 來生成畫素更高的影像。
另外一個有趣的現象,長寬比低的設定(如 512 x 1024) 更適合生成視覺上更高的物體;長寬比高的設定(如 1024 x 768)則更適合生成景觀圖。
不同 output image size 值的實驗 [1]
輸入的參考圖大小會保持在 1280 x 768.
模型選用: ViTB32, ViTB16, RN50 (DD 預設值)
原始參考圖 1280×768

12.5% (160, 96):

25% size (320,192):

37.5% size (480,288):

50% size (640,384):

75% size (960,576):

100% size (1280,768):

125% size (1600,960):

137.5% size (1760,1056):

測試者筆記:
我們可以從中得出什麼結論嗎?🤔 可能可以看出一點,我個人感覺越低的畫素會出現越抽象的結果;較低的畫素有油畫/印象派的質感。
2. clamp_grad, clamp_max
clamp_grad (預設開啟): clamp_grad 的功用是作為內部限制器以避免 DD 訓練出極端結果。如果 clamp_grad=True 與 clamp_grad=False 兩種設定下訓練出來的影像有非常大的變化,這大機率意味著你的 clip_guidance_scale引數設定的太高,可以適當調低。
clamp_max: (預設為0.05,可以設定為0-0.30之間的浮點數): 這是設定 clamp_grad 程度的引數,預設值為 0.05,以保證更為平滑、柔和的色彩。隨著設定值的增加(0.15-0.30),模型將傾向於提供更具差異性和明亮的色彩。
不同 clamp_max 值的實驗 [2]
訓練步數為 250,clamp_max = 0.03, 0.035, 0.04, 0.045, 0.05 的效果對比:

不同訓練步數下,不同 Clamp_max 值的實驗
step = 250, 500, 1000; clamp_max = 0.03, 0.04, 0.05 的交叉效果對比




3. eta
eta: (預設值為0.5,可以設定為0-1.0之間的浮點數) eta (希臘字母 η)是 diffusion model 的模型引數,會在每一步中新增隨機噪聲。eta=0 意味著不引入噪聲,eta 越大,噪聲越高。類似大多數 DD 的引數,eta 可以設定為負值,這可能會帶來難以預料的輸出影像。
模型可以視為超平面中的一個點,在訓練中尋找最優的位置,如果模型陷入了某個“區域性最優”的區域無法逃脫,加入隨機噪聲可以幫助模型獲得新的“位置”,以繼續最佳化,但這也意味著需要更多的訓練步數。如果設定eta=0, 那麼只需50-75步訓練你就可以獲得較為成型的輸出圖。當eta=1.0時,最好設定更多的訓練步數,一般而言>250步:因為在每一步的訓練中,模型會新增更多的噪聲,因此需要更多的訓練步數以獲得收斂的結果。
不同 eta 值的對比實驗 [3]
steps=250, clamp_max=0.05, eta= 0.0, 0.2, 0.4, 0.6, 0.8, 1.0

eta 為負值的對比實驗:
steps=250, clamp_max=0.05, eta= -1.0, -0.08, -0.06, -0.04, 0.02

固定步數,不同 eta 及 clamp_max 的交叉對比實驗:
steps = 250, eta = -1.0 – 1.0 vs clamp_max = 0.01 – 0.09




4. cutn scheduling
cutn_scheduling 的預設值在大多數圖片的訓練中都會產生很好的效果,調節 cut schedule 時需十分謹慎。
下面涉及的引數將會決定 CLIP 的 cuts 安排,換言之,CLIP 用以衡量模型效果的樣本。在 DD 中,有兩類 cuts: overview cuts, 以圖片整體作為樣本來評估與 prompt的匹配度; inner cuts, 圖片的一些區域性樣本,有助於對圖片細節進行訓練。inner cuts 的大小可以透過 cut_ic_pow 引數來設定。
Cut schedule 決定了在每一階段所選取的 cut 型別。預設設定是在早期使用 overview cut,之後透過 inner cut 來訓練細節。事實上預設設定在大多數情況下已經足夠,但你可以透過調整引數來處理整體與區域性的呈現效果。
cuts 的總數是決定記憶體使用量的決定性引數之一,需要謹慎地選取。在實際使用中,cuts會根據具體情況進行劃分,但在設定的時候,cutn_schedule 必須是基於1000個單元進行劃分的。同時,cutn_schedule也會根據總步數進行分配,因此當使用skip_steps / frames_skip_steps,你也會跳過一部分cuts。
cut_ic_pow (1.0 | 0.5-100): 決定inner cuts大小的引數。設定為較高的值會導致每個cut的size更小,因而會有更精細的細節訓練,但如果設定了太多的細小inner cuts,訓練出的影像可能失去整體的一致性,產生破碎的,“鑲嵌畫”式的結果。相應的,設定為較小的值,inner cut的size會變大,在維持影像的整體性時,也會保證一些細節的訓練。
cut_icgray_p: 一部分 cuts 可以去除色彩被設定為“灰度”模式。這一設定會改進邊界和銳度的呈現,尤其是在最初的訓練步數中,有助於構圖的界定。cut_icgray_p會作用在 overview / inner cut 之上。
不同 Cut_overview 及 cut_innercut 的交叉對比實驗 [4]




不同 Cut_ic_pow 及 cutn_batches 的交叉對比實驗

不同 Cut_ic_pow 及 cut_innercut 的交叉對比實驗




5. range_scale
range_scale: 調節畫面對比度,預設為 150,可調節範圍 0~1000. 越低的 range_scale 會增強畫面的對比度、減少顏色種類,生成像海報的圖片。越高的 range_scale 會降低對比度,增加顏色種類,生成更"平"的圖片。
不同 range_scale 及 CGS 的交叉對比實驗 [5]



以上就是 Disco Diffusion 引數效果大全(下)的內容,因為存在著一些整理和篩選,希望此文只是拋磚引玉,大家可以 Reference 的部分找到每部分對應的連結,並直接閱讀英文原文。DD 的引數實驗,目前網路的更新速度很快,所以可能不久又會有新的。我也有在做關於 Disco Diffusion 的引數實驗筆記,希望能給你的 DD 之旅提供幫助。
另外,我們有一個關於女性 AI 藝術家的共學小組,如果你是對 AI 感興趣的女性藝術家,歡迎通過後臺留言的方式告訴我你的微訊號,在不忙的時候我會加你並且拉你進群。
Reference:
[1] https://discord.com/channels/944025072648216586/949776749456138320/950813424051441674
[2] https://twitter.com/KyrickYoung/status/1500199679467925505?s=20&t=jwNBocA4ZTy9bF9rrYBsmg
[3] https://twitter.com/KyrickYoung/status/1500302322282418187?s=20&t=RXMx505dK7a_nz1N1I-0JA
[4] https://twitter.com/KyrickYoung/status/1502119135446245386?s=20&t=RXMx505dK7a_nz1N1I-0JA
[5] https://discord.com/channels/944025072648216586/949776749456138320/968022827955523624