close

Cover.png

最近「AI」的議題非常的火紅,去年 11 月 ChatGPT 橫空出世,徹底顛覆以往人類對「人工智慧」的認知。我是這麼跟就讀高二的外甥女介紹 ChatGPT 的:請她打開高中數學課本,隨便找一條數學選擇題,將題目直接輸入到 ChatGPT 裡,過了幾秒鐘之後 ChatGPT 開始回答,一行一行清楚寫出解題步驟,最後還以人類的自然語法唸出來「所以這一題的答案是 A、C、 D」,標準答案完全正確,真的是「讓在場所有人全都驚呆了」,短短最近這一兩個月,「AI 」話題的熱度可說是與日俱增,發展的速度簡直跟火箭升空一樣,速度快到有點讓人跟不上,幾乎每隔幾天就可以聽到「AI」有甚麼樣新技術或是新應用。

而在「AI 繪圖」這個領域也很精彩,目前最知名的 AI 繪圖工具「Midjourney AI]僅須透過「提詞(Prompt)」描述的方式,隨隨便便就能產出超精細質感的大師級繪作。然而「Midjourney AI」服務可不是免費的,每個帳號只有 25 張圖的免費額度,如果把它當娛樂來玩,累積起來也是一筆不少的開支。另一套 AI 繪圖工具「Stable-Diffusion」則是完全的開源且免費,不過提到「開源」則意味著必須自己 DIY 建置起來才能使用,對一般用戶來說依然是有門檻的。後來 Stable-Diffusion 出了一套 Webui 管理工具,讓安裝建置工作的門檻大幅降低,網路上各種教學影片也多到不勝枚舉。

然而 Stable-Diffusion 一開始是建立在 NVidia 的 CUDA 生態圈裡,要使用 Stable-Diffusion 最基本前提是要有一張 NVidia 10+ 系顯卡,並且 VRAM 是越大越好。目前市面上跑 Stable-Diffusion 最佳 CP 的 N 卡為 RTX 3060 12G 礦卡,差不多是全新價的 5 折,台幣六千出頭,再上去就是 RTX 3080 12G/3090 24G 或 4070 Ti 12G 以上等級的顯示卡,隨便一張就是好幾個萬。對於非 N 系顯卡的用戶的支援才剛起步,相關資源和資訊還不夠普遍。作為一個長期黑蘋果的用戶,近年來獨立顯卡始終僅有 A 系可選,想要玩 Stable-Diffusion-Webui 還是有那麼一點點不方便,網路上也比較少見 A 卡運作 Stable-Diffusion-Webu 的相關資源,所以就開一篇文簡單紀錄一下。

由於 Stable-Diffusion-Webui 的教學超級多,所以這篇文章不會特別描述安裝步驟,僅會要點提出一般教學中較少提到的部分。

Stable-Diffusion-Webui 軟硬體限制

Stable-Diffusion-Webui (以下簡稱 SD-WebUI)在官網 Wiki 並沒有特別描述它的軟硬硬體限制,僅說到建議使用 Windows 10+ 和 N 卡,可能或許和 SD-WebUI 團隊仍在努力擴大相容度支援有關,目前也支援了 macOS 和 Linux 環境。現階段根據我個人實測經驗以及從網路上蒐來的資訊,發現 CPU 不能太老舊,已知某些功能會用到 AVX2 ,所以至少要 Intel 4th gen 以上,因此黑蘋果二號機應該是出局了。我嘗試了一下,二號機搭配 GeForce GTX 780 最多只能在 Linux 的環境下,產出模糊不清且超級醜的小圖。至於 RAM 的部分,從網路上分享的資訊來看,16GB 是最低標,建議 32GB 以上。

以黑蘋果三號機為例,硬體是 Intel i7-10700K + DDR4-64GB + AMD VEGA 56 (8G HMB),嘗試了各種安裝方式,目前最好的結果是 Windows 10 環境使用這個 AMD GPU 專用分支 進行安裝(教學)。實測結果最基本的 512x512 20 Steps 算圖,差不多約 15 秒,不過參數往上調就很容易爆 VRAM,就算加上 --lowvram 啟動參數也還是有機率爆 VRAM,速度也會慢到一張圖跑一分多鐘。雖然 Stable-Diffusion-Webui 在 Linux 和 macOS 的確也能運作,但目前 AMD GPU 在這兩個環境下不起作用,算圖速度會慢到懷疑人生,不建議使用。綜合來說,A 卡跑 Stable-Diffusion-Webui 只能達到嘗鮮的體驗。至於筆電的部分,HP Probook 430 G2 也試跑了一下, 也是慢到懷疑人生,沒有獨顯的筆電也就放過它吧!

