最近這幾天都在玩Stable Diffusion近期最火紅的外掛 -- AnimatedDiff。這個外掛其實已經存在了好幾個月,但是最近加上了prompt travel這個功能,加上新的v2模型讓整體畫面變得很穩定,使得他產出的影片更穩定,人物更不容易閃爍。所以一玩下去驚為天人,決定好好研究這個東西怎麼運作。
各位讀者在篇頭看到的webp動圖,就是經由AnimateDiff產出整組PNG圖檔,再經由ffmpeg組成影片,加上Time Cut這個商用軟體補幀並細緻化後的成果。
這篇文章主要針對AnimateDiff的簡單用法,還有prompt travel如何使用為重點,至於如何使用ffmpeg或補幀做法已經有很多教學文章,故省略。
這一兩天將小說中人物轉成動態圖片的結果展示在下方:
將小說中的人物從文字變成圖片,已經是很讓我驚奇的事情。但讓一個小說中的人物活靈活現地出現在作者眼前,那更是另一個次元等級的衝擊。透過他們的一顰一笑,一舉手一投足,仿佛整個小說裡的世界都活過來似的。
首先,AnimateDiff是Automatic1111的一個外掛,安裝方法已經詳述於:
Stable Diffusion基礎 -- 外掛(Extensions) 之中,不再贅言。
只要在外掛搜尋找尋關鍵字AnimateDiff就能找到。
安裝之後,需要在設定區找到這個項目並選取:
Pad prompt/negative prompt to be same length
重開Automatic1111之後就能使用了。如同ControlNet一樣,它是一個寄生於Txt2Img與Img2Img下面的次面板:
由於這個外掛需要下載專門處理影像連續性的模型,因此需要到Hugging Face上下載:
https://huggingface.co/guoyww/animatediff/tree/refs%2Fpr%2F3
我使用的是最新的V2版本: mm_sd_v15_v2.safetensors
這是專門使用於Stable Diffusion 1.5大模型的。因此不能使用於SDXL等新世代的大模型。
依照指示將下載的模型放置到檔案夾 stable-diffusion-webui/extensions/sd-webui-animatediff/model/ 裡面就能使用了。
在這個外掛裡面,下面是選項的說明:
當我們熟悉以上的設定後,就來實作測試吧!
基本上,最簡單的影片生成與生成一般的圖片沒有兩樣,一樣是輸入提示詞後按生成即可。且因為是使用Stable Diffusion,所以可以正常使用LoRA來產生固定角色的影片:
dynamic hair, 1girl with pointy ears and (ebony loose long hair:1.2), wearing black leather armor, Ethereal , parted hair, forehead, 20 years old elf, wearing black beret, (masterpiece, top quality, best quality, beautiful and aesthetic:1.2)
只是要記得打開AnimateDiff的面板,然後設定參數,例如我最常用的參數:
這樣就能產生簡單的GIF動圖:
而AnimateDiff在版本1.9.0之後,整合了強大的AnimateDiff cli prompt travel這個指令列操作程式之後,能讓使用者在指定的幀數上改變角色的動作或表情,使得這個外掛的功能更強大了!
以我自己訓練的LoRA角色為例,我為了要達到讓角色眨眼的動作,在第零幀指定了閉眼並側臉的動作,並且在第四幀指定了開眼、面向鏡頭並微笑的動作然後在第十六幀將微笑變成含蓄微笑,寫法如下:
dynamic hair, Hana wearing white kimono and white cloak, (masterpiece, top quality, best quality, beautiful and aesthetic:1.2) in forest, close-up, happy, <lora:Hana:0.4> ,
0: closed eyes, facing away
4: open eyes, smile, facing viewer
16: slight smile
在這邊,第一幀所有的敘述都不可分行,否則程式會錯亂。
每一幀的描述也不可分行,否則也會出事。
而幀與幀之間必須分行。
這樣演算出來的結果就是本文章置頂的動圖:
目前AnimateDiff還在積極開發中,還有許多用法可以探討,但目前這個最簡單的使用方法就已足夠強大,希望大家用得愉快,至少我本人非常愉快!
祝大家AI算圖快樂!