StoryDiffusion 是南開大學與字節跳動的一項研究專案,針對生成式 AI 中最困難的問題之一:在長序列影像與影片中維持視覺一致性。作為一項重要的研究貢獻,它引入了一種新穎的**一致性自注意力(CSA)**機制,使擴散模型能夠生成連貫的漫畫條、動畫和影片——全部無需微調或逐序列訓練。
StoryDiffusion 所解決的核心挑戰說起來簡單但極難解決:如何生成一系列影像,讓同一個角色在每一幀中看起來完全一致?先前的擴散模型可以產生令人驚豔的單張影像,但當要求生成多格漫畫或影片片段時,角色會在幀之間微妙地改變外觀——不同的鼻子形狀、改變的服裝、轉變的背景風格。
StoryDiffusion 的 CSA 機制透過將自注意力計算擴展到整個生成影像序列(而非在每個影像內獨立計算注意力)來解決此問題。結果是一種無需訓練的方法,可與現有預訓練擴散模型配合使用,並透過滑動視窗技術擴展到任意長度的序列。
一致性自注意力是如何運作的?
flowchart LR
A[每幀輸入文字\n提示] --> B[預訓練\n擴散模型]
B --> C{標準\n自注意力}
C --> D[幀 1\n無其他幀\n的上下文]
C --> E[幀 2\n無其他幀\n的上下文]
C --> F[幀 n\n無其他幀\n的上下文]
A --> G[預訓練\n擴散模型]
G --> H{一致性\n自注意力}
H --> I[幀 1\n共享上下文\n跨所有幀]
H --> J[幀 2\n共享上下文\n跨所有幀]
H --> K[幀 n\n共享上下文\n跨所有幀]
subgraph 無 CSA
D --> L[不一致的\n角色]
E --> M[風格漂移]
F --> N[身份遺失]
end
subgraph 有 CSA
I --> O[一致的\n角色]
J --> P[穩定的風格]
K --> Q[保留的身份]
end在標準擴散模型中,每個影像是獨立生成的。自注意力在單張影像內計算像素間的關係,因此一個生成幀無法「知道」另一個生成幀。StoryDiffusion 透過修改自注意力層使其在整個序列上運作來改變這一點:
- 跨幀注意力:自注意力層中的鍵和值矩陣由序列中的所有幀構成,而不僅僅是目前幀。這意味著每個像素的注意力計算會考慮其他所有幀的像素。
- 滑動視窗擴展:對於非常長的序列(數百幀),滑動視窗方法將注意力限制在相鄰幀,平衡一致性與計算成本。
- 無需訓練整合:CSA 透過對注意力層進行架構修改,注入現有的預訓練擴散模型,無需額外訓練或微調。
StoryDiffusion 的主要功能有哪些?
| 功能 | 描述 | 輸出品質 |
|---|---|---|
| 漫畫條生成 | 角色與風格一致的多格漫畫 | 高——10+ 格仍保持角色身份 |
| 影片生成 | 流暢幀間過渡的時間序列 | 高——極少閃爍,外觀一致 |
| 風格一致批次 | 共享相同藝術風格的多張影像 | 極高——任意批次大小的風格鎖定 |
| 角色互動 | 多個角色在單一一致場景中互動 | 高——每個角色保持獨特身份 |
| 長序列擴展 | 100+ 幀的序列搭配滑動視窗 | 中高——極長長度時略有品質下降 |
StoryDiffusion 與其他方法比較
| 方法 | 需要訓練 | 一致性 | 序列長度 | 推論速度 |
|---|---|---|---|---|
| StoryDiffusion (CSA) | 否(無需訓練) | 高 | 任意(滑動視窗) | 快(無需重新訓練) |
| 微調角色模型 | 需要,每個角色 | 極高 | 受限於訓練資料 | 中等 |
| IP-Adapter | 輕量微調 | 中等 | 任意 | 快 |
| 逐幀 SD | 否 | 低 | 任意 | 快 |
| 影片擴散模型 | 需要,大規模 | 高 | 固定長度 | 慢 |
StoryDiffusion 的關鍵優勢在於實現了無需訓練的一致性——你可以生成從未在訓練資料中出現過的角色 20 頁漫畫,無需任何微調或額外模型訓練。
StoryDiffusion 能生成哪些類型的內容?
漫畫條生成
StoryDiffusion 擅長多格漫畫生成。使用者提供描述每格的文字提示序列,系統生成完整的漫畫條,角色在整個過程中保持身份。
graph TD
A[格 1 提示:\n年輕巫師\n施法中] --> B[格 2 提示:\n巫師\n召喚護盾]
B --> C[格 3 提示:\n巫師\n面對巨龍]
C --> D[格 4 提示:\n巫師\n勝利]
A -.->|CSA| B
B -.->|CSA| C
C -.->|CSA| D
style A fill:#e1f5fe
style B fill:#e1f5fe
style C fill:#e1f5fe
style D fill:#e1f5fe虛線箭頭代表一致性自注意力連接。每格的生成都知道其他格的存在,確保巫師在每格中看起來相同。
影片生成
對於影片,StoryDiffusion 將相同的 CSA 機制擴展到時間幀上。結果是角色在影片輸出中保持一致外觀,避免了每幀獨立生成時出現的突兀身份變化。
如何安裝 StoryDiffusion
git clone https://github.com/HVision-NKU/StoryDiffusion.git
cd StoryDiffusion
pip install -r requirements.txt
生成一致漫畫條的基本用法:
python comic_generation.py \
--prompts "年輕巫師施法" \
"巫師召喚魔法護盾" \
"巫師面對可怕的巨龍" \
"巫師勝利站立" \
--output ./comic_output \
--style fantasy
影片生成:
python video_generation.py \
--prompt "武士走過竹林" \
--frames 48 \
--output ./video_output
系統支援可設定的解析度、引導比例,以及用於平衡一致性與效能的 CSA 滑動視窗大小。
常見問題
什麼是 StoryDiffusion?它解決了什麼問題? 南開大學與字節跳動的 StoryDiffusion 解決了長序列生成中的一致性問題。它引入的一致性自注意力(CSA)可在任意長度的影像和影片序列中維持角色、風格和場景身份,無需微調。
一致性自注意力機制是如何運作的? CSA 透過同時計算整個序列的自注意力,將注意力感受野擴展到多個幀。滑動視窗方法可擴展到任意長的序列,確保角色外觀和背景風格等特徵保持一致。
StoryDiffusion 能生成完整的漫畫條嗎? 是的,它專為漫畫生成而設計,可在所有格中生成角色、背景和藝術風格一致的漫畫條,無需漫畫特定的訓練資料。
StoryDiffusion 也支援影片生成嗎? 是的,影片分支將 CSA 應用於時間幀,維持角色和場景的連貫性,具有流暢的過渡和極少的閃爍偽影。
如何安裝與執行 StoryDiffusion? 複製 GitHub 儲存庫,安裝依賴項,然後執行提供的漫畫或影片生成腳本。建議使用 8 GB+ VRAM 的 GPU。
延伸閱讀
- StoryDiffusion GitHub 儲存庫 – 官方程式碼、模型與使用範例
- StoryDiffusion 研究論文 – 描述 CSA 與實驗結果的學術論文
- 一致性自注意力原理解說 – Hugging Face 部落格文章,附有機制視覺導覽
- Diffusers 函式庫 – StoryDiffusion 實作基礎的 Hugging Face 函式庫
- 字節跳動研究 – 字節跳動研究部門的出版品與開源專案
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!