因此以我個人為 A 卡用戶經驗來說,CPU 不能太舊,32GB 以上 RAM,AMD 顯卡 >=8G VRAM ,這些條件似乎是低標了,所以門檻其實也不小。現階段最佳解還是 Windows 10+ ,其他的作業環境也不推薦。至於 Apple Silicon 怎麼運作 SD-Web 我就真的不知道了,至今在各大 AI 繪圖論壇上,還沒看過有人討論。

Stable-Diffusion-Webui 安裝方式

安裝方式相當的容易。由於建議的作業系統是 Windows 10+,所以要另外安裝 Windows 版 Git 和 Python

  • Git:一直下一步就行了。
  • Python:至少要 3.10.6 以上的版本,現階段也不建議 3.11。至於安裝 Python 時,有個「Add to PATH」項目要打勾,其他也都是持續下一步就行了。

Git for Windows.png

Python_1.jpg

Python_2.jpg

接著使用 Git 下載 Stable-Diffusion-Webui。N 卡以及沒有獨立顯示卡的用戶都是 Git 下載 AUTOMATIC1111/stable-diffusion-webui 這個版本。而 AMD GPU 用戶則是用 Git 下載 lshqqytiger/stable-diffusion-webui-directml 這個版本。

要注意的是,Windows 10 環境下安裝 Stable-Diffusion-Webui 時,不要安裝在 exFAT 的分割區上,否則後續會跑出一堆與 Git 相關的錯誤訊息。

Git Bash.png

Git AMD Version_1.png

git 下載完之後之後,還要 cd 到 stable-diffusion-webui-directml 目錄中,再執行 git submodule update --init --recursive。

Git AMD Version_2.png

也就是說,A 卡用的安裝方法也都大同小異,除了來源不一樣之外,也只多了一條 git submodule update --init --recursive 指令。

AMD GPU 啟動執行 SD-Web

先用筆記本打開 stable-diffusion-webui-directml 目錄下的 webui-user.bat,COMMANDLINE_ARGS= 加入 --precision full --no-half --no-half-vae --opt-sub-quad-attention 。由於這個 AMD GPU 專用分支是特別編譯過的,所以不用加上 --skip-torch-cuda-test 參數,加了反而會出現錯誤。

然後,開啟檔案總管,直接點擊 stable-diffusion-webui-directml 目錄下的 webui-user.bat,第一次執行的時候它會自動安裝其他必須的相依套件,所須時間取決於網路速度和個人電腦的等級,大約要十分鐘或更久。如果一切都沒問題的話,最後會出現一個 No module named "fastapi" ,此時可以按 Ctrl+C 離開。再執行一次 webui-user.bat,則會說找不到 checkpoint,提示你要把 .ckpt 或 .safetensors 檔案放到 stable-diffusion-webui-directml\models\Stable-diffusion 目錄下。

Needed ckpt model.png

做到這一步,Stable-Deffusion-Webui 就算是初步安裝完成了。

下載模型

由於 Stable-Deffusion-Webui 是 AI 繪圖的平台,必須依賴已經訓練好的模型才能運作。不同的模型,AI 繪畫的風格也都完全不同。huggingface.co 這個網站支援 Github 的延伸功能,特點是支援超級大檔案的儲存管理,因此也是海量模型最佳的存放管理平台。

先以近期動漫風格 AI 繪圖最熱門的 Anything 模型為例,目前最新的版本已經到 v4.0 / v4.5 版,其實每個版本的風格也都不一樣。版本沒有特別的優劣之分。先到 Anything V4.0 的網站上看看:

Anything_website.jpg

不同的模型會有不同的特點跟用法,以及可能觸及到的法律規範、版權等等,通常都會在 Model Card 這個頁面宣告。在下載每個模型之前,一定要先閱讀模型的 Model Card 的內容,確認使用上有無特殊條件、但書事項等等。

閱讀完了 Model Card,切換到 Files 這頁,先下載 anything-v4.0.ckpt 與 anything-v4.0.vae.pt 這兩個檔案。anything-v4.0.ckpt 是 checkpoint 格式的模型檔,而 anything-v4.0.vae.pt 是對應該模型的 VAE,用法後續會說到。

