FramePackをComfyUIで使って2枚の画像から動画生成してみました

Colab上で実行したComfyUIでFramePackを使って動画生成してみました。

動画の開始時用と終了時用の2枚の画像から動画生成するやり方を紹介します。

目次

FramePackとは

forgeなどをリリースしているlllyasvielさんが新しく開発した動画生成AI用のツールです。

Apache 2.0ライセンスのもとで提供されているため、改変や再配布も自由に行えます。

そのためFramePackは、基本的に商用利用が可能です。

開始用の画像から終了時用の画像を生成

開始時用の画像は普通にComfyUIで生成した画像をしますが、終了時用の画像は動画をなるべく一貫性のあるものにしたいため、マルチモーダルな生成AIを使用して作成します。

Google AI Studioで生成

プロンプト入力欄の右側にあるプラスマークを押すと、画像の入力方法が出てきます。

複数の取り込み方法があるので、好きな方法で使用する画像を取り込みます。

画像を取り込んで、入力した画像を編集するためのプロンプトを入力して、青いボタンを押すと生成が始まります。

数秒で画像が生成されます。

Google AI Studioで生成した画像は右下に以下のようなウォーターマークが付きます。

これが気になる場合は次で説明するChatGPTで使用すればウォーターマークが付いていない画像を生成できます。

ChatGPTで生成

Google AI Studioのときと同じような感じで入力画像とプロンプトを入れて実行します。

日や時間帯によってはChatGPTの使用者が多くて生成に時間がかかる場合があります。

生成されると

ただ、無料版のChatGPTは1日に2枚しか画像生成できないので、Google AI Studioで色々試してプロンプトを吟味してからChatGPTをやるといいと思います。

ComfyUIでの実行

ワークフローは以下のGithubのexample_workflowsフォルダのframepack_hv_example.jsonを使ってみました。

URL:https://github.com/kijai/ComfyUI-FramePackWrapper

必要なモデル等のショートカットもReadmeのところに載っています。

また、このGithubはkijai版のFramePack用のカスタムノードなのですが、これはComfyUI Managerからインストールできなかったので、クローンするかzipファイルでダウンロードしてComfyUIのフォルダに入れる必要があります。

zipファイルでダウンロードする場合は以下のボタンからできます。

custom_nodesフォルダにダウンロードしたzipファイルを解凍したものをフォルダ毎入れればOKです。

Google AI Studioで作った画像で生成

Google Colaboratoryのハードウェア アクセラレータの設定がT4 GPUだとGPU RAMが足りなかったので、L4 GPUに変更しました。

生成中のGPU RAMは18.5GBでした。

生成の最後にシステムRAMが35.9GBになっていました。

生成にかかった時間は1161秒くらいです。

以下のFramePackSamplerノードのパラメータを変えることで動画時間等を変更することが出来ます。

total_second_lengthで秒数を変更できます。数値がそのまま秒数になっていて最大120秒までできるそうです。

また、start_embed_strengthは0~1の値を指定できて、おそらく開始フレームの画像の影響をいつまで残すかみたいな感じだと思います。

use_teacacheがONになっていると生成が早くなりますが、品質が悪くなるため手先等の動きが気になる場合はOFFにしてもいいと思います。

ちなみにOFFにするとかなり時間はかかります。

OFFにするだけで50分くらいかかってたと思います。

また、latent_window_sizeを上げてみたのが以下になります。

上記が値を16にしたもので、以下が18にしたものです。

どういう効果があるのか正確なことは分かりませんが、動きが大きくなったような気もしますがどうでしょうか。

ちなみに最大値は33ですが、33にしたらOOMになってしまったので、値を大きくすると多くのメモリを消費するようです。

ChatGPTで作った画像で生成

ChatGPTで生成した画像が開始時用の画像のアスペクト比と違って引き延ばされてしまいました。

原因は以下のノードのパラメータでした。

このcomfyUI_essentialsのImage Resizeノードのmethodというパラメータがstretchになっていました。

ここのパラメータはstretch以外にkeep proportion、fill / crop、padが選べました。

keep proportionを選んで実行してみると、以下のエラーが発生してしまいました。

エラーコメントは以下になります。

“Sizes of tensors must match except in dimension 2. Expected size 108 but got size 84 for tensor number 1 in the list.”

fill / cropに変えて生成したらいい感じにできました。

パラメータをいろいろ変えてさらに生成してみました。

shiftというパラメータを100にしてみたら、以下のような動画になってしまいました。

10くらいなら大丈夫でした。

しかし、値を上げたときどういう効果があるかはよく分かりませんでした。

調べてみると、FramePackはHunyuanVideoを元にしているようで、HyVideoSamplerノードでいうところのflow_shiftのことのようです。

タイムステップのシフト値のことで、HunyuanVideoの論文では、ステップ数50の場合は7.0、ステップ数20未満(10など)で17.0が推奨されているようです。

解像度に合わせて変えた方がいいというのもありました。

まとめ

かなりいい感じに生成できましたが、一部のパラメータは意味が分かりましたがまだ効果がよく分からないパラメータがあるので、引き続き調査したいと思います。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次