# 印研中心 AI 課程 * 外網 : https://retailers-cattle-critics-hiking.trycloudflare.com :::spoiler Stable Diffusion 中 latent seed 和高斯噪聲機制深度解析 ## Stable Diffusion 中 latent seed 和高斯噪聲機制深度解析 Stable Diffusion 的噪聲系統建立在深厚的數學基礎之上,其中高斯分布的選擇和 seed 控制機制是整個生成過程的核心。研究表明,不同 seed 之間的圖像品質差異可達 47%,而高斯噪聲的數學性質使其成為擴散模型的理論最優選擇。本報告將通過數學原理、技術實現和實際案例,深入解析這套精密的噪聲控制系統。 ::: ## 為什麼 Stable Diffusion 選擇高斯分布 N(0,1) :::spoiler 數學理論基礎:中央極限定理的必然性 ### 數學理論基礎:中央極限定理的必然性 高斯分布的選擇並非偶然,而是基於**中央極限定理**的必然結果。在現實世界中,噪聲通常是多個獨立隨機因素的累積效應,根據 Lyapunov 中央極限定理,這些因素的標準化總和必然收斂於高斯分布。 擴散模型的前向過程可以表示為:`q(x_t|x_{t-1}) = N(x_t; √(1-β_t)x_{t-1}, β_t I)`,這種加性噪聲結構天然符合中央極限定理的條件。 ### 熱力學平衡與最大熵原理 從統計力學角度看,高斯分布代表了**熱力學平衡狀態**。麥克斯韋-玻爾茲曼分布在調和勢場中的形式為 `ρ(x) ∝ e^(-½||x||²)`,這正是高斯分布的數學表達。 更重要的是,在固定方差約束下,高斯分布具有**最大熵**,這意味著它是「最無信息」的噪聲選擇,不會向數據中引入任何偏向性的先驗信息。 ### 計算優勢:封閉形式解的關鍵 高斯分布在線性變換下保持不變的性質提供了巨大的計算優勢: **重參數化技巧**:`x_t = √(ᾱ_t)x_0 + √(1-ᾱ_t)ε`,其中 `ε ~ N(0,I)` 這允許在任意時間步 t 直接採樣,而無需疊代所有前序步驟,將計算複雜度從 O(T) 降至 O(1)。 **變分下界的精確計算**:高斯分布之間的 KL 散度具有封閉形式: ``` KL(N(μ₁,Σ₁)||N(μ₂,Σ₂)) = ½[tr(Σ₂⁻¹Σ₁) + (μ₂-μ₁)ᵀΣ₂⁻¹(μ₂-μ₁) - k + log(det(Σ₂)/det(Σ₁))] ``` ### 與其他分布的比較 研究發現,使用 Gamma 分布或混合高斯分布可能在某些指標上略有改善,但代價是失去計算便利性。非高斯噪聲破壞了馬爾可夫結構,需要昂貴的蒙特卡羅方法,顯著增加計算成本。 均勻分布和拉普拉斯分布缺乏高斯分布的數學性質,無法提供封閉形式的後驗分布解或 KL 散度計算。 ::: ## Seed 如何控制生成的隨機性和可重現性 :::spoiler PyTorch Generator 的技術實現 ### PyTorch Generator 的技術實現 Stable Diffusion 使用 PyTorch 的 `Generator` 對象而非簡單的整數 seed 來控制隨機性: ```python generator = torch.Generator(device="cuda").manual_seed(seed_value) latents = torch.randn( (batch_size, 4, height // 8, width // 8), generator=generator, device=device, dtype=torch.float16 ) ``` 這種設計的優勢在於: - **狀態管理**:Generator 維護內部狀態,可以在使用後改變 - **管線兼容性**:多個生成階段可以共享相同的隨機狀態 - **跨設備一致性**:確保 CPU/GPU 之間的結果一致 ### 確定性噪聲生成機制 相同的 seed 產生完全相同的噪聲張量: ```python generator1 = torch.Generator(device="cuda").manual_seed(42) generator2 = torch.Generator(device="cuda").manual_seed(42) noise1 = torch.randn((1, 4, 64, 64), generator=generator1) noise2 = torch.randn((1, 4, 64, 64), generator=generator2) assert torch.equal(noise1, noise2) # True ``` ### 完整的可重現性要求 為實現跨會話的完全可重現性,需要設置額外的確定性算法: ```python torch.backends.cudnn.benchmark = False torch.use_deterministic_algorithms(True) os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":16:8" ``` 這些設置確保了硬體層面的確定性計算,避免了由於並行計算順序差異導致的微小變化。 ::: ## 不同 Seed 對最終圖像的影響:科學證據 :::spoiler "Golden Seeds" 研究的重要發現 ### "Golden Seeds" 研究的重要發現 Katherine Xu 等人的開創性研究 "Good Seed Makes a Good Crop" 提供了關於 seed 效應的定量分析: **品質差異量化**: - 最佳「黃金」seed 達到 21.60 的 FID 分數 - 最差「劣質」seed 的 FID 分數為 31.97 - **47% 的品質差異**顯示了 seed 選擇的重要性 **可預測性證明**: - 機器學習分類器能以 99.9% 的準確率預測使用的 seed - Seed 在生成圖像上留下了獨特的「指紋」 - 證明了 seed 具有一致、可識別的效應 ### 社群實驗:視覺效果的具體影響 Reddit 用戶 wonderflex 的詳細實驗揭示了 seed 對同一提示詞的戲劇性影響: **構圖和風格變化**: - Seed 8002 持續在圖像下半部分產生紅金配色方案 - 相同角色在不同 seed 下維持一致性,同時特定特徵(如面部表情)發生改變 - 證明了 seed 具有特定的「傾向性」 **實際案例**:使用「城堡,華麗,美麗,氛圍,迷霧,煙霧,火焰」提示詞: - Seed 1:自然攝影風格,金色草地 - Seed 2:不同的光照和大氣條件 - Seed 3:改變的構圖和色彩方案 ::: ## 噪聲維度 (4, 64, 64) 與圖像特徵的對應關係 :::spoiler ### VAE 潛在空間架構 `(4, 64, 64)` 張量結構代表: - **4 個通道**:從 3 通道 RGB 的潛在空間壓縮 - **64×64 空間分辨率**:從 512×512 圖像的 8 倍下採樣 (512 ÷ 8 = 64) - **48 倍壓縮**:相比原始像素空間 (3×512×512 vs 4×64×64) ### 數學對應關係 每個潛在空間元素影響最終圖像的對應關係為: ``` 最終圖像像素 (x, y) ← 受影響於 → 潛在元素 (x//8, y//8) ``` ### 不同分辨率的維度變化 - **768×512 肖像**:`(4, 96, 64)` 張量 - **512×768 風景**:`(4, 64, 96)` 張量 - **1024×1024**:`(4, 128, 128)` 張量 通用公式:`(4, height//8, width//8)` ### VAE 編碼器/解碼器過程 變分自編碼器的壓縮過程: ```python # 編碼過程(簡化) # 輸入:(3, 512, 512) RGB 圖像 # 多個下採樣層和自注意力機制 # 輸出:(8, 64, 64) 均值和方差連接 # 最終潛在表示:(4, 64, 64) 採樣後 latent = vae.encode(image).latent_dist.sample() * 0.18215 ``` ::: ## Diffusion 過程中噪聲的逐步移除機制 :::spoiler ### 反向擴散的數學基礎 去噪過程遵循反向擴散過程: ``` p_θ(x_{t-1}|x_t) = N(x_{t-1}; μ_θ(x_t,t), Σ_θ(x_t,t)) ``` U-Net 被訓練來預測噪聲分量 ε 而非直接預測去噪圖像: ``` x_{t-1} = (1/√α_t) * (x_t - (β_t/√(1-ᾱ_t)) * ε_θ(x_t,t)) + σ_t * z ``` ### U-Net 架構與噪聲預測 **編碼器路徑(下採樣)**: - 逐步下採樣的卷積塊 - 捕獲多尺度上下文信息 - 降低空間分辨率同時增加通道深度 **瓶頸層**: - 最低分辨率,最高抽象級別 - 包含注意力機制以獲得全域上下文 **解碼器路徑(上採樣)**: - 逐步上採樣的反卷積塊 - 從壓縮表示重建空間細節 **跳躍連接**: - 橋接對應的編碼-解碼層 - 保留細粒度空間信息 - 對像素級噪聲預測至關重要 ### 噪聲調度算法比較 **DDPM(去噪擴散機率模型)**: - 馬爾可夫過程,需要完整鏈條 - 需要 1000+ 步驟獲得高品質 - 隨機採樣,注入隨機噪聲 **DDIM(去噪擴散隱式模型)**: - 非馬爾可夫過程,支援快速採樣 - 確定性採樣(η=0)或半隨機(η>0) - 比 DDPM 快 10-50 倍,品質相當 **完整去噪循環實現**: ```python def denoising_loop(unet, scheduler, latents, text_embeddings, num_steps=50): scheduler.set_timesteps(num_steps) for i, timestep in enumerate(scheduler.timesteps): # 為無分類器引導擴展潛在表示 latent_model_input = torch.cat([latents] * 2) latent_model_input = scheduler.scale_model_input(latent_model_input, timestep) # 預測噪聲殘差 with torch.no_grad(): noise_pred = unet( latent_model_input, timestep, encoder_hidden_states=text_embeddings ).sample # 應用無分類器引導 noise_pred_uncond, noise_pred_text = noise_pred.chunk(2) noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond) # 計算前一個樣本 latents = scheduler.step(noise_pred, timestep, latents).prev_sample return latents ``` ### 最佳步驟數量分析 研究顯示: - **20-50 步驟**:通常足以獲得高品質結果 - **< 10 步驟**:明顯的品質下降 - **> 100 步驟**:收益遞減,可能過度細化 ::: ## 實際應用與最佳實踐 :::spoiler ### Seed 選擇策略 **使用隨機 seed (-1) 的時機**: - 初始探索和靈感收集 - 測試新提示詞或概念 - 多樣性比一致性更重要時 **使用固定 seed 的時機**: - 對喜歡的圖像進行疊代改進 - 維持角色一致性 - 測試參數效果(CFG、步驟、採樣器) - 需要品牌一致性的商業工作 ### 技術最佳化考量 **參數交互作用**: - **CFG 尺度**:較高值放大 seed 效應 - **採樣步驟**:更多步驟可能增強 seed 特定特徵 - **採樣器**:某些採樣器(如 Euler Ancestral)可能忽略 seed - **模型版本**:不同模型對同一 seed 產生不同結果 ## 結論與技術展望 Stable Diffusion 的噪聲系統體現了理論與實踐的完美結合。高斯分布 N(0,1) 的選擇基於中央極限定理、熱力學平衡和計算便利性的多重考量,而 seed 機制提供了精確的隨機性控制和可重現性保證。 **關鍵技術洞察**: 1\. **數學最優性**:高斯噪聲在理論上最適合擴散模型的數學結構 2\. **計算效率**:封閉形式解使得快速採樣和精確訓練成為可能 3\. **潛在空間優勢**:(4, 64, 64) 維度提供 48 倍壓縮,保持語義完整性 4\. **確定性控制**:PyTorch Generator 實現可重現的隨機性管理 5\. **品質影響顯著**:不同 seed 間可產生高達 47% 的品質差異 這套精密的噪聲控制系統不僅保證了生成品質,更為創作者提供了強大的控制工具。隨著擴散模型技術的持續發展,理解和掌握這些底層機制將成為高效使用 AI 生成工具的關鍵技能。 # 為什麼 CLIP Text Encoder 的輸出是 (batch, 77, 768)? CLIP 模型中的文字編碼器(Text Encoder)會將文字輸入轉換成固定大小的向量。其輸出形狀為 `(batch, 77, 768)`,以下為各維度的意義: --- ## 1. `batch` - 表示一次處理的句子數量,例如: - 輸入 4 個 prompt → batch = 4 --- ## 2. `77`(Sequence Length) - CLIP 將每個句子固定補齊到 **77 個 token**(包含特殊符號與 padding): - `[CLS]` 開頭 token(例如 `[101]`) - 使用者輸入的文字內容(例如 `"a photo of a cat"`) - `[SEP]` 結尾 token(例如 `[102]`) - 補滿的 padding token(通常為 0) > 為何是 77?這是 CLIP 訓練時設定的最大 token 長度,需統一處理維度。 --- ## 3. `768`(Embedding Size) - 表示每個 token 最終會被轉換為一個 **768 維的語意向量** - 此向量代表該 token 的語意特徵,輸出自 Transformer 模型的最後一層 - 768 是 CLIP 模型(ViT-B/32)所使用的 embedding 維度 --- ## 範例 ```python text = ["a cat", "a dog with hat"] # 假設 batch size = 2 # 經 tokenizer → padding → CLIP Text Encoder # 輸出結果為: output.shape = (2, 77, 768) ``` ::: # Prompt輸入技巧-印刷問題 :::spoiler ✅ 角色(Role) 你是「印刷知識顧問 AI」,專門協助使用者理解與應用印刷相關知識,包括但不限於材料、製程、設備、色彩管理、誤差分析與生產優化等。 ✅ 任務 / 輸出(Using Chain-of-Thought 推理) 根據使用者輸入的問題或資料(例如錯誤案例、印刷規格、流程描述),請你: 拆解需求內容 → 確認問題核心與相關參數。 結合背景知識 → 引用印刷流程、標準、常見參數或理論模型。 逐步推論(CoT)→ 明確列出可能的原因、步驟或分析邏輯。 輸出建議與結論 → 提供可執行的建議或標準化的格式輸出。 ✅ 規則(Rules) 僅使用印刷產業通用或客戶提供的知識,不臆測或引入非印刷領域術語。 優先使用「步驟拆解」(Step-by-step)格式,適合列印操作人員或工程師理解。 若輸出為技術建議,請標明參考數據來源或假設條件。 每一個回應需有明確結論(Summary)與下一步建議(Next step)。 所有專有名詞(如 RIP、CTP、SpectroDens)需附中文解釋或對應流程。 ✅ 範例(Example) 使用者輸入:「我們四色印刷時紅色偏暗,可能原因為何?」 AI 輸出: 分析現象:「紅色偏暗」表示 Magenta(洋紅)或 Yellow(黃色)未達預期濃度。 可能原因推論(CoT):  a. 油墨密度不足  b. 紙張吸墨性過強  c. 網點增大過多(dot gain)  d. 預分色設定誤差(Separation Profile 不正確) 建議檢查項目:  - 使用分光密度儀確認 M、Y 濃度值  - 查看 RIP 設定是否有偏色調整  - 檢查紙材批次是否變更 **結論:**先從油墨濃度與紙張變因檢查,若皆正常,需回溯原始圖文檔案與分色設定。 ✅ 格式要求(Format) 所有任務輸出請依下列格式回應: ``` markdown 複製 編輯 【問題描述】 (原始輸入內容簡述) 【問題拆解】 1. …(逐步拆解) 【推理分析】 - 原因一: - 原因二: - 原因三: 【建議與結論】 - 建議進行… - 若無改善,則… ``` [更詳細prompt內容](https://dream.bhuntr.com/article/chatgpt-prompt-teaching) # Prompt輸入技巧-SD提示詞 你提供的是**印刷技術顧問**的規則,與我們討論的 **Stable Diffusion 提示詞撰寫**不太相關。基於你的格式,我為你設計一個**AI 圖像生成提示詞顧問**的類似規則: ::: --- 在[chatGPT](https://chatgpt.com/)中貼上以下段落~ ## **🎨 AI 圖像生成提示詞顧問規則** ### ✅ **角色(Role)** 你是「**AI 圖像生成提示詞顧問**」,專門協助使用者優化 Stable Diffusion、Midjourney 等 AI 圖像生成工具的提示詞,包括但不限於主體描述、風格控制、品質增強、技術參數、負面提示詞優化等。 ### ✅ **任務 / 輸出(Using Chain-of-Thought 推理)** 根據使用者輸入的需求或問題(例如想要的圖像描述、風格偏好、技術問題),請你: 1. **拆解需求內容** → 確認圖像主體、風格需求、品質要求與技術參數。 2. **結合背景知識** → 引用提示詞工程技巧、模型特性、常見參數或最佳實踐。 3. **逐步推論(CoT)** → 明確列出提示詞構建邏輯、優化步驟或問題分析。 4. **輸出建議與結論** → 提供可直接使用的提示詞或標準化的優化建議。 ### ✅ **規則(Rules)** - 僅使用 AI 圖像生成領域通用或使用者提供的知識,不臆測或引入無關術語。 - 優先使用「**分層構建**」(Layer-by-layer)格式,適合各水準使用者理解。 - 若輸出為技術建議,請標明適用模型或參考依據。 - 每一個回應需有**明確的提示詞輸出**與**使用建議**。 - 所有專有名詞(如 LoRA、VAE、CFG Scale)需附中文解釋或使用說明。 ### ✅ **範例(Example)** **使用者輸入:**「我想生成一個穿和服的日本女孩,但總是不夠精緻」 **AI 輸出:** **分析現象:**「不夠精緻」通常指細節模糊、五官不清晰或服裝質感不佳。 **可能原因推論(CoT):** - a. 提示詞缺乏品質增強關鍵詞 - b. 主體描述不夠具體 - c. 負面提示詞不完整 - d. 採樣步數或 CFG 設定不當 **建議提示詞構建:** - **主體層**:beautiful Japanese girl, traditional kimono - **細節層**:detailed facial features, elegant posture, traditional obi - **品質層**:masterpiece, best quality, highly detailed, 8k resolution - **風格層**:traditional Japanese art style, soft lighting **結論:**先從基礎提示詞開始,逐層添加細節描述,配合適當的負面提示詞。 ### ✅ **格式要求(Format)** 所有任務輸出請依下列格式回應: ```markdown 【需求分析】 (使用者輸入內容簡述與核心需求識別) 【提示詞構建】 1. 主體描述:... 2. 風格定義:... 3. 品質增強:... 4. 技術參數:... 【推薦提示詞】 **正面提示詞:** (完整的英文提示詞) **負面提示詞:** (建議的負面提示詞) 【參數建議】 - 採樣方法:... - 採樣步數:... - CFG Scale:... 【使用說明與優化建議】 - 基礎使用:... - 進階調整:... - 故障排除:... ``` --- # SD 提示詞範例 正面提示詞: ``` beautiful girl, long flowing hair, gentle smile, warm sunlight, natural lighting, portrait photography, masterpiece, best quality, highly detailed, 8k resolution, professional photography, detailed facial features, soft atmosphere, perfect composition, depth of field, golden hour lighting, radiant skin, elegant pose, serene expression ``` 負面提示詞: ``` ugly, deformed, disfigured, poor face, bad anatomy, bad hands, extra fingers, missing fingers, blurry, low quality, worst quality, low resolution, watermark, signature, text, mutation, extra limbs, bad proportions, cropped, jpeg artifacts,nsfw ``` 【參數建議】 - 採樣方法:DPM++ 2M Karras(適合人像生成,效果自然) - 採樣步數:25-30 steps(平衡品質與生成時間) - CFG Scale:7-9(CFG Scale:創意自由度控制,7-9為人像推薦範圍) - 圖片尺寸:512x768 或 768x512(人像比例) ## lora:more_details 比較 選擇的模型 : majicmixRealistic_v7.safetensors :::warning 有些模型沒辦法產生Lora效果 ::: 正面提示詞: ``` aka shiba,1girl,aqua eyes,baseball cap,blonde hair,closed mouth,earrings,green background,hat,hoop earrings,jewelry,looking at viewer,shirt,short hair,simple background,solo,upper body,yellow shirt,<lora:more_details:-1>, ``` 反面提示詞: ``` EasyNegative,nsfw ``` X 軸類型 : Prompt S/R X 軸值 : <lora:more_details:-1>,<lora:more_details:0>,<lora:more_details:1>,<lora:more_details:1.5> ![image](https://hackmd.io/_uploads/HJMw-LeyWe.png) ![image](https://hackmd.io/_uploads/Hy5HbUlyWl.png) # 實務應用:設計與修改圖像 ## 圖像生成應用場景(商品設計、社群素材) * 商品包裝與樣式設計:可依據產品材質、形象關鍵字設計紋理圖、背景圖或情境圖。 ![image](https://hackmd.io/_uploads/Hkg_WYINlg.png =50%x) ``` luxury cosmetic pattern, elegant texture design, (seamless pattern:1.3), gold foil effect, marble texture, premium packaging design, sophisticated pattern, high-end beauty brand, metallic sheen, refined details, commercial design, print ready, 4k resolution, tileable pattern ``` * 社群媒體素材:如主題插圖、活動主視覺、動態背景圖、推播縮圖等,根據品牌調性快速變化多張圖像。 ![image](https://hackmd.io/_uploads/HkqdbFU4eg.png =50%x) ``` food Instagram post,restaurant social media,(appetizing food photography:1.3),mouth-watering presentation,warm lighting,food styling,(copy space for text:1.2),brand identity,social media design,mobile-friendly,food marketing,engaging visual,share-worthy content, ``` * 品牌角色(IP)形象開發 ![image](https://hackmd.io/_uploads/SyPq-KUVlg.png =50%x) ``` Highly detailed, left hand side white smoke and fog/right hand side lava fire and ashes highly cinematic, close-up image of a goddess cat over the fractal fog world, perfect composition, dark colours, green leaves, forest, lots of details, flowers, metallic ink, beautifully lit, fire and smoke, a fine art painting by drew struzan and karol bak, gothic art, dark and mysterious, in the playful scribble drawing style. triadic complementary colors, dark and moody surreal nightmare of an eerie laugh, a mouth distorted, wide grin, and full of sharp nails, in the realm of the damned dreaded souls, teal and orange color grading, yellow abstract geometric gradients stain the orangish background ``` * 空間模擬、裝飾建材展示 * ![image](https://hackmd.io/_uploads/r16FZFLEgx.png =50%x) ``` modern kitchen design, (granite countertop:1.3), black granite surface, natural stone texture, kitchen island, (realistic granite pattern:1.2), professional kitchen, culinary workspace, contemporary design, stone material showcase, luxury kitchen, commercial kitchen design, material demonstration ``` # img2img 原圖: ![yi-zhi-ke-ai-mao-rong-rong-de-mao-zi-zuo-zai-lou-ti-shang-de-jin-ju-li-hui-se-tu-pian](https://hackmd.io/_uploads/Bya10rJ1-l.jpg) # 問卷 https://forms.gle/1uC735VGHmGBaEmj8 # Google 安裝Stable diffuion https://www.youtube.com/watch?v=qN-pgCIScrw&list=PL4L5yXcAegdxwcD2RRffQntmXygv26auT # 印刷瑕疵AI辨識與 高光譜應用實務班 * 印研中心AI課-貓狗辨識 : https://colab.research.google.com/drive/1Ukl8ofFkcsb4c9pc0mTw4Qivt-PUTPE_?usp=sharing * AI瑕疵檢測 : https://colab.research.google.com/drive/1cO1c14SO1F1WQnVFoKpqphMg9y7IK83N#scrollTo=CWPGpDDuzyKP * 高光譜影像分析 : https://colab.research.google.com/drive/1PXViLMS1wPWUQOpiJMOwY14uMx64NpQe#scrollTo=oPFVMah2231-