簡介#

個人化文字轉圖像(Text-to-Image,T2I)模型是生成式 AI 最具潛力的新興應用之一。想像你對一個 T2I 模型下達提示詞:「John 坐在椅子上看書」。模型可能會生成一張某人坐著看書的圖像,但這個人大概不會長得像 John。要達成這個目標,我們需要對 T2I 模型進行個人化,讓模型學習特定主體(即 John)的外觀。

Figure 1: Personalized T2I model generating identity variations (images taken from [1])

本章探討如何開發一個個人化 T2I 模型,使其能為特定個人生成專業品質的頭像照片(Headshot)

需求釐清#

以下是候選人與面試官之間的典型互動:

候選人: 生成的頭像主要用於商業檔案(例如 LinkedIn)嗎? 面試官: 沒錯。

候選人: 我假設使用者會提供自己在不同姿勢與角度下的多張照片,且臉部清晰可見。請問需要上傳多少張? 面試官: 是的,假設 10 到 20 張。

候選人: 如果有些照片不合適,例如太暗或看不到臉,該怎麼處理? 面試官: 我們需要偵測這些情況並通知使用者提供更好的照片。

候選人: 使用者是否能指定生成圖像的特徵,例如髮型? 面試官: 為了簡化,假設不需要屬性控制。

候選人: 頭像需要什麼解析度? 面試官: 系統應支援 1024x1024 輸出。

候選人: 我可以假設從一個預訓練的通用 T2I 模型開始嗎? 面試官: 可以。

候選人: 使用者是否能提供文字提示來控制生成的頭像? 面試官: 我們傾向保持簡單,假設使用者不需要提供文字提示。

候選人: 系統應該生成多少張頭像? 面試官: 50 張。

候選人: 預期的延遲是多少? 面試官: 使用者上傳照片後,我們在圖片準備好時透過電子郵件通知。整個流程應在一小時內完成。

關鍵需求摘要:

  • 輸入: 10–20 張使用者上傳的臉部照片
  • 輸出: 50 張 1024x1024 解析度的專業頭像
  • 延遲: 一小時內(非同步處理,以電子郵件通知)
  • 使用者無需提供文字提示或屬性控制

將問題定義為 ML 任務#

我們以頭像生成作為案例研究,探討圖像生成中一個重要的面向:個人化(Personalization)。此過程將預訓練的 T2I 模型調適為能學習新主體——在本例中是使用者的臉部。

定義輸入與輸出#

  • 輸入: 使用者從不同角度與姿勢拍攝的多張臉部照片
  • 輸出: 該個人的專業頭像——高品質、多樣化且保留身份特徵

Figure 2: Input and output of a headshot generation system

選擇合適的 ML 方法#

擴散模型(Diffusion Model)在生成高細節、逼真的圖像方面表現極為出色。個人化的常見做法是以預訓練於大量圖像的 T2I 模型作為基礎模型(Base Model)

個人化預訓練 T2I 模型有兩種主要方法:

  • 基於微調的方法(Tuning-Based): 針對每個身份,使用一組參考圖像對 T2I 模型進行微調。這會將新身份整合進模型中,使其能生成多樣化的圖像同時保留身份特徵。
  • 免微調的方法(Tuning-Free): 不需要針對每個身份微調 T2I 模型。取而代之的是,將預訓練 T2I 模型與視覺編碼器(Visual Encoder)一起進行一次性微調。訓練完成後,視覺編碼器從新的參考圖像中擷取特徵並注入 T2I 模型,無需為每個身份調整內部權重即可實現個人化生成。

Figure 3: Tuning-based approach for T2I personalization

Figure 4: Tuning-free approach for T2I personalization

免微調 vs. 基於微調#

免微調方法(例如 Meta 的 Imagine Yourself [1])較為簡單,因為:

  • 只需訓練一次,且參數較少
  • 可為多個身份部署單一模型
  • 僅需一張參考圖像

然而,它也有其局限性:

  • 單一參考圖像可能無法從不同角度或表情捕捉所有臉部細節
  • 通常需要針對主體進行特殊調整(例如 [1] 使用了專門的編碼器與合成配對資料)

基於微調的方法往往能捕捉更細緻的特徵,且更具通用性,能處理人臉以外的各種主體。基於這些優勢,本章後續將聚焦於基於微調的方法。免微調方法可參考 [2][3][1]。

基於微調的個人化方法#

