【AIアニメ】AnimateDiffでControlNetのLineartを試す
前回の記事ではControlNetのOpenposeを使った動画生成を試しました。今回は、ControlNetのLineart(線画)という機能を使ってみます。
1. 必要な準備
ComfyUI AnimateDiffの基本的な使い方は、こちらの記事などをご参照ください。今回の作業でComfyUIに導入が必要なものは以下のとおりです。
カスタムノード
次の2つを使います。
ComfyUI-AnimateDiff-Evolved(ComfyUI用AnimateDiff)
ComfyUI-Advanced-ControlNet(ControlNet拡張機能)
ComfyUI Managerを使っている場合は、どちらもManager経由で検索しインストールできます(参考:カスタムノードの追加)。
または、"ComfyUI\custom_nodes\"に直接git cloneします。
モーションモジュール
ここでは「mm_sd_v15.ckpt」を使います(線画ではv15_v2よりv15がきれいです)。保存先のフォルダは"ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\models\"です。
24フレームを超える動画を生成する場合は「temporaldiff-v1-animatediff.ckpt」という派生モデルが使えます。
ControlNet
「control_v11p_sd15_lineart.pth」を使います。保存先のフォルダは"ComfyUI\models\controlnet\"です。DLリンクはこちら。safetensors版でも構いません。
画像生成モデル(ComfyUI\models\checkpoints\)
好きなものを使います。この記事ではアニメ系のモデル「Counterfeit-V3.0_fp32」を使用しています。
2. 線画の用意
ひとまず「VRoidStudio」で簡単なサンプル動画を作成しました。
この動画をフレーム画像に分割し、ComfyUIのプリプロセッサーにかけると、Lineart(線画)の抽出ができます。
プリプロセッサー(ControlNet Auxiliary Preprocessors)の導入手順についてはこちら、使い方についてはこちらで説明しています。
今回はすでに抽出した線画を使って作業をすすめます。下記が512x768の24フレーム分の線画ファイルです。
次のワークフローで使うので、ComfyUI内に適当なフォルダを作り、この24枚の画像ファイルを格納しておきます。
3. ワークフロー
では、前回の記事で使ったワークフローを修正し、ControlNetを「Openpose」から「Lineart」に入れ替えて使ってみます。
上記のJSONファイルをダウンロードし、ComfyUIにドラッグ&ドロップするとワークフローを読み込めます。
「Load Images」のdirectoryに、線画のPNG画像を保存したフォルダを指定します。「Load Checkpoint」などもご自身の環境に合わせて修正してください。
準備ができたら、右上の「Queue Prompt」を実行して生成を始めます。
4. アウトプット
このワークフローでは、512x768のサイズで生成したあと、さらにアップスケールします。サイズや倍率はお使いのGPUに合わせて調整してください。
5. TIPS
上記の動画では、飛び上がるタイミングで少し作画が乱れています。Lineartで動きの激しいアニメーションを生成すると起こりがちです。
このような場合、単純にseed値やControlNetの強さ(strength)を変更して再試行するのも手ですが、Openposeと併用すると確実にモーションが安定します(参考記事)。
6. 関連記事
ComfyUI AnimateDiffについての記事は、以下のnoteにまとめています。