見出し画像

【AIアニメ】AnimateDiffでControlNetのLineartを試す

  • 前回の記事ではControlNetのOpenposeを使った動画生成を試しました。今回は、ControlNetのLineart(線画)という機能を使ってみます。


1. 必要な準備

ComfyUI AnimateDiffの基本的な使い方は、こちらの記事などをご参照ください。今回の作業でComfyUIに導入が必要なものは以下のとおりです。

  • カスタムノード

  • モーションモジュール

    • ここでは「mm_sd_v15.ckpt」を使います(線画ではv15_v2よりv15がきれいです)。保存先のフォルダは"ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\models\"です。

    • 24フレームを超える動画を生成する場合は「temporaldiff-v1-animatediff.ckpt」という派生モデルが使えます。

  • ControlNet

  • 画像生成モデル(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と併用すると確実にモーションが安定します(参考記事)。

Lineart + Openpose

6. 関連記事

  • ComfyUI AnimateDiffについての記事は、以下のnoteにまとめています。