模型的檔案都很大,動不動就幾 GB,所以硬碟空間最好是留個 20G 以上來安裝 Stable-Diffusion-Webui。下載後記得一定要檢查  SHA256 的值是否和網站上的相同,一旦檔案有毀損也是不能用。下載的這兩個檔案,一併放到電腦上的 stable-diffusion-webui-directml\models\Stable-diffusion 目錄下。.ckpt 與 .vae.pt 如果是相同的主檔名,且放在同一個目錄下,那麼 Stable-Deffusion-Webui 會自動一併載入。

ckpt hash.png

Models_Dir.png

再執行 webui-user.bat ,一切都沒問題的話,最後會出現一個網址

Launch.png

不要把這個終端視窗關掉。這時候開啟瀏覽器,輸入這個網址,Stable-Diffusion-Webui 就開始運作了。畫面如下:

sd-web-main.png

畫面有各種大大小小的欄位與參數。主要的是「提詞(Prompt)」和「反向提詞 (Negative prompt)」這兩個,可以根據我們希望呈現的圖片內容任意輸入描述型的英文詞彙,想看到的填入 Prompt,不想看到的填入 Negative prompt。通常描述得越多就越接近自己預想的畫面,沒有描述到的部分,AI 就會依照模型風格自行補完。(參考:動漫提詞快速生成工具)

開始第一張 AI 繪圖

一開始先不要去更動介面上任何的滑動參數。首先在 txt2img 頁籤中的 Prompt 欄位輸入 1girl,接著按右邊大大的 Generate 按鈕,可以看到剛剛的終端機視窗就開始跑進度了。以黑蘋果三號機的 i7-10700K + 64MB RAM + AMD VEGA 56 來說,在所有參數都預設的情況下,一張圖需要 14 秒產出。

FirstAI.png

每次按 Generate 每次都有不同的結果,這是因為在提詞(Prompt)所下的提示 1girl 太攏統了,底下 seed 的欄位 -1 表示是隨機產生,所以每次都是隨機畫一張 girl 。如果把 seed 值固定之後,會發現結果也都一樣。在不改變 seed 值的情況下,如果提詞改了,或是改了 Sampling 的值,或是稍稍改變圖片的尺寸比例,或是稍稍改變 CFG Scale ,就會發現結果也會有不同程度的改變。而每一張圖的下方也都會顯示使用的各種變量、參數、模型等內容。所有產出的圖片都在 stable-diffusion-webui-directml\outputs 目錄下。

當然了,參數的變化也會影響出圖的時間,尺寸越大越會消耗顯示卡的 VRAM 記憶體。當玩出心得之後想要出一張高清大圖,把 Size 長寬調大,或是勾選 Hires.fix 進行放大演算,很快就會發現 A 卡的 8 GB VRAM 很容易不夠用。根據官網的建議,webui-user.bat 內 COMMANDLINE_ARGS 再加上 --medvram 就可以使用更少的記憶體,不過出圖的速度會倍速的變慢。如果再不夠,則改為 --lowvram,會使用最少的 VRAM 但速度更加倍的變慢。

能做到這裏的話,也只是 AI 繪圖的敲門磚,後面有海量的 AI 知識技巧。這部分的細節就不再著墨了,不然永遠寫不完。

Extra Network 的應用

在 Generate 按鈕下方有一排功能鍵,有個紅色的 Extra Network 按鈕,按下去之後會出現一個區塊。

Extra_Network.jpg

其中 Textual Inversion 對應的是 stable-diffusion-webui-directml/embeddings 目錄,Checkpoints 對應 stable-diffusion-webui-directml/models/Stable-diffusion 目錄,Lora 對應 stable-diffusion-webui-directml/models/Lora 目錄。當對應的目錄底下有相關檔案時,檔案的項目就會顯示在該頁籤中。

  • Textual Inversion(embeddings):副檔名 .pt,語言模型的一種,可視為提詞文本的集合。
  • Checkpoints:顧名思義,就是訓練完成的模型欓。
  • Lora:Lora 模型檔。

例如下載 ulzzang-6500.pt 檔案之後放在對應的 embeddings 目錄下時,切換到 Textual Inversion 就會顯示一個 ulzzang-6500 項目方塊。點擊該項目方塊時,提詞欄位(或是反向提詞欄位)就會跑出 ulzzang-6500 。這個是什麼意思呢?有人把某一類提詞訓練成 ulzzang-6500.pt 這個檔案,(反向)提詞出現 ulzzang-6500 時,AI 繪圖就會觸發使用這組提詞,省去打一大串提詞的功夫。至於 ulzzang-6500 到底是那些提詞?就我個人的嘗試後,畫出來的人都有一定相似的特徵,是韓系偶像那一類的風格(Ulzzang),差不多都是鵝蛋臉型,大眼,白皙透紅皮膚,淺色染髮:

