Stable DiffusionのComfyUIでAnimateDiffを利用する際の覚書です。StabilityMatrixを使っています。
Contents
ComfyUIでAnimateDiffのワークフロー【StabilityMatrix】
ワークフローはもちろん自分で組み立てることもできますが、画像をダウンロードしたのち、ロードすることにより読み込みができるようです。初回は個人的にもサンプルのワークフローを使わせてもらいました。2回目からは自分で組み立てることも検討します。
ただし、適切なモデルが設定していないとエラーがでます。
ComfyUIのインストールエラー【StabilityMatrix】
ADE_AnimateDiffLoaderGen1
VHS_VideoCombine
ComfyUI-AnimateDiff-EvolvedとComfyUI-VideoHelperSuiteをインストールします。
現状最も大きな話題になっているのは、9月2日にコミュニティの支援を受けつつ開発が進められていた、Kosinkadinkさんの「ComfyUI AnimateDiff Evolved」です。
https://ascii.jp/elem/000/004/155/4155433/3/
ComfyUI Managerがあると簡単にインストールできます。
Manager > Install Custom Nodes
ComfyUI Managerのインストール
ComfyUI Managerをインストールしていない場合、インストールしましょう。AnimateDiffはいろいろインストールするものが多いからです。
cdで移動してインストールします。
cd /path/to/ComfyUI/
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
xcodeがインストールされていな い
xcodeがインストールされていな い場合、git cloneできません。xcodeをインストールします。
App Storeからインストールもできますけど、全部になってしまうためIOSの開発を行わない人は、Xcodeコマンドラインツールだけインストールします。
xcode-select --install
xcode-select -p
xcode-select –installするとポップアップがでるためインストールします。
AnimateDiffはVaeが必要!おすすめのVAEは?
AnimateDiffのワークフローにはVAEが入っています。
Files and versions > Vae
個人的に彩度が低い絵が好きなため、OrangeMixsを採用しました。
VAEとは?
VAEは補助ツールです。画像生成の終盤に作業されるからです。
形ではなく色です。色やテクスチャ、ノイズなどの詳細な特徴を調整する役割を担っています。
デザイナーのために説明すると、個人的にフォトショップのトーンカーブのようなイメージに近いです。あらかじめ好きなフィルターを選んでおきます。もちろん絵を出力したあとに、フォトショでトーンカーブをかけている人もいるようです。
少し専門的に解説すると、
Stable DiffusionのVAE(Variational Autoencoder)は、画像生成プロセスにおいて重要な役割を果たすニューラルネットワークの一部です。VAEの主な目的は、高次元の画像データを低次元の潜在空間に圧縮し、その後、潜在空間から元の画像に近い画像を再構成することです。
VAEは以下のように機能します:
- エンコーダ:入力画像を低次元の潜在表現(latent representation)に圧縮します。この潜在表現は、画像の主要な特徴を捉えています。
- 潜在空間:エンコーダによって生成された潜在表現が存在する低次元の空間です。この空間内の点は、画像の本質的な特徴を表しています。
- デコーダ:潜在空間の点から、元の画像に近い画像を再構成します。
Stable DiffusionではVAEを使用することで、高品質の画像生成が可能になります。VAEは画像の主要な特徴を学習し、潜在空間で効率的に表現することができるため、Stable Diffusionは潜在空間内を探索し、新しい画像を生成することができます。
AnimateDiffLoaderのモデル名は?
AnimateDiffLoaderのモデル名のエラー
AnimateDiffLoaderのモデル名が指定されていないと、次のエラーがでます。
Prompt outputs failed validation
ADE_AnimateDiffLoaderGen1:
Required input is missing: model_name
AnimateDiffで使用するモデルファイル(.ckptまたは.ptファイル)を配置する必要がありそうです。
AnimateDiffLoaderのモデルがある場所
どこからダウンロードするのかといえば、huggingfaceにありました。
そもそもAnimateDiffは誰が作っているのとGItHUBをみると、香港のYuwei Guoさん(guoyww)のようです。
そのguoywwのhuggingfaceにサンプルがありました。おそらく容量が大きいためGItHUBではなく、huggingfaceに置いているのでしょう。他からもダウンロードできるようですが、huggingfaceは個別ファイルとしてダウンロードしやすそうです。
Githubの説明をみると、mm_sd_v15_v2.ckptが最新のモジュールのようです。
ただ、ちょい勉強しないといけませんかね。
AnimateDiffをControlNetで指示画→アニメ風にAI清書
— 852話(hakoniwa) (@8co28) March 13, 2024
v1(上段)はシルエット等プロンプトに忠実、ちょっと硬い
v3(中断)は1F周辺が変な絵でがち、参照画に忠実、表情は良い
v2(下段)は線も色も整っているが影や色がパカりがち
promptは「黄色いパーカー」なので絵的には上段が正解ではある
AI pic.twitter.com/8kXTEr2YWb
Animatediff motion modelテスト
— 852話(hakoniwa) (@8co28) March 13, 2024
(学習済)が今回v1の15に学習したもの
(調整済)が前回v3のパラメータ調整したもの
モデルの設定は同じ。
どれも良し悪しなので面白い。好み分かれそう。 pic.twitter.com/GiHgEs9YDE
StabilityMatrixでmm_sd_v15_v2.ckptを入れる場所は?
claude君もChatGPT君も嘘をついてしまってAI部隊は全滅…、英語でぐぐっても情報はありませんでした…。
自力で解決しました。
ただ、StabilityMatrixにエラーがでていたため、わりと簡単に解決しました。
[AnimateDiffEvo] - ERROR - No motion models found. Please download one and place in:
['/Applications/Data/Packages/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models',
'/Applications/Data/Packages/ComfyUI/models/animatediff_models']
[VideoHelperSuite] - WARNING - Failed to import imageio_ffmpeg
[VideoHelperSuite] - ERROR - No valid ffmpeg found.
やはりエラーをみることが大事ですね。
/Applications/Data/Packages/ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models
ここまできてアニメーションのサンプルに実行に成功しました。
formatでgifかwebpかを選べそうです。mp4はなかったです。
img2img中割りtileのアニメーション
ControlNetのTile
txt2imgは練習という位置付けでした。なかなか思い通りのイメージにならないのかなと、次にimg2imgをやってみました。個人的に興味があるのはControlNetのTileという技術。
Tileで動画の「中割」をつくる
https://note.com/bakushu/n/n1024f94c6c73#25f264d3-c118-46df-8ba9-6abd1c7e62e2
GitHubの方にワークフローが見当たらなかったので、いくつかnoteにあったものを参考にさせてもらいました。jsonもしくは画像でいけるようです。
以下のファイルをComfyUIの画面にドラッグ&ドロップすると、今回のワークフローを読み込めます。
https://note.com/bakushu/n/nbd3d57a480d4#2817bd60-8ae8-4273-9743-e201c12e9703
下記の画像をダウンロードする。中割りアニメーション用のノード画像です。
https://note.com/kurayu_ai/n/n28ac74be4cc8
tileとは何か?
ControlNetのTileは、ControlNetのアーキテクチャにおける重要な構成要素の一つです。
ControlNetは、画像生成タスクにおいて、ユーザーがより詳細にコントロールできるようにするために開発された手法です。例えば、ユーザーが大まかなスケッチを入力すると、ControlNetはそのスケッチを基に詳細な画像を生成します。
このとき、ControlNetはTileと呼ばれる小さな領域に画像を分割して処理します。各Tileは、周囲のTileとの整合性を保ちながら、スケッチの対応する部分に基づいて詳細な画像を生成します。
Tileを用いることで、以下のようなメリットがあります:
- 効率的な処理:画像全体を一度に処理するのではなく、小さな領域ごとに処理することで、メモリ使用量を削減し、並列処理を可能にします。
- 局所的な整合性:隣接するTile同士が互いに影響し合うことで、生成された画像全体の整合性が保たれます。
- 柔軟なコントロール:ユーザーは特定のTileに対して、より詳細な指示を与えることができます。これにより、生成される画像をより細かくコントロールできます。
ControlNetのTileは、ユーザーの入力に基づいて高品質な画像を生成するために、重要な役割を果たしています。Tileを用いることで、ControlNetは効率的かつ柔軟に画像生成タスクを実行できるのです。
tileが画像サイズの拡大とアニメの中割りの両方の文脈で使われる理由
- 画像の拡大: ControlNetを使って画像を拡大する際、元の画像をTileに分割します。各Tileは、周囲のTileとの整合性を保ちながら、より高解像度の画像を生成します。これにより、画像全体を一度に拡大するのではなく、局所的に詳細を追加することができ、より自然で高品質な拡大画像が得られます。
- アニメーションの中割り: アニメーションにおける中割りとは、キーフレーム間の中間フレームを生成することです。ControlNetを使った中割りでは、キーフレームをTileに分割し、各Tileが時間的に連続したフレーム間の中間状態を生成します。これにより、滑らかで自然なアニメーションを作成できます。
これらの用途では、Tileを使うことで以下のような利点があります:
- 局所的な詳細の維持:画像の拡大やアニメーションの中割りでは、局所的な詳細を維持することが重要です。Tileを使うことで、画像やフレームの各部分を個別に処理し、詳細を損なわずに拡大や中割りを行うことができます。
- 整合性の確保:Tileを使うことで、隣接するTile間の整合性を保ちながら処理を行えます。これにより、拡大画像やアニメーションにおいて、不自然な断絶やアーティファクトを最小限に抑えられます。
- 効率的な処理:画像の拡大やアニメーションの中割りでも、Tileを使うことで並列処理が可能になり、計算効率が向上します。
ControlNetのTileは、画像生成、拡大、アニメーションなど、様々な用途において、高品質で整合性のある結果を効率的に生成するために活用されています。これらの用途は、Tileの基本的な概念を応用したものと言えます。
ControlNetの開発者
Lvmin Zhangさんのようですね。香港出身の若い方のようですね。
As shown in Fig. 1, Lvmin Zhang (Lyumin Zhang) is a Ph.D. student in Computer Science advised by Prof. Maneesh Agrawala at Stanford University since 2022. Before that, he was a Research Assistant in the lab of Prof. Tien-Tsin Wong at the Chinese University of Hong Kong since 2021. He has also collaborated with Prof. Edgar Simo-Serra on many interesting projects. He received his bachelor’s degree of B.Eng. from Soochow University in 2021, supervised by Prof. Yi Ji and Prof. Chunping Liu.
https://lllyasviel.github.io/Style2PaintsResearch/lvmin
TitleはOpenPoseのように別開発者ということはなさそうですね。このかたのhuggingfaceからダウンロードできるので。
Unityの開発もしているようです。
ControlNetのTileの使い方!ワークフローのエラーの改善!
ワークフローを読み込んでも案の定、エラーがでます。
LatentKeyframe
ScaledSoftControlNetWeights
ControlNetLoaderAdvanced
TimestepKeyframe
カスタムノードは3つ必要ですが、すでにtxttoimgをやった際に2つは入れました。ComfyUI-Advanced-ControlNetだけいれました。
- ComfyUI-Manager
- ComfyUI-AnimateDiff-Evolved
- ComfyUI-Advanced-ControlNet
ControlNetのtileをいれます。Ctrl +F でtileで検索すると、control_v11f1e_sd15_tile.pthがあるためダウンロードします。
StabilityMatrixのモデルフォルダControlNetにいれました。
モーションモジュールをいれます。なぜか、mm_sd_v14.ckptが推奨されていました。理由はまだ詳しく調査していません。
Queueを実行したのち、赤枠になっているところを順番に設定します。必要あれば白枠のところも設定を変えます。
- 変化前の画像を読み込む
- 変化後の画像を読み込む
- CheckPoint
- VAEモデルの選択
- gifかwebpかの選択
AnimateDiffの参考資料
AI animatediffで自分で描いたラフをアニメーションさせる
— 852話(hakoniwa) (@8co28) August 28, 2023
二枚目のアニメの頭と終わりのラフ指示画を描く
二枚目の絵を三枚目の絵にAIに変換する
三枚目の画像をCNに指定してanimatediffでアニメーションさせる(一枚目gif 四枚目がバラ) pic.twitter.com/oC1OEG49qH
コメント