ETH官方钱包

前往
大廳
主題

初遇FramePack

A.C | 2025-04-19 02:35:37 | 巴幣 32 | 人氣 5070

*last update 2025-04-24: 新增後記
前言、

看到個有趣的東西,玩了下,順便做個紀錄。

FramePack Github專案頁面:

正文、

簡介

下面是AI對論文"Packing Input Frame Context in Next-Frame
Prediction Models for Video Generation"做出的簡要介紹:

「FramePack 的目的是幫助 AI 更好地生成影片,尤其是更長、品質更高的影片。
你可以把它想像成,當 AI 在生成影片的下一段畫面時,它需要記住前面已經生成了什麼。如果影片很長,AI 就可能會「忘記」前面的內容,導致影片前後不連貫,這就是所謂的 「遺忘」。

另外一個問題是 「漂移」。就像影印文件一樣,每次影印都可能產生一點點的誤差,累積下來就會變得模糊不清。AI 在一幀一幀地生成影片時,也可能會累積微小的錯誤,導致影片的品質隨著時間推移而下降。
FramePack 這個技術就像是幫 AI 設計了一個更聰明的記憶系統。它觀察到,在預測下一段畫面時,並不是所有的歷史畫面都一樣重要,越靠近現在的畫面通常越重要。

所以 FramePack 的做法是,對於比較舊的畫面,就稍微「壓縮」一下它們的資訊。你可以想像成,對於很久以前的事情,我們可能只記得一個大概的印象,而不是每一個細節。這樣做的好處是,AI 可以處理更長的影片,而不會因為需要記住太多細節而變得太慢或記憶體不夠用。

除了更聰明的記憶方式,這份文件還提出了 「反漂移採樣方法」。這個方法改變了 AI 生成畫面的順序。一般的 AI 是一個接著一個畫面地生成,就像我們按時間順序講故事一樣。但是,這樣做就容易累積錯誤。

反漂移採樣方法的其中一種做法是,AI 先生成影片的開頭和結尾這兩段「錨點」。然後,再回過頭來填充中間的內容。這樣做的好處是,因為結尾是事先確定的,AI 在生成中間畫面的時候,就會以結尾為目標進行調整,減少錯誤的累積,提高影片的整體品質。

另一種反漂移採樣方法是 「倒序生成」。如果我們有一個高品質的開頭畫面(例如使用者提供的圖片),AI 就會從這個開頭畫面開始,反過來生成前面的畫面。這樣,每一幀的生成都像是朝著一個已知的、高品質的目標前進,也能有效地減少錯誤的產生和傳播.

總結來說,FramePack 這項技術就像是幫 AI 配備了 更有效率的「短期記憶」,讓它可以記住更多重要的資訊,同時 透過改變生成影片畫面的順序,來避免品質隨著時間而下降的問題。實驗結果也顯示,使用了 FramePack 的 AI 模型,在生成影片時可以有更好的品質和更快的速度。」



初見

一開始不知道怎麼玩,按照玩其他生成影片AI的提示詞給他:
"A vibrant woman with rainbow-streaked hair strikes a dynamic pose in an urban setting. Seen from a low angle, she balances with one leg raised high, a confident smile on her face. She wears a yellow sports bra, black leggings with a purple band, a white jacket, and white sneakers. The background is a stark concrete structure with fluorescent lights. Focus is sharp on her expressive face and athletic physique. The lighting is bright and even, highlighting the contrast between her colorful outfit and the gray environment. A slow, upward tilt reveals the full expanse of the concrete structure above. The overall atmosphere is one of youthful energy and urban confidence. Dust motes float in the air, illuminated by the fluorescent lights. A subtle lens flare adds a touch of realism. A gentle sway of the camera mimics the slight unsteadiness of the pose, adding to the dynamic feeling."

出來這樣的影片:


根據專案頁面的說法,這個FramePack需要熱機。
後來依照專案頁面提供的Prompt生成提示,去Google AI studio弄了一個FramePack提示詞生成器。一摸摸一樣樣的圖給生成器去生成,結果只有一句:"The girl dances smoothly, with complex steps, full of vigor."

o_O"?

其他影像生成都要對:物體運動、鏡頭描述、場景、相對氛圍等等要素,進行描述,FramePack竟然不用?

把這個問題丟給AI,他回我:

「對於 FramePack:
簡短的提示詞足以在模型理解影片的初步方向後,驅動生成連貫的動態視訊,尤其在模型已經有了一定的上下文(前序影格)之後。
詳細的提示詞則更適用於精確控制影片的初始內容、引入新的場景或元素、以及指導模型生成符合特定敘事或視覺要求的關鍵幀或片段。這允許用戶在需要更強的創作控制時,提供更具體的指令。
因此,兩者生成的影片差異主要體現在初始內容的確定性和後續發展的可預測性上。詳細的提示詞能帶來更精確的開端,而簡短的提示詞則可能在模型自主延續時展現出更多的變化和可能性。」

也就是說FramePack有能力依據簡短的提示詞以及前序影格來生成影片,而詳細的提示詞更能夠創造出符合使用者需求的內容;不過專案頁面提供的提示詞生成提示語,人物出來的幾乎都是跳舞,想要其他動作的還需要自己修改一下。