00017-1512004616.png

以此類推,Lora 目錄放入對應的模型檔案之後,點擊該項目,提詞就會出現 <lora:xxxxx:ff>。Lora 模型的用法後面會提到。

每個項目可以指定一張 Preview 封面,用戶就可以比較清楚知道這個項目到底有什麼功能,用檔案總管選一張圖拖曳到該項目上就行了。

VAE 的使用

上面提到的 anything-v4.0 模型有官方自帶的 VAE 修正檔,只需兩者都相同主檔名,且放在同一目錄下,SD-WebUI 在載入 .ckpt 時就會一併自動載入對應的 VAE 檔。VAE 的中文稱為[變分自動分碼器],可視為模型的修正設定檔,差不多就是濾鏡,畫質顏色修正的作用。

有些模型並沒有搭配專屬的 VAE 修正,跑出來的圖常有顏色灰淡,畫質較差的情況(討論)。需要修正的話,可以下載使用別人做好的 VAE 檔。例如多人推薦的 sd-vae-ft-mse-original/vae-ft-mse-840000-ema-pruned.ckpt,可說是許多模型的萬用丹,如果某個模型畫出來的顏色灰暗平淡,低對比,質感不佳,只要套用這個 VAE 多半都能解決。下載後放到 stable-diffusion-webui-directml\models\VAE 底下,接著在 SD-WebUI 的 Settings 頁籤內 Stable Diffusion 這一頁,下拉選擇剛下載 VAE 檔,儲存設定即可。

Stable-Diffusion-Webui 的外掛(Extensions)

SD-Webui 也能裝外掛,會讓 SD-Webui 更好用。覺得好用的外掛如下:

  • 中文化:由於不少中文教學網站都以中文參數來描述,所以可以適時的中文化。
  • 相簿:產出的一堆圖要找起來很累人,用了相簿就方便管理。
  • ControlNet:這是最近一個月內橫空出世,很夯的 SD-WebUI 外掛。後面介紹。

安裝上述外掛的方式很簡單。切換到 Extensions 頁籤,點擊 Install from URL ,輸入外掛的 Git 網址,按 Install 安裝。

Exten_1.jpg

接著切換到 Installed ,點擊 Apply and restart UI 生效即可。

Exten_2.jpg

不同的外掛有不同的使用方式,以相簿和 ControlNet 來說,Apply and restart UI 之後,操作介面就會多出頁籤和相關項目。而中文化就必須到 Settings 頁籤,選擇 User Interface,捲到最下方 Localization 下拉選擇。

Exten_3.jpg

如果想知道還有哪些 Extensions 可以使用的話,Extensions 頁籤 - Available 項目,點擊 Load From: 按鈕,就會有一拖拉庫的 Extensions 可以安裝了。

ControlNet 的用法

這個外掛也需要額外下載模型才能運作,它的作用是在原本的 txt2img/img2img 基礎上,再提供其他方式的描述作圖方法。這裡有圖文並茂的說明,以下用 User Scribbles 為例。

首先先到這裡下載所需要的模型,以 User Scribbles 為例,只需下載 control_sd15_scribble.pth 即可。下載後用檔案總管將模型放到 extensions\sd-webui-controlnet\models 底下。之後回到 SD-Web 介面。

在 txt2img 頁籤中點開 ControlNet 右邊的三角形,勾選 Enable,Proprocessor 選擇 scribble,Model 選擇剛剛下載的 control_sd15_scribble.pth ,image 的部分挑一張用筆畫出來的線稿。(這張烏龜線稿,是多年前某朋友在海外旅遊時寄明信片給我,在明信片上隨手塗鴉的作品)

Scribble.png

回到 txt2img 的部分,模型選擇 Anything v4.5,Prompt (提詞)輸入 masterpiece, best quality,  a happy turtle,Negative Prompt (反向提詞)輸入 bad quality, low quality, crop, girl,  2 head。意思是告訴 AI 說我們需要一張大師級的畫作,最高品質的,內容是一隻快樂的烏龜,不想看到低品質,主題裁切,出現兩個頭,並提供線稿參考,請 AI 依照這些條件幫我們作畫。

於是 AI 就畫出了這張:

0001.png

AI 實在是太驚人了。換言之用線稿的方式,隨隨便便也能產出心目中想要的作品。

以此類推,openpose 的方法是用一張照片讓 AI 辨識照片中人物的姿勢,再根據提詞產生對應的畫作。

