見出し画像

【stable diffusion】AnimateDiffでヌルヌル動くアニメーションを作るコツ

はじめに

こんにちは!今日は、アニメーションをもっと楽しく、もっと簡単に作成できるツール「AnimateDiff」についてお話しします。

AnimateDiffとは


個人のテキストから画像への拡散モデルを特定のチューニングなしでアニメーション化するための公式実装です。このツールの素晴らしい点は、GradioやA1111 WebUI Extension sd-webui-animatediffといったユーザーインターフェースを提供しており、約12GBのVRAMで推論を行うことができる点です。さらに、Google Colabでも利用可能です。

ローカルPC(VRAM12GB)で試してみましたが、アニメーション生成するのに1時間以上かかりました。今回は、Paperspaceでアニメーションの生成を行っています。

また、TDS_さんが開発されたAnimateDiff用のControlNetを使用してgifアニメーションを作成していきます。


この記事の対象読者


StableDiffusion WebUIを既に使っている方で、拡張機能のAnimateDiffを使用して、自分だけのアニメーションを生成したいと考えている方です。あくまで、滑らかなアニメーションを重点に置いていますので、高解像度や高品質を求める方には参考にならないかもしれません。

StableDiffusion WebUIの基本的な操作がわかる方を前提に、AnimateDiffの魅力や使い方を深堀していきます。


AnimateDiffの基本

AnimateDiffは、テキストから画像への拡散モデルを活用して、ユーザーが指定したテキストに基づいてアニメーションを生成するツールです。このツールの最大の特徴は、特定のチューニングを必要とせずに、高品質なアニメーションを手軽に作成できる点にあります。

では、具体的にどのようなアニメーションが生成されるのか、以下のgifをご覧ください。



こちらは生成された複数のgifをつなぎ合わせています。

このgifを見てもらえればわかるように、AnimateDiffは非常に滑らかで魅力的なアニメーションを生成します。テキストの内容やニュアンスに合わせて、動きや変化が表現されるため、ユーザーの意図を正確に反映したアニメーションを作成することができます。


導入手順

今回は、Stable Diffusion webuiの拡張機能でアニメーションを生成します。


拡張機能AnimateDiffを導入する


拡張機能の導入方法については以下の記事が参考になりました。

AnimateDiffを行うには、VRAM12GB以上必要です。
RTX4070Ti(12GB)でもできましたが、品質が安定しないため、それ以上のスペックを推奨します。


モーションのモデルは、「mm_sd_v14.ckpt」の方が安定しましたのでオススメです。


webuiのバージョンをv1.5.2にする

現在9/8時点で最新のv1.6.0で試してみたのですが、AnimateDiffの動作が不安定になってしまいカクカクしてしまいます。

既に最新のバージョンにアップデートされている方はv1.5.2にダウングレードしてください。今後のアップデートで改善されるかもしれません。

PCの容量に余裕がある方は新たにAnimateDiff用のstable diffusion webuiをインストールするのも良いかもしれません。

ダウングレードの方法は、stable-diffusion-webuiフォルダに行き、コマンドプロンプト(ターミナル)を起動し、以下のコマンドを入力します。
(c9c8485bc1e8720aba70f029d25cba1c4abf2b5c がv1.5.2のバージョンです)

git checkout c9c8485bc1e8720aba70f029d25cba1c4abf2b5c


スクリプトを修正する

必須ではありませんが、こちらのスクリプトを修正してStable Diffusion webuiからAnimateDiffで生成すると品質が良くなります。

ControlNetが必要になりますので、最低でもTileやOpenposeを入れておいてください。使用するControlNetは最低2つになりますので、予めSettingで使用するControlNetの数を2つ以上にしてください。


生成モデル(チェックポイント)を導入する

画像生成に必要なモデルを入れておきます。
AnimateDiffでは、「mistoonAnima」というモデルが安定したアニメーションを生成してくれます。

モデルは、Civitaiからダウンロードします。

https://civitai.com/models/24149/mistoonanime


生成手順

導入手順が完了しましたら実際、AnimateDiffで生成するための準備を行っていきます。

画像サイズを決める

最初は小さいピクセルから始めた方が生成時間も少なくて済みます。
あまり画像サイズが大きすぎると私の環境ではアニメーションが安定しませんでした。(Hires. fixによるアップスケールも安定しませんでした)

縦長のオススメサイズは、640×960pxです。




元絵を生成する

適当にプロンプトとネガティブプロンプトを入れて生成します。
服装や背景はなるべくシンプルの方がいいです。

プロンプト

simple background, masterpiece, best quality, highres, black shirt, 
upper body, open mouth, black school uniform, evil smile, medium breasts, jumping, from above, 
1girl, short hair, pink hair, blue eyes, 
highres, sidelocks, long sleeves, light smile,

ネガティブプロンプト

By bad artist -neg  verybadimagenegative_v1.3, multiple girls, (1boy:1.3), red background,


ポーズが良かったので、以下の画像を採用しました。
(画質はあんまり気にしなくてもいいです)



似たような画像を生成するには、ControlNetの「Reference」を使って再度同じように生成します。

主に、Style Fidelity (only for "Balanced" mode)を調整しながら、生成していきます。0.8~0.9くらいで調整してみましょう。

Referenceの設定

生成して似たような服装や髪型ができればOKです。
今回は、以下の2枚を使用します。


元絵:ControlNet01(最初)
元絵:ControlNet02(最後)


AnimateDiffを使って生成する



先ほど生成した2枚の画像をControlNet Unit0とControlNet Unit1に入れます。設定方法はTDS_さんの方法がとても参考になりました。今回は「Tile」を使用します。


Enable AnimateDiffを忘れずにチェックして生成しましょう。




初回の生成で出来たものがこちらです。



自然なアニメーションに近づけるコツ

ここから少しずつパラメータを調整していきます。
VRAMに余裕がある人は、先ほど使用したControlNet Unit2に「Reference」も追加して元絵から極端に離れないようにします。



プロンプトを修正する

服装や背景が極端に変わってしまう場合は、ネガティブプロンプトに追加していきましょう。

例えば、「黒いネクタイ」にしているのに、「赤いネクタイ」に変化してしまう場合は、ネガティブプロンプトに「red necktie」をいれます。ポジティブプロンプトに「black necktie」を入れてもいいです。


元絵を変更する

2枚の絵があまりにも違うポーズや背景だと安定しません。
その場合は、2枚の元絵がなるべく似ているものを選んで変更してみましょう。




ControlNetの値を大きくする

「Tile」のControl Weightや「Reference」のStyle Fidelity (only for "Balanced" mode)の値を上げてみてください。ただし、上げ過ぎるとカクカクしてしまうので様子を見ながら調整していきましょう。

Tile


Reference


まとめ

アニメーションは、私たちのコンテンツを魅力的に、そして視覚的に伝える強力なツールです。特に、AnimateDiffを使用することで、テキストから簡単に、しかし高品質なアニメーションを生成することができます。

この記事で学んだポイントの再確認:

  • AnimateDiffはテキストから画像への拡散モデルを活用してアニメーションを生成するツールです。

  • ControlNetやプロンプトを調整することで、自然なアニメーションを作成することができます。

  • AnimateDiffの基本的な使い方や、実際のアニメーション生成のステップについても学びました。

アニメーションは、視覚的なストーリーテリングの一部として非常に価値があります。AnimateDiffを使って、あなたのストーリーを最も効果的に伝えるアニメーションを作成してください!





この記事が気に入ったらサポートをしてみませんか?