上面的提示詞"The girl dances smoothly, with complex steps, full of vigor."
生成這樣的影片:

這個FramePack的特長是他可以生成120秒的連續影片、以及最低僅需6GB的VRAM即可。其他的影片生成AI,長影片不是辦不到,但都是根據原影片最後一去做延伸,提示詞沒下好,影片之間的頓挫與強行連接感會非常強烈,更不用說人物一致性的問題。FramePack長影片請諸位去專案頁面看,個人疲弱的設備就不花時間去生成了。


使用

這個FramePack體驗工具也很簡單使用。

有幾點要先注意:
1.目前僅確定支援Nvidia 50XX、40XX、30XX顯示卡的FP16與BF16,10XX與20XX系列未經測試。
2.操作系統為Windows或是Linux,MAC目前不支援。
3.VRAM至少要有6GB。

下載專案頁面連結提供的資料:
*專案作者已經將CUDA以及Pytorch的環境先弄好了,理論上應該不用安裝其他軟體工具才對。

下載下來解壓縮後,先執行裡面的"update.bat"做更新動作。


更新完後再執行"Run.bat",它會自動下載所需的資料以及模型。大約有30G,就放著讓他跑;下載完後他會自動用瀏覽器打開WebUI的介面:(如果沒有的話,預設是127.0.0.1:7860)



一般人只需要注意到Total Video Length (Seconds)以及GPU Inference Preserved Memory (GB) 就好了
。如果產出的影片品質不行,可以把Use TeaCache的選項取消勾選。專案頁面有提到這一選項會影響到最終影片品質,但是不勾選生成影片速度會比較慢,各位自行抉擇。

Total Video Length (Seconds)最短一秒,最長120秒。根據需求自行選擇生成影片的長度,長度越長生成速度越慢。

GPU Inference Preserved Memory (GB) 為何越大越慢?個人好奇原因,讓AI解釋一番:

「記憶體頻寬限制:GPU 的效能很大程度上取決於記憶體頻寬。如果 FramePack 保留在 GPU 記憶體中用於推論的資料量更大(即「GPU Inference Preserved Memory」的值較大),那麼在進行計算時,模型可能需要存取更多不同的記憶體區域。這可能會導致更頻繁的記憶體讀取和寫入操作,從而降低有效計算的記憶體頻寬,使得整體推論速度變慢。

快取效率降低:GPU 依賴於各種層級的快取來加速資料存取。如果保留在 GPU 記憶體中的資料量過大,那麼真正用於當前計算的資料可能無法有效地載入到快取中。較低的快取命中率會導致更多的記憶體存取,進而拖慢推論速度。

額外的記憶體管理開銷:較大的保留記憶體空間可能需要 GPU 驅動程式和 FramePack 軟體進行更複雜的記憶體管理,例如追蹤哪些記憶體區域正在使用,哪些是空閒的。這些管理操作本身也會消耗一定的計算資源,並可能影響推論速度。

與 FramePack 的壓縮機制的交互:FramePack 通過壓縮輸入幀來管理上下文長度。「GPU Inference Preserved Memory」的設定可能影響了 FramePack 在推論過程中如何處理這些壓縮後的上下文。例如,一個較大的值可能意味著保留更多不同壓縮層級的資訊,或者更少地釋放不再需要的壓縮資料。管理這些額外的壓縮資料可能會增加計算負擔。

抗漂移採樣的影響:FramePack 提出了抗漂移採樣方法,例如反向時間採樣。這些方法可能需要在記憶體中保留更多的幀資訊以實現雙向的上下文利用。較大的「GPU Inference Preserved Memory」可能與這些採樣策略相關,並因需要管理更多幀資訊而導致速度下降。」

全部搞定後,拿作者提供的提示語:
"You are an assistant that writes short, motion-focused prompts for animating images.
When the user sends an image, respond with a single, concise prompt describing visual motion (such as human activity, moving objects, or camera movements). Focus only on how the scene could come alive and become dynamic using brief phrases.
Larger and more dynamic motions (like dancing, jumping, running, etc.) are preferred over smaller or more subtle ones (like standing still, sitting, etc.).
Describe subject, then motion, then other things. For example: "The girl dances gracefully, with clear movements, full of charm."
If there is something that can dance (like a man, girl, robot, etc.), then prefer to describe it as dancing.
Stay in a loop: one image in, one motion prompt out. Do not explain, ask questions, or generate multiple options."

放到Google AI Studio的System instructions裡面


之後就只要把要生成影片的圖片上傳,AI 就會回傳可供FramePack使用的影像生成提示詞。

諸君,拿自己想讓它動的圖片去玩吧!!!


後記、

50系顯卡的使用者可以參考個人這篇文章:
「 [AI]讓Framepack更快產出

原作者提供的工具內包的CUDA 126+torch26並不支援50系顯卡,但framepack本身是OK的。



ComfyUI用的節點、
ComfyUI-FramePackWrapper,目前開發還在進行中,個人等kijai開發完才會下來玩吧,WebUI先頂著用。
節點與工作流專案頁面:



オマケ、

不知羞恥跳舞:
追蹤 創作集

作者相關創作

更多創作