20090629-IMG_0383.jpg

00086-2887147365.png

如此就可以讓 AI 的成品更接近原始想法,並加入希望添加的新元素。不得不感嘆強大的 AI 時代已經來臨了。

而 ControlNet 最近更新速度頻繁,每隔幾天就會出現好用的新功能,例如這兩天又新增多組 ConteolNet 混合功能,這幾天 openpose 還出現了編輯器,進步的速度快到有點跟不上。

Lora 網路

這邊再簡單介紹一個我個人覺得最驚訝的 AI,如何產生出以假亂真的台灣美女人像。

首先到這裡下載 Chilloutmix.safetensors (請務必閱讀 Model Card 的注意事項),放到 stable-diffusion-webui-directml\models\Stable-diffusion 底下。再到這個網址(裡面包含大量的提詞範例和成果),下載 taiwanDollLikeness_v10.safetensors,放到 stable-diffusion-webui-directml\models\LORA 底下。

根據 taiwanDollLikeness_v10 這個 LORA 模型的說明,它是建立在 Chilloutmix 這個模型之上,所以模型的部分必須選擇 Chilloutmix.safetensors 才會有最正確的效果。在 txt2img 的題詞(Prompt)加入<lora:taiwanDollLikeness_v10:ff> 就可以使用 taiwanDollLikeness_v10 這個模型了。

Lora.jpg

參考各種範例,產出了一大堆假亂真的美女圖,成果真的是非常驚人(底下其中一張還算到漏點了...❤️)。當然失敗的更多,大約 10 張才能產出一張符合人類審美觀的,不過這樣就夠了。

00022-1512004616.png

00051-1033243498.png

00028-1512004616.png

00076-1033243498.png

畢竟這些圖像模型都是經由訓練而來,相信這些女孩的本尊應該是真實存在,但是透過 Google 我搜不到本尊是誰,這是一件很可怕的事...如果有心人士刻意訓練特定人物的肖像,後續恐怕會衍伸出很多問題。

另一種使用 Lora 方法是安裝 Additional Network Extensions 外掛(安裝網址)。安裝完之後,用檔案總管把下載的 lora 模型放到 stable-diffusion-webui-directml\extensions\sd-webui-additional-networks\models\lora 底下。重新載入 WebUI 之後,會出現 Additional Networks,剛剛放進去的 Lora 模型也會在下拉清單中(如果沒有,可能要重新啟動 SD-WebUI)。

使用 Additional Network 載入 Lora 模型,理論上會與 Prompt 內寫入 <lora:xxxxx:ff> 的意思相當,只是有介面可以調整比較直觀,操作起來相對方便。但是介面只提供 5 個 Lora 模型一起混用,還不如使用 Extra Network 的方式點選加入 Prompt,有多少 Lora 模型就混多少。

Addition_Network.jpg

結語

短短的幾個月時間就親眼見證 AI 帶來的震撼,真是覺得一則以喜,一則以憂。喜的是覺得自己正在親檢見證歷史的時刻,AI 大爆發極可能就像 19 世紀的工業革命那樣,科技突飛猛進的進步,帶來更進步的文明生活,憂的是 AI 將在不久的未來淘汰掉一些傳統工作者,甚至還有一種悲觀的想法:AI 取代人類的可能性大幅增加了,以及即將帶給人類社會的法律道德衝擊、新型態的犯罪手法等等,例如以 AI 工具大量製造難辨真偽的虛假訊息、影像等,進行詐欺或是詆毀人格等等。除了要開始學習善用 AI 工具之外,也要更小心各種 AI 可能帶來的危機。

補充

寫完這篇之後沒多久,我就以六千多元上網買了一張 N 家 RTX-3060 12G 的礦卡來玩玩看了。果然不負最佳 CP 的名號,521x512 20 Steps 只需 7~10 秒出圖,加上 LoRa + ControlNet Openpose + 1.25x HiRes 也差不多一分鐘左右就能出圖,在原生小於1024 的圖也不太常遇到 VRAM 爆掉的情況。RTX-3060 12G 在執行 Stable-Diffusion-WebUI 這個項目和 VEGA56 相比,實在好用太多了,所以如果真的想玩 Stable-Diffusion-WebUI 的話,應該按照官方的建議去弄一張 10+ 的 N 卡才對,別在 A 卡或是 Apple Silicon 花太多時間精神瞎折騰了。

arrow
arrow

    benjenq 發表在 痞客邦 留言(0) 人氣()