三種常見的基於微調的個人化方法:

  • Textual Inversion
  • DreamBooth
  • 低秩調適(Low-Rank Adaptation,LoRA)

Textual Inversion#

Textual Inversion [4] 透過引入一個代表主體的**新特殊標記(Special Token)**並學習其嵌入向量來個人化 T2I 模型。在微調過程中,只有特殊標記的嵌入向量會被更新——擴散模型、文字編碼器及其他標記的嵌入向量均保持不變。

Figure 5: Textual inversion updating only the special token embedding

微調完成後,當提示詞中包含該特殊標記時,模型就能生成該新主體的圖像。

Figure 6: Generating an image of the subject of interest

優點#

  • 高效率: 只需學習一個新的標記嵌入向量,訓練非常輕量
  • 保留原始模型能力: 擴散模型的參數保持不變
  • 極低的儲存需求: 每個個人化模型只需儲存特殊標記的嵌入向量

缺點#

  • 難以學習主體細節: 新主體僅由一個標記嵌入向量表示,限制了模型精確編碼細粒度細節的能力

Textual Inversion 雖然高效且輕量,但由於其有限的表示能力,通常難以捕捉並保留新主體的所有細節。

DreamBooth#

DreamBooth [5] 是 Google 在 2023 年提出的熱門個人化方法。與 Textual Inversion 不同,DreamBooth 在微調過程中會更新擴散模型的所有參數,使其能更有效地捕捉新主體的細節。

Figure 7: DreamBooth method updating the entire diffusion model

DreamBooth 依賴兩個關鍵技術:

  • 稀有標記識別符(Rare-Token Identifier)
  • 類別特定先驗保留損失(Class-Specific Prior Preservation Loss)

稀有標記識別符#

大多數個人化方法會選擇一個識別符來代表目標主體。Textual Inversion 創建新標記,而 DreamBooth 從現有詞彙表中選擇識別符。識別符的選擇至關重要。

常見詞或隨機識別符的問題#
  • 常見詞彙(如 “unique”、“special”)有問題,因為這些標記已有既定含義。模型必須將標記與原始含義分離並學習新含義。
  • 隨機字元序列(如 “xxy5syt00”)也有問題,因為分詞器可能將其拆解為個別字元,每個字元都有預先存在的關聯,會干擾新身份的學習。
稀有標記識別符的運作方式#

DreamBooth 透過選擇稀有標記來解決這些問題——這些標記在訓練資料中出現頻率很低。它們夠獨特,不會有強烈的先驗關聯,同時又夠完整,使分詞器將其視為單一單元。

建立識別符的逐步流程:

  1. 識別稀有標記: 透過評估標記頻率分布,找出在訓練資料中出現頻率低的標記
  2. 生成稀有標記序列: 將部分稀有標記組合成序列
  3. 形成識別符: 分詞器將標記 ID 轉換回文字形式。範例:“XyZ”、“SKS”、"[V]"

類別特定先驗保留損失#

DreamBooth 微調擴散模型的所有層。雖然這能提升圖像品質,但可能導致過擬合(Overfitting)——模型輸出的多樣性下降。例如,在特定狗的圖像上訓練後,模型可能難以生成其他狗的圖像。

為解決此問題,DreamBooth 使用類別特定先驗保留損失來維持通用的類別特徵,防止過擬合並保留生成該類別內多樣化圖像的能力。損失函數的細節將在下方訓練章節中說明。

優點#

  • 有效學習主體細節: 更新更多參數使模型能更精確地學習主體細節
  • 所需圖像較少: 由於更新整個擴散模型,所需的圖像集較小

缺點#

  • 高儲存需求: 每個主體需儲存整個擴散模型(數 GB),成本高且難以擴展
  • 資源密集: 更新整個擴散模型在訓練期間需要更多 GPU 記憶體

DreamBooth 能有效學習主體細節,但訓練與儲存成本高。Textual Inversion 高效且輕量但效果較差。LoRA 則提供了一個平衡的方案。

LoRA#

LoRA(Low-Rank Adaptation,低秩調適)由 Microsoft [6] 提出,是一種高效微調超大模型的強大方法。最初為了將大型語言模型(LLM)調適至特定任務而開發,後來被應用於 T2I 個人化。

核心動機:微調大型預訓練模型(如 GPT-3 [7])的所有參數既耗時又昂貴。LoRA 透過引入少量可訓練參數並僅更新這些參數來調適模型,大幅降低計算成本。

LoRA 的數學原理#

