人工智能繪畫工具 Disco Diffusion 入門教程
Disco Diffusion 是發(fā)布于 Google Colab 平臺的一款利用人工智能深度學(xué)習(xí)進行數(shù)字藝術(shù)創(chuàng)作的工具,它是基于 MIT 許可協(xié)議的開源工具,可以在 Google Drive 直接運行,也可以部署到本地運行,目前最新的版本是 Disco Diffusion v5.2。
主創(chuàng)是 Somnai(@Somnai_dreams)和 Adam Letts(@gandamu_ml),在 Chris Allen(@zippy731)、HostsServer(@HostsServer)和 Tom Mason(@nin_artificial)的協(xié)作下迭代到了今天的版本。
用白話講 Disco Diffusion 的基本工作就是把你給出的 Prompts(提示/描述)由文字信息變成圖像信息,把你用文字描述的畫面「畫」出來。實際操作也基本如此,很簡單,先來看幾張用 Disco Diffusion 生成的圖片。



圖片下方是我給出的 Prompts,Disco Diffusion 會根據(jù)這些內(nèi)容去生成畫面,并且每一次都會產(chǎn)生不同的結(jié)果,這些還是我初期基本按默認(rèn)參數(shù)渲染的,所以精度其實不算太高,如果提高參數(shù)設(shè)置,做出更好的描述,你會得到質(zhì)量更高的圖片。下面就進入教程環(huán)節(jié)吧。
準(zhǔn)備工作
注冊一個谷歌賬號。
入門教程
01. 使用瀏覽器打開 Disco Diffusion v5.2 [w/ VR Mode](https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb)。
02. 點擊頁面右上角「登錄」按鈕,登入你的谷歌賬號。
03. 點擊「復(fù)制到云端硬盤」或點擊「文件」選擇「在云端硬盤中保存一份副本」。

04. 副本創(chuàng)建完成會出現(xiàn)「筆記本的副本已完成」彈窗,點擊「在新標(biāo)簽頁中打開」。
05. 單擊「“Disco Diffusion v5.2 [w/ VR Mode]”的副本」修改筆記本名稱(以下所有代碼可視為源文件/源代碼,此處是源文件的名稱,可按創(chuàng)作主題或其他方式命名,方便后期修改和區(qū)分)。

06. 修改 batch_name(圖片保存在云盤的名稱);設(shè)置 steps,可按默認(rèn)值(通常 200 - 300 已經(jīng)足夠,若效果不符合預(yù)期可適當(dāng)調(diào)整);設(shè)置 width_height(圖片尺寸,需是 64 的倍數(shù),請勿設(shè)置過大尺寸,新手可按默認(rèn)設(shè)置)。

07. 點擊 Extra Settings 前面的小三角,設(shè)置 intermediate_saves(設(shè)置過程圖保存張數(shù),設(shè)置為 0 渲染完成只保存最后一張圖,設(shè)置為 2,渲染完成會得到一張進度 33%、一張 66% 和一張 100% 的圖片,數(shù)值越大數(shù)量越多,不影響渲染速度)。

08. 設(shè)置 Prompts(在這里輸入描述畫面的語句,格式為"XXXX, XXXX, XXXX.",建議在其他地方編輯好直接粘貼過來,保留最前和最后的引號,使用一個 Prompt 即可,不要求是完整的句子,可以是長短句或單詞,可參考默認(rèn)結(jié)構(gòu),前置詞描述畫作類別,中間描述畫面內(nèi)容,后接參考風(fēng)格的藝術(shù)家,另外可以增加整體風(fēng)格的詞匯或者其他內(nèi)容,emoji 也可以)。

09. 設(shè)置 display_rate(渲染預(yù)覽圖的刷新頻率,建議設(shè)置為 5,每過 5 個 steps 更新一次預(yù)覽圖),設(shè)置 n_batches(以這個主題渲染的圖片張數(shù),因為每次渲染的結(jié)果都是不同的,所以可以設(shè)置多張圖片,一張渲染完成后會接著渲染下一張,已經(jīng)渲染完成的會自動保存,可按需要設(shè)置)。

10. 點擊「代碼執(zhí)行程序」選擇「全部運行」。

