緣起
2023 鐵人賽三十天系列的第一篇:說明為什麼選圖像生成式 AI 當主題、這三十篇要涵蓋哪些內容(從 AIGC 基礎、五大生成模型到 Stable Diffusion 實作),以及這系列適合誰讀。
30 篇 · 生成模型原理 → Stable Diffusion 實作
2023 年的 iThome 鐵人賽,作者用三十篇的篇幅把生成式 AI 的技術脈絡梳理了一遍,編排邏輯是「先懂原理、再動手」。前段回到模型本身:VAE、GAN、Pixel RNN、Flow、Diffusion、Transformer、NeRF、CLIP 依序登場,每一篇說明該模型為了解決什麼問題而出現,以及在實務上留下哪些限制。
後段轉入實作:Stable Diffusion 的安裝與基礎操作、Embedding 與 Dreambooth 的微調概念、LoRA 與 HyperNetwork 的原理差異,接著是 Civitai、HuggingFace 等資源站、基礎與進階插件、ControlNet 的條件控制、SwinIR 的影像重建,最後以 Checkpoint 與 LoRA 的訓練流程、SDXL 的演進收尾。
適合已經在玩生成式 AI、但對「為什麼這個參數有效」還想弄清楚的讀者。
2023 鐵人賽三十天系列的第一篇:說明為什麼選圖像生成式 AI 當主題、這三十篇要涵蓋哪些內容(從 AIGC 基礎、五大生成模型到 Stable Diffusion 實作),以及這系列適合誰讀。
從 ChatGPT 與 Stable Diffusion 的爆紅說起,回頭把 AIGC 講清楚:它跟 LLM 是什麼關係、由哪些技術組成、GAI 的運作模式長什麼樣,以及構成一個 AIGC 應用需要哪些要件。
承襲 LLM 的架構,AIGC 有哪些其他技術沒有的特色?這篇從定義往外延伸,談 AIGC 在文字、圖像、影音各領域的實際應用,以及背後形成的生態系,幫你先建立一張學習地圖。
延續前一篇的應用場景,這篇回頭補上脈絡:AI 模型是怎麼一路演進的、生成式 AI 的歷史上有哪些關鍵轉折,以及從 GAN 到 Diffusion 的演算法演進路線。
要講 VAE 之前,得先講 AE。這篇先回顧自編碼器的原理與稀疏、去噪等幾種常見變體,再帶到變分自編碼器的數學原理,說明它如何用潛在變數的機率分佈生成新的樣本。
生成對抗網路(GAN)由生成器與判別器互相對抗來訓練,效果驚人但參數極難調。這篇從 GAN 的基本原理講起,梳理它一路演進出的幾個關鍵變體,也會說明訓練時常見的失敗模式與調整方向。
Pixel RNN 的做法很直白:把圖像當成一串像素,用已知的像素去預測下一個相鄰像素。這篇從 RNN 的基本結構講起,說明 Pixel RNN 的架構與生成方式,再和其他生成模型比較優劣。
Normalizing Flow 是生成模型裡相對小眾的一支。這篇談它的架構怎麼做到可逆轉換、有哪些常見的 Flow 種類,以及在什麼情況下會選它而不是 GAN 或 Diffusion。
系列走到核心:DDPM 到底是什麼。這篇講清楚前向的擴散過程怎麼把高斯雜訊一層層加進圖片,反向過程又怎麼從純雜訊一步步還原出一張圖,以及背後的演算法與近期發展。
Transformer 是這幾年深度學習最大的分水嶺。這篇從它是 seq2seq 模型講起,說明 Attention 與自編碼器架構怎麼結合,再回顧近年模型演進,理解它為何成了通用骨幹。
NeRF 是一種用神經網路記住一個場景的建模方法:把場景表示成神經輻射場,就能從沒拍過的角度合成畫面。這篇說明它的演算法怎麼運作,以及它跟傳統建模比起來的特色。
CLIP 是把文字與圖像接在一起的關鍵:它會自動分類影像、用 prompt 標記,而且具備 zero-shot 能力。這篇講它的概念從何而來、演算法怎麼做到跨模態,以及能拿來做什麼。
市面上常見的 AI 生圖工具一次攤開:Midjourney、Stable Diffusion、DALL·E 2、Leonardo AI 等八款,逐一介紹特色,再依用途與上手難度比較,幫你判斷該從哪個開始。
鋪陳了十三天,終於講到系列主角:Stable Diffusion 到底怎麼運作。這篇拆解它的架構與演算法,說明它相對前面介紹過的幾種生成模型,到底強在哪裡、又犧牲了什麼。
從安裝開始手把手把 Stable Diffusion 跑起來:先確認自己的電腦配置夠不夠、該選本機還是雲端環境,再到 AUTOMATIC1111 WebUI 的安裝步驟,第一次裝就上手。
Stable Diffusion 入門的第一篇:從 WebUI 介面怎麼看、文生圖與圖生圖的參數各自在做什麼,到第一次產出可用的圖該怎麼設定,把最基礎的操作流程完整走一遍。
Embedding 又叫 Textual Inversion,做法是不動模型本身的參數,只找出一個新詞的向量表示,就讓 SD 學會新概念。這篇談它的原理、跟 LoRA 等方法的差異與實際用法。
DreamBooth 是 Google 2022 年提出的訓練方式,少量圖片就能讓模型記住特定主體。這篇說明它跟 LoRA、Embedding、HyperNetwork 的差別、訓練流程,以及實際使用的注意事項。
LoRA 是微軟 2021 年提出的微調方法:凍結原本訓練好的權重,只訓練額外加入的低秩矩陣,就能用很低成本把模型導向特定風格。這篇講它的演算法、為何有效與實際限制。
HyperNetwork 是用神經網路去生成模型參數的微調方法,由早期參與 Stable Diffusion 開發的 Novel AI 提出。這篇說明它怎麼從模型內部找出相似參數生成同風格圖片,以及跟 LoRA 的差別。
玩 SD 一定會用到的兩個模型站:Civitai 與 HuggingFace。這篇說明兩邊各自擅長什麼、怎麼挑選與下載模型,以及一個容易踩的坑:SD XL 要搭配對應的 LoRA 才會生效。
SD 本體功能有限,外掛才是生產力來源。這篇先介紹三個基礎插件:Image Browsing 把生成結果整理成可搜尋圖庫、Prompt all in one 統一管理提示詞、Translation 負責中翻英。
接著介紹三個進階插件:ControlNet 用邊緣與姿勢控制人物姿態、After Detailer 自動補修臉部與手部細節、Civitai Browser Plus 直接在介面裡瀏覽與下載模型。
ControlNet 讓圖像生成從「抽卡」變成「指定」:只要給一張骨架圖、深度圖或線稿,就能控制畫面構圖。這篇說明它的原理、演算法與實際特色,最後再補幾個同場加映的應用場合。
SwinIR 是把模糊圖放大的重建演算法,它把卷積神經網路與 Swin Transformer 的長處結合在一起。這篇說明它的架構怎麼運作、為何效果比傳統超解析度好,以及實際使用的限制。
會用基本功能之後,這篇把進階操作需要的套件整理成一張清單:每個套件在做什麼、怎麼安裝、實際怎麼用,最後串成一套能重複使用的工作流程,省掉每次重新摸索的時間成本。
想讓 SD 徹底學會一種風格,就得訓練自己的 Checkpoint。這篇整理目前常見的訓練方法、HuggingFace 上可用的資源與指令,以及實際訓練 Checkpoint 的步驟與注意事項。
LoRA 是微調 SD 最實用的方式,但 WebUI 本身沒有提供訓練功能,所以得另外準備。這篇比較目前兩種常見的訓練途徑,再走一遍實際的訓練流程與每一步的設定項目。
SD XL 並不是單純換模型:更大的網路架構帶來畫質與細節的提升,同時也改變了幾件事。這篇說明它改良的三個方向、演算法上的差異,以及實際使用時真正要留意的地方。
三十天系列的最終篇,把整趟路重看一遍:從 AIGC 的定義出發,回顧理論篇的五大生成模型與 Stable Diffusion,再整理應用篇玩過的工具與技巧,收成一張完整學習地圖。