在典型的神經網路層中,權重矩陣 $W \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}}$ 將輸入向量 $x \in \mathbb{R}^{d_{in}}$ 轉換為輸出向量 $y \in \mathbb{R}^{d_{\text{out}}}$。

Figure 8: A fully connected neural network layer

LoRA 不直接修改 $W$,而是引入一個額外的低秩分量 $\Delta W$,表示為兩個可學習的低秩矩陣之乘積:

$$\Delta W = AB$$

其中:

  • $A \in \mathbb{R}^{d_{\text{out}} \times d_r}$
  • $B \in \mathbb{R}^{d_r \times d_{\text{in}}}$
  • $d_{\text{in}}$ 與 $d_{\text{out}}$ 分別代表輸入和輸出維度
  • $r$ 是一個小整數,代表秩(Rank),通常遠小於 $d_{\text{in}}$ 和 $d_{\text{out}}$

Figure 9: Injection of low-rank matrices

原始矩陣 $W$ 有 $d_{\text{out}} \times d_{\text{in}}$ 個參數,而低秩近似僅引入 $r \times (d_{\text{in}} + d_{\text{out}})$ 個參數。當 $r$ 值較小時,在儲存和計算上都能獲得顯著節省。

LoRA 在 T2I 個人化中的應用#

將 LoRA 應用於預訓練 T2I 模型時,我們在擴散模型中注入可訓練參數,並在微調過程中僅更新這些參數以學習新身份。這只需訓練模型中一小部分的參數,因此速度更快且更節省記憶體。

Figure 10: LoRA method injecting and learning new parameters in the diffusion model

優點#

  • 保留原始模型能力: 原始模型參數凍結不動
  • 降低記憶體與計算需求: 僅更新少量參數
  • 極低的儲存需求: 每個個人化模型只需儲存 LoRA 層(通常僅數 MB)

缺點#

  • 學習效果較弱: 僅微調少量參數限制了學習新主體的能力
  • 推論時間略增: 額外的參數與計算增加了些微開銷,但通常可忽略不計

基於微調方法的比較#

Textual InversionLoRADreamBooth
學習效果中等
儲存需求中等
訓練資源需求中等
保留原始模型能力

表 1:常見基於微調的個人化方法比較

哪種方法最適合頭像生成?#

方法的適用性取決於使用情境與系統需求。對於頭像生成,我們選擇 DreamBooth,原因有三:

  1. 更佳的身份保留: DreamBooth 在保留主體細節方面最為有效,能實現更好的身份保留
  2. 可接受的訓練時間: 根據 [5],使用 DreamBooth 微調擴散模型約需 15 分鐘——在一小時的需求下完全可接受
  3. 無需長期儲存: 生成頭像後不需要保存個人化模型,因此 DreamBooth 的高儲存成本並不構成問題

資料準備#

所需的圖像數量因方法而異。免微調方法通常只需一張圖像,而基於微調的方法(如 DreamBooth)需要約 10–20 張圖像。

由於我們使用 DreamBooth,使用者需上傳 10–20 張圖像。這些圖像可能有不同的解析度和長寬比。為了準備訓練資料,我們遵循三個步驟:

  • 圖像縮放(Image Resizing)
  • 圖像增強(Image Augmentation)
  • 通用人臉資料補充(Generic Face Data Addition)

Figure 11: Preparing data for training

圖像縮放#

擴散模型通常需要固定的輸入維度,但使用者上傳的圖像尺寸不一。我們將所有圖像縮放至適合擴散模型的統一維度

圖像增強#

T2I 模型需要大量圖像來學習物件、身份和場景等概念。在個人化場景中,我們往往缺乏大型資料集。我們使用增強技術——鏡像翻轉、輕微旋轉和縮放——來人為擴充資料集。當可用圖像數量有限時,這一步至關重要。

通用人臉資料補充#

僅使用使用者提供的圖像進行訓練可能導致模型過擬合至特定身份,並遺忘先前學到的知識。為防止此問題,我們將使用者上傳的圖像與一個更大的通用人臉資料集結合,該資料集由預訓練擴散模型以「a person sitting on a chair」等提示詞生成。

模型開發#

架構#

DreamBooth 方法對預訓練擴散模型進行微調。我們使用具有 U-Net 架構的模型,該模型預訓練為輸出 1024x1024 圖像,與第 9 章介紹的類似。架構保持不變:一系列下採樣區塊(Downsampling Blocks)接一系列上採樣區塊(Upsampling Blocks)。

訓練#