11. 彈出「筆記本需要高 RAM」的窗口,點擊「確定」。
12. 彈出「您還在設(shè)備面前嗎?」的窗口,點擊「進行人機身份驗證」,按指令進行驗證。
13. 彈出「允許此筆記本訪問您的 Google 云端硬盤文件嗎?」的窗口,點擊「連接到 Google 云端硬盤」。
14. 彈出「登錄 - Google 賬號」窗口,選擇你的谷歌賬號,點擊「允許」。
15. 回到 Disco Diffusion 的頁面你會發(fā)現(xiàn)每段代碼前面都有個中間有個三角形的圓,外面在轉(zhuǎn)圈圈的就是在運行當(dāng)前的代碼,運行完成后前面會出現(xiàn)一個綠色的小勾,第一次運行需要等待幾分鐘,稍等片刻你會看到在「4. Diffuse!」的末尾會出現(xiàn)一張充滿噪點的圖,就表示開始渲染了,圖片上方的 Batches 會顯示你的渲染總進度,下方顯示的是當(dāng)前這張圖的渲染進度,后面有預(yù)計的渲染時間,網(wǎng)頁最下方會顯示運行時間計時。

16. 過幾分鐘可能還會出現(xiàn)一次「您還在設(shè)備面前嗎?」的彈窗,點擊「進行人機身份驗證」,按指令進行驗證,之后就可以慢慢渲了。(steps 設(shè)置為 250 實際上渲染只到 240,因為默認(rèn)跳過了 10 個 steps,如果 display_rate 設(shè)置為了 5,那么圖片下方的進度條每增加 5 個 steps 圖片就會刷新一次,在這里右擊是可以直接保存當(dāng)前的圖片的,當(dāng)然按你的設(shè)置也會根據(jù)進度自動保存圖片到你的谷歌云盤)
17. 之后你便可以在 Google Drive(https://drive.google.com)直接查看保存的圖片了,在 AI - Disco_Diffusion - images_out 相應(yīng)的文件夾里,若設(shè)置了 intermediate_saves 會多出一個 partials 的子文件夾,里面是過程圖。所有的圖片都是隨著進程實時更新的,每完成一個進度就會自動保存一張,在這里可以把圖片下載到本地。Colab Notebooks 這個文件夾里保存的是你的源文件。

進階教程
除了直接用文字描述的方式,Disco Diffusion 也可以在一張圖片的基礎(chǔ)上做渲染,你可以選擇自己拍攝的照片、涂鴉的畫作或是之前渲染的圖片作為一個起點,再配合 Prompts 描述變成一個全新的作品。
基礎(chǔ)的操作是一致的,我們只需要多一個步驟,就是在 Settings 里寫入 init_image。首先我們需要把使用的圖片上傳到 content 中,這里有兩種操作方式。
方式一
01. 點擊左側(cè)的第四個「文件」圖標(biāo)展開文件窗口。(如果是新建的文件可能會出現(xiàn)入門教程第 11、12 步的彈窗,確定加驗證就可以了)

02. 點擊文件窗口上方第一個「上傳到會話存儲空間」圖標(biāo),選擇你要上傳的圖片并點擊「打開」,圖片就會開始上傳(你也可以把圖片直接拖進文件窗口的空白處)。

03. 上傳完成后圖片會顯示在文件窗口的列表中,找到你要使用的圖片并點擊文件名后方的三個小圓點,選擇「復(fù)制路徑」。

方式二
01. 進入 Google Drive 登入你的賬號,在云端硬盤左側(cè)依次點擊 AI - Disco_Diffusion - init_images 進入文件夾。

02. 把圖片直接拖進文件窗口的空白處(你也可以在空白處右擊選擇上傳文件)。
03. 打開或新建 DD 文件,按方式一打開左側(cè)文件窗口,在列表中依次展開 drive - MyDrive - AI - Disco_Diffusion - init_images,找到你要使用的圖片并點擊文件名后方的三個小圓點,選擇「復(fù)制路徑」。

若在文件窗口找不到 drive 文件夾,請點擊文件窗口第三個「裝載 Google 云端硬盤」圖標(biāo),并按提示操作,載入你的 Google 云端硬盤,若文件夾還未出現(xiàn),請點擊文件窗口第二個「刷新」圖標(biāo)。

04. 找到 Settings - Init Settings - init_image,將路徑粘貼在此處。

05. 設(shè)置 init_scale(默認(rèn)值為 1000,數(shù)值越小變化越大);設(shè)置 skip_steps(默認(rèn)值 100,就是將你的圖片處理為初始噪點后,直接從 101 步開始使用 Prompts 渲染,建議設(shè)置為總步數(shù)的一半左右)。
06. 按照入門教程設(shè)置其他內(nèi)容并運行代碼即可。
高階教程
高階玩法就是各種擺弄參數(shù)了,大家可以參考 Disco Diffusion 內(nèi)的 Tutorial 部分,這里對部分參數(shù)做了一些解釋,也可以研究一下 Zippy's Disco Diffusion Cheatsheet v0.3(https://docs.google.com/document/d/1l8s7uS2dGqjztYSjPpzlmXLjl5PM3IGkRWI3IiCuK7g/edit) 這個文檔。

目前通過 v5.2 的版本我們不僅可以使用 DD 生成 2D 的圖像,還可以制作 3D 的內(nèi)容,包括視頻,甚至可以制作 VR 視頻。
本地運行
上面提到過 Disco Diffusion 是可以本地運行的,這邊有兩個教程,供大家參考。
Disco Diffusion AI Guide by Eliso(Win & Mac & Linux)
https://botbox.dev/disco-diffusion-guide
DDv5離線本地版出爐! by @JZ_打個比方(Win)
https://www.bilibili.com/video/BV1VL4y1V7Yv?share_source=copy_web
本地運行可能需要至少 6GB 獨顯,僅支持 NVIDIA 顯卡。
學(xué)習(xí)資料
Zippy's Disco Diffusion Cheatsheet v0.3
https://docs.google.com/document/d/1l8s7uS2dGqjztYSjPpzlmXLjl5PM3IGkRWI3IiCuK7g/edit
Disco Diffusion Modifiers
https://weirdwonderfulai.art/resources/disco-diffusion-modifiers
Disco Diffusion 70+ Artist Studies
https://weirdwonderfulai.art/resources/disco-diffusion-70-plus-artist-studies
EZ Charts - Diffusion Parameter Studies
https://docs.google.com/document/d/1ORymHm0Te18qKiHnhcdgGp-WSt8ZkLZvow3raiu2DVU/edit
200 CLIP+VQGAN keywords on 4 subjects
https://imgur.com/a/SALxbQm
VQGAN+CLIP Keyword Modifier Comparison
https://creator.nightcafe.studio/vqgan-clip-keyword-modifier-comparison#results
Hitchhiker's Guide To The Latent Space: Community Notebook Document
https://docs.google.com/document/d/1ON4unvrGC2fSEAHMVb4idopPlWmzM0Lx5cxiOXG47k4/edit
使用技巧
關(guān)于渲染速度,取決于 GPU,使用免費版的 Google Colab 我們會有機會匹配到 K80 和 T4 兩種 GPU,K80 的匹配頻率會略高一些,按默認(rèn)設(shè)置使用 K80 GPU 渲染一張圖片大概需要一個半小時左右,而使用 T4 GPU 大概只需要 15 分鐘左右。

我們可以在這里查看匹配的 GPU,如果你配到了 T4,最好不要輕易關(guān)閉程序,如果要改動 Prompts 或其他設(shè)置,可以先停止 4. Diffuse! 的運行,點下那個轉(zhuǎn)圈的圓形,停止后修改你要修改的東西,修改過的項目都要再點一下那些項目前面的圓形按鈕,重新運行單元格,改過的都運行好以后,在重新運行 4. Diffuse! ,就可以接著渲了,同時建議改了主題都把 batch_name 也改一下,這樣渲染的圖會保存在新的文件夾里。
關(guān)于 Google Colab,他有三個用戶分類,免費用戶、Pro 用戶和 Pro+ 用戶,區(qū)別如下圖。

簡單說,就是付費后限制會減少,效率會更高。免費用戶每日有使用時長限制,這個限制是一個動態(tài)的限制,每天略有不同,可能 2~8 小時不等,跟你賬戶的使用情況也有關(guān)系,當(dāng)日達到限額后需要從當(dāng)日首次使用服務(wù)開始計算 24 小時后恢復(fù)使用。上面也講到了關(guān)于 GPU 的分配,免費用戶會被分配到 K80 和 T4 兩種 GPU,Pro 用戶會分配到 T4 和 P100,Pro+ 用戶是 P100 和 V100,速度是越來越快的,免費用戶只能同時運行一個項目,付費用戶可以支持多開,Pro+ 用戶還支持后臺執(zhí)行,大家可以根據(jù)自身情況選擇方案。
關(guān)于上傳 init_image,我在進階教程中給大家提供了兩種方式,其中直接在 Google Colab 上傳的圖片可視為一次性用途,當(dāng)關(guān)閉程序時上傳的圖片會自動刪除,也就是說如果你關(guān)閉了程序,下次再打開文件這個圖片就沒了,如果你還要使用它就需要重新上傳。而上傳至 Google Drive 則不存在此問題,但是可能會需要你在運行前先載入 Google Drive,也就是先連接到谷歌云盤再開始運行程序。
關(guān)于防止斷連,當(dāng)頁面長時間沒有活動時 Google Colab 有可能會判定服務(wù)處于空閑狀態(tài),如果你使用的是 Chrome 瀏覽器,可以在 Chrome 網(wǎng)上應(yīng)用店搜索 Colab Alive,安裝這款擴展程序,它會定時幫你自動打開和關(guān)閉資源窗口,使你的頁面處于活動狀態(tài)。
關(guān)于 steps,經(jīng)過一段時間的實驗,發(fā)現(xiàn) steps 并不是設(shè)置的越高越好,而是需要根據(jù)你要的畫風(fēng)來判定,也許一般來講 250 是完全足夠的,你甚至不需要跑到 300,如果你選擇的藝術(shù)家風(fēng)格本身就不是那種寫實的,本身就不會有很多細節(jié),那你 steps 設(shè)置的太高就會起到反作用,會慢慢脫離藝術(shù)家的風(fēng)格,我一度認(rèn)為 AI 沒有識別出那些藝術(shù)家,直到我回去看步驟圖,才發(fā)現(xiàn)也許是細節(jié)太多,銳化過頭了,中間的朦朧美才是畫家原本的風(fēng)格。所以要根據(jù)你要的風(fēng)格去設(shè)置 steps,一般情況可以按默認(rèn),如果希望做一個寫實的或者很精細的畫面,并且你選擇的藝術(shù)家或描述是符合這個方向的,你可以提高 steps 的值。還有同樣的 steps 在不同的 prompts 里呈現(xiàn)的效果是不同的,與你的關(guān)鍵詞有關(guān)。還是建議通常設(shè)定 250-300 足矣,有些畫風(fēng)不到 200 就已經(jīng)足夠了,具體可以自己判斷。
關(guān)于渲染過程中想臨時改動設(shè)置或 Prompts 然后重新渲染,如果不想重新建一個文件也不想重新運行整個程序,想直接改,是可以的,但是意味著你之前的設(shè)置不會保存在云盤,你之后的設(shè)置會覆蓋之前的設(shè)置,當(dāng)前渲染中的項目會提前停止,如果這不是問題可以這樣操作。?
01. 點擊「4. Diffuse!」前面轉(zhuǎn)圈的圓形按鈕停止運行「4. Diffuse!」。
02. 更改設(shè)置或 Prompts。(注意所有更改過的項目都需要點擊那個單元前面的圓形按鈕單獨運行一遍以更新設(shè)置)
03. 建議修改 batch_name,修改后重新渲染的文件會保存在新的文件夾里(如果不修改,新的圖會存在原來的文件夾內(nèi)并覆蓋舊的圖)。建議重新運行 Extra Settings,運行后新的過程圖會保存在新文件夾的子文件夾里(如果不運行,新的圖會存在原來的文件夾內(nèi)并覆蓋舊的圖)。
04. 所有修改過的地方都單獨運行過以后,重新點擊「4. Diffuse!」前面的圓形按鈕,開始轉(zhuǎn)圈表示正常運行。
關(guān)于 init_image,我們姑且先把它稱為參考圖,大致上可以把 init_scale 理解為參考圖的模糊程度,數(shù)值越大,參考圖越清晰,數(shù)值越小,參考圖越模糊,通過 init_scale 的大小來控制參考圖的模糊程度,模糊后的圖片會被處理為初始噪點圖,skip_steps 是設(shè)置跳過步數(shù)的,也就是用來定義你希望你的參考圖在整個渲染過程中所占的比例,可以簡單理解為你希望從多少步開始讓 AI 在參考圖的基礎(chǔ)上使用你的 prompts 進行創(chuàng)作,那么跳過的步數(shù)越小,prompts 所占的比重就越大,跳過的步數(shù)越多,prompts 所占的比重就越小。
可以簡單理解為 init_scale 控制參考圖的模糊程度,skip_steps 控制 AI 的創(chuàng)作時間。通過這兩項參數(shù)的組合,加上參考圖的內(nèi)容,你可以相對自由的控制包括且不限于畫面的色調(diào)、布局、元素之間的關(guān)系等要素。你也可以通過在參考圖上呈現(xiàn)主次關(guān)系來指導(dǎo) AI 工作,可簡單理解為相同面積內(nèi)細節(jié)高的元素比細節(jié)低的元素更具有穩(wěn)定性,面積大的比面積小的更具有穩(wěn)定性等等,畫面占比小且細節(jié)少的元素會被做出較大的調(diào)整及變化甚至消失。
關(guān)于 width_height,也就是圖片尺寸,數(shù)值必須是64的倍數(shù),也就是 64、128、192、256、320、384、448、512、576、640、704、768、832、896、960、1024、1088、1152、1216、1280、1344、1408、1472、1536、1600、1664、1728、1792、1856、1920、1984、2048、2112、2176、2240、2304、2368、2432、2496、2560、2624、2688、2752、2816、2880 等,注意圖片尺寸越大、steps 越高,需要的顯存就越大,如果設(shè)置的過大可能會導(dǎo)致 CUDA 報錯,提示顯存已滿,需要把尺寸或 steps 改小再渲染。 如果想得到大尺寸的圖片,建議使用人工智能圖片放大工具比如 Topaz Gigapixel AI 來進行放大,會在保留細節(jié)甚至是增強細節(jié)的情況下將圖片放大,或者你可以付費升級賬戶。
關(guān)于運行狀態(tài),程序在運行過程中有可能會出現(xiàn)假死狀態(tài),表現(xiàn)為服務(wù)器狀態(tài)顯示忙碌、網(wǎng)頁最下方出現(xiàn)紅色感嘆號,計時停止,顯示已完成、5. Create the video 前方出現(xiàn)紅色感嘆號、網(wǎng)頁左下角提示無法保存、進度條消失等等,其實極有可能這時候是處于假死狀態(tài),你需要觀察預(yù)覽圖是否還在變化,如果可以觀察到預(yù)覽圖還在變化更新,說明渲染還在繼續(xù)運轉(zhuǎn),一切正常,不需要操作,等到渲染下一張圖片時有可能恢復(fù)正常,如果沒有恢復(fù),只要看到預(yù)覽圖在實時更新,就表示渲染在正常進行,因此我建議將 display_rate 設(shè)置為 5 或更低,這樣可以更快的看到畫面的變化情況。
另外,有的情況預(yù)覽圖也會消失不顯示,這時候如果你設(shè)置了 intermediate_saves 也就是保存過程圖片,可以去云盤查看 partials 文件夾內(nèi)是否有新進度的圖片出現(xiàn),如果在不顯示預(yù)覽的之后依然有新進度的圖片保存在云盤,說明渲染在正常進行。所以也建議大家都設(shè)置一下 intermediate_saves,可以設(shè)置為5或更高,越高存儲進度圖的頻率越高。
關(guān)于報錯,如果你完全按照教程操作,正常來講是不會報錯的,如果報錯了,首先有可能是網(wǎng)絡(luò)問題,其次有可能是因為參數(shù)設(shè)置問題,比如圖片尺寸設(shè)置的過大,新手建議設(shè)置參考默認(rèn)設(shè)置,變化不要太大,有些設(shè)置過大會導(dǎo)致需要更大的顯存支持,有可能會超過配給你的 GPU 限額,因而導(dǎo)致報錯。另外還有可能是 prompt 撰寫錯誤,比如填寫位置錯誤,格式錯誤等,注意把內(nèi)容放在教程內(nèi)所示的位置,并按要求填寫,使用英文并不要隨意添加符號及數(shù)字,如果要使用權(quán)重請把要增加權(quán)重的內(nèi)容在第一個描述后加上逗號,并在新的引號內(nèi)填寫新內(nèi)容及權(quán)重。
如果遇到報錯無法解決,建議點擊 代碼執(zhí)行程序 - 重新啟動并運行所有單元格,或點擊磁盤后方的小三角點擊 管理會話 - 終止會話 - 代碼執(zhí)行程序 - 全部運行,或打開 DD 原始鏈接重新復(fù)制一個文件,重新設(shè)置并運行,或嘗試重新連接網(wǎng)絡(luò)后再試。
新手請參考教程設(shè)置參數(shù),不要設(shè)置與參考值偏差較大的參數(shù),如果是非網(wǎng)絡(luò)問題導(dǎo)致的報錯,個人也找不到原因,建議重新建立文件并重新設(shè)置參數(shù)后再運行。
以上就是本教程的全部內(nèi)容了,若有其他疑問,歡迎留言。
