最近「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 下載 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 下載完之後之後,還要 cd 到 stable-diffusion-webui-directml 目錄中,再執行 git submodule update --init --recursive。
也就是說,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 目錄下。
做到這一步,Stable-Deffusion-Webui 就算是初步安裝完成了。
下載模型
由於 Stable-Deffusion-Webui 是 AI 繪圖的平台,必須依賴已經訓練好的模型才能運作。不同的模型,AI 繪畫的風格也都完全不同。huggingface.co 這個網站支援 Github 的延伸功能,特點是支援超級大檔案的儲存管理,因此也是海量模型最佳的存放管理平台。
先以近期動漫風格 AI 繪圖最熱門的 Anything 模型為例,目前最新的版本已經到 v4.0 / v4.5 版,其實每個版本的風格也都不一樣。版本沒有特別的優劣之分。先到 Anything V4.0 的網站上看看:
不同的模型會有不同的特點跟用法,以及可能觸及到的法律規範、版權等等,通常都會在 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 會自動一併載入。
再執行 webui-user.bat ,一切都沒問題的話,最後會出現一個網址
不要把這個終端視窗關掉。這時候開啟瀏覽器,輸入這個網址,Stable-Diffusion-Webui 就開始運作了。畫面如下:
畫面有各種大大小小的欄位與參數。主要的是「提詞(Prompt)」和「反向提詞 (Negative prompt)」這兩個,可以根據我們希望呈現的圖片內容任意輸入描述型的英文詞彙,想看到的填入 Prompt,不想看到的填入 Negative prompt。通常描述得越多就越接近自己預想的畫面,沒有描述到的部分,AI 就會依照模型風格自行補完。(參考:動漫提詞快速生成工具)
開始第一張 AI 繪圖
一開始先不要去更動介面上任何的滑動參數。首先在 txt2img 頁籤中的 Prompt 欄位輸入 1girl,接著按右邊大大的 Generate 按鈕,可以看到剛剛的終端機視窗就開始跑進度了。以黑蘋果三號機的 i7-10700K + 64MB RAM + AMD VEGA 56 來說,在所有參數都預設的情況下,一張圖需要 14 秒產出。
每次按 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 按鈕,按下去之後會出現一個區塊。
其中 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),差不多都是鵝蛋臉型,大眼,白皙透紅皮膚,淺色染髮:
以此類推,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 安裝。
接著切換到 Installed ,點擊 Apply and restart UI 生效即可。
不同的外掛有不同的使用方式,以相簿和 ControlNet 來說,Apply and restart UI 之後,操作介面就會多出頁籤和相關項目。而中文化就必須到 Settings 頁籤,選擇 User Interface,捲到最下方 Localization 下拉選擇。
如果想知道還有哪些 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 的部分挑一張用筆畫出來的線稿。(這張烏龜線稿,是多年前某朋友在海外旅遊時寄明信片給我,在明信片上隨手塗鴉的作品)
回到 txt2img 的部分,模型選擇 Anything v4.5,Prompt (提詞)輸入 masterpiece, best quality, a happy turtle,Negative Prompt (反向提詞)輸入 bad quality, low quality, crop, girl, 2 head。意思是告訴 AI 說我們需要一張大師級的畫作,最高品質的,內容是一隻快樂的烏龜,不想看到低品質,主題裁切,出現兩個頭,並提供線稿參考,請 AI 依照這些條件幫我們作畫。
於是 AI 就畫出了這張:
AI 實在是太驚人了。換言之用線稿的方式,隨隨便便也能產出心目中想要的作品。
以此類推,openpose 的方法是用一張照片讓 AI 辨識照片中人物的姿勢,再根據提詞產生對應的畫作。
如此就可以讓 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 這個模型了。
參考各種範例,產出了一大堆假亂真的美女圖,成果真的是非常驚人(底下其中一張還算到漏點了...❤️)。當然失敗的更多,大約 10 張才能產出一張符合人類審美觀的,不過這樣就夠了。
畢竟這些圖像模型都是經由訓練而來,相信這些女孩的本尊應該是真實存在,但是透過 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 模型就混多少。
結語
短短的幾個月時間就親眼見證 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 花太多時間精神瞎折騰了。
留言列表