微調預訓練擴散模型的流程與從頭訓練相同:

  • 加入雜訊: 根據隨機選定的時間步(Timestep)對圖像加入雜訊
  • 條件訊號準備: 分別透過編碼器將圖像標題和時間步準備為雜訊預測的條件訊號
  • 雜訊預測: 模型使用條件訊號預測需從雜訊圖像中移除的雜訊

訓練資料#

訓練資料由兩類組成:

  • 使用者上傳的圖像: 標籤為 “An image of a [V] person”
  • 通用人臉圖像: 標籤為 “An image of a person”

ML 目標與損失函數#

個人化的核心挑戰在於確保模型既能生成通用類別(如人臉)又能生成特定個體(如某位獨特個人)的圖像。我們使用兩個損失函數:

重建損失(Reconstruction Loss)#

衡量重建圖像與特定主體實際圖像之間的差異。它幫助模型保留主體的身份特徵

類別特定先驗保留損失#

衡量生成圖像與通用人臉實際圖像之間的差異。它確保模型維持人類類別特徵,避免過擬合至特定身份。

整體損失#

整體損失為兩者的加權組合:

$$\text{Overall loss} = \alpha \times \text{reconstruction loss} + \beta \times \text{class-specific prior preservation loss}$$

  • $\alpha$ 和 $\beta$ 是超參數,控制身份保留與人類特徵保留之間的權衡
  • ML 目標是最小化整體損失,使模型在生成特定身份圖像的同時保留生成通用人臉圖像的能力

Figure 12: Overall loss calculation

取樣#

取樣流程與第 9 章討論的 T2I 生成類似,因為兩者都使用擴散模型。關鍵差異在於文字提示的提供方式。

在第 9 章中,使用者提供文字提示(如 “a cat sitting on a chair”)。而在頭像生成中,使用者不提供提示詞。取而代之的是,我們建立一組手工設計的提示詞(Hand-Engineered Prompts),描述各種專業場景,並包含訓練時使用的識別符:

  • “A professional headshot of [V] smiling in front of a plain white background.”
  • “A close-up of [V] with a neutral expression, wearing formal attire.”
  • “A headshot of [V] with soft lighting, looking slightly to the left.”
  • “A profile shot of [V] against a blurred outdoor background.”
  • “A professional headshot of [V] wearing a business suit, with a confident expression.”

建立提示詞後,我們按照標準擴散取樣步驟,為每個提示詞生成一張圖像:

  1. 生成初始隨機雜訊
  2. 透過多個步驟反覆去噪,每一步使用無分類器引導(Classifier-Free Guidance,CFG)[8] 來降低雜訊並精煉圖像細節。CFG 的回顧請參考 [8] 或第 9 章。

Figure 13: Sampling a headshot image

評估#

離線評估指標#

我們從三個面向評估個人化擴散模型的效能:

  • 文字對齊度(Text Alignment)
  • 圖像品質(Image Quality)
  • 圖像對齊度(Image Alignment)

文字對齊度#

文字對齊度指生成圖像與文字提示的匹配程度。常用指標為 CLIPScore [9],它確保圖像不僅品質高,也與輸入文字相關。

圖像品質#

我們使用 FID(Frechet Inception Distance)[10] 和 Inception Score [11] 等常見指標來衡量生成圖像的品質。

圖像對齊度#

圖像對齊度對個人化 T2I 模型特別重要。它評估生成圖像與目標主體之間的視覺相似度。例如,如果模型生成了一個特定背包的圖像,圖像對齊度衡量它與原始背包的相似程度。

常用的視覺相似度指標:

CLIP Score#

CLIP 模型 [12] 使用兩個編碼器——一個用於圖像、一個用於文字——訓練時使相關的圖像-文字配對嵌入在嵌入空間中彼此接近。

Figure 14: Image alignment calculation with CLIP

使用 CLIP 衡量圖像對齊度時,我們捨棄文字編碼器,僅使用圖像編碼器為生成圖像和真實圖像產生嵌入向量。兩者的**餘弦相似度(Cosine Similarity)**即表示視覺相似程度。分數越高,代表個人化模型生成的圖像與真實圖像越相似。

DINO Score#

DINO [13] 是 Meta 開發的自監督學習(Self-Supervised Learning)方法。它透過對比學習(Contrastive Learning)[14] 在無標註資料的情況下學習視覺表示——模型透過在嵌入空間中組織圖像來學習區分相似與不相似的圖像。

DINO 及其變體(如 DINOv2 [15])在捕捉圖像間的細粒度相似性方面特別有效。透過比較生成圖像與真實圖像的嵌入向量,DINO 可評估生成圖像與真實圖像的匹配程度。

Figure 15: Image alignment calculation with DINOv2 [15]

DINO vs. CLIP#
  • DINO 更適合圖像間的比較,因為它能捕捉細緻的視覺特徵。兩張夾克顏色不同的圖像(黃色 vs. 紅色)會因顏色差異而得到較低的 DINO 分數。
  • CLIP 更適合圖像與文字之間的比較。相同的兩張圖像如果都描繪了「一個穿夾克的人」,可能會得到較高的 CLIP 分數。
臉部相似度分數(Facial Similarity Score)#

雖然 CLIP 和 DINO 能衡量視覺相似度,但它們並非專為評估身份保留而設計。兩張不同人的臉部圖像仍可能從 CLIP 和 DINO 獲得高相似度分數。為此,我們使用人臉辨識模型(Face Recognition Model),它專門識別和衡量臉部相似度——這對個人化頭像生成至關重要。

結合 DINO、CLIP 和臉部相似度分數,能對個人化擴散模型的圖像對齊度進行全面評估。

線上評估指標#

線上評估直接衡量使用者滿意度,這對付費服務至關重要。

  • 使用者回饋: 使用者收到頭像後,以 1 到 5 分評分滿意度。高評分代表頭像達到或超出預期。
  • 付費轉換率: 從有興趣的使用者轉變為付費客戶的百分比。計算方式為:在特定時間內,新付費客戶數除以總互動使用者數(網站訪問、試用註冊、詢問等)。

整體 ML 系統設計#

生成專業頭像不僅僅需要擴散模型。我們檢視三個關鍵管線:

  • 資料管線(Data Pipeline)
  • 訓練管線(Training Pipeline)
  • 推論管線(Inference Pipeline)

資料管線#

此管線負責兩項工作:

  • 準備目標主體的圖像
  • 準備通用人臉的圖像

Figure 16: Data pipeline components

準備目標主體的圖像#

此過程評估使用者上傳的圖像,確保它們符合預定義標準,並為訓練做準備。具體而言,驗證圖像是否:

  • 角度和表情多樣化
  • 清晰且光線充足
  • 僅包含單一目標對象——使用者的臉

我們使用各種啟發式方法和 ML 模型來分析圖像。不符合標準的圖像會被拒絕,並要求使用者上傳更多圖像,以確保只有高品質圖像用於微調。

準備通用人臉圖像#

此步驟防止模型過擬合至特定主體。我們使用預訓練 T2I 模型以「a person sitting on a chair」等提示詞生成通用人臉圖像。

訓練管線#

此管線對預訓練擴散模型進行個人化。

Figure 17: Finetuning a pretrained diffusion model

推論管線#

推論管線使用個人化 T2I 模型生成頭像。三個主要元件:

  • 圖像生成器(Image Generator)
  • 品質評估服務(Quality Assessment Service)
  • 上傳服務(Uploader Service)

Figure 18: Inference pipeline components

圖像生成器#

利用個人化 T2I 模型和手工設計的文字提示詞,為每個提示詞生成一張圖像

品質評估服務#

確保生成的圖像達到身份保留標準。此服務使用預訓練的人臉辨識模型,將生成的頭像與使用者的真實照片進行比較。若生成圖像未能保留使用者的身份,則予以拒絕,並以相同文字提示但不同的初始雜訊重新生成圖像。

上傳服務#

管理生成圖像的交付。將圖像上傳至雲端儲存,供使用者下載頭像。

其他討論主題#

若面試結束前還有時間,以下是可進一步討論的主題:

  • 微調過程中防止災難性遺忘(Catastrophic Forgetting)[16]
  • 選擇稀有標記代表新主體的細節及其重要性 [5]
  • 類別特定先驗保留損失的細節 [5]
  • 解決微調後輸出多樣性下降的問題 [5]
  • 支援生成圖像的多種尺寸與長寬比 [17]
  • 免微調方法的細節,例如 Meta 的 Imagine Yourself [1]
  • 降低 Deepfake 風險以及圍繞 Deepfake 生成與偵測的倫理問題 [18]
  • 安全處理**個人可識別資訊(PII)**並確保資料隱私的 ML 技術 [19][20]

總結#

Image represents a mind map summarizing key aspects of a Generative AI system design interview.