GithubHelp home page GithubHelp logo

delcos / epfora Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zuntan03/easypromptanime

0.0 0.0 0.0 290 KB

ローカル PC でプロンプトから簡単に動画を生成します。

License: MIT License

Batchfile 100.00%

epfora's Introduction

簡単プロンプトアニメ

AnimateDiff prompt travel を使って、ローカル PC で簡単に動画を生成する環境です。
[ 概要 ] [ Colab版 ]
title

  • プロンプトだけで FullHD のスムーズな長尺動画を生成
  • セットアップ・2段アップスケール・フレームレート補間などが自動
  • AnimateDiff prompt travel の生成設定ファイルを流用可能

作例

主な更新履歴

  • 2024/09/25
    • FFmpeg のインストールに失敗する不具合を修正しました。
      • Update.bat を実行すると修正します。
  • 2024/09/24
    • 今回の更新では Update.bat を 2回!実行してください(Update.bat を更新したため)。
    • AnimateDiff prompt travel の更新に対応しました。
      • AnimateDiff 用にモデルを修正する FixCheckpoint.bat を追加しました。
        が、手元で利用しているモデルは修正不要でした。
    • 生成した動画のサイズを低減する Mp4Crf(26|32|38) を追加しました。
    • 生成した動画から X(Twitter) 投稿用の動画を生成する XMp4*.bat を追加しました。
  • 2023/09/23
    • 生成する動画のデフォルトの FPS を、様々なサービスとの互換性の観点から 40FPS にしました。
      • 生成設定ファイル名に -D3 を付け足すと、以前と同様に 80FPS になります。
      • FPS 指定の詳細は ファイル名オプション一覧FpsX4.bat の説明を参照してください。
    • 生成した mp4 ファイル名に、日時のプレフィックスを追加するようにしました。
      • 同一シードで生成しても、mp4 ファイルを上書きしなくなります。
  • 2023/09/22
    • motion-module に mm-Stabilized_high.pth と mm-Stabilized_mid.pth を追加しました。
      • Update.bat を実行するとダウンロードします。
    • 同一シードで同じフォルダに再出力した際に、正しくフレーム補間されない不具合を修正しました。
      • インストール済みの方は Update.bat を実行してください。
    • インストーラーで C:\Windows\System32 にパスが通っていない場合にエラー扱いにしました。
  • 2023/09/21
    • 公開

動作環境

  • Windows 10 以降(Update済み)の PC で、/Windows/System32 にパスが通っている
  • 最近の NVIDIA Geforce RTX VRAM 8BG 以上
  • パスを通した Python 3.10.6Git for Windows

セットアップ

  1. 動作環境の Python 3.10.6 を導入していない場合は、Python のインストール をします。
  2. 動作環境の Git for Windows を導入していない場合は、Git for Windows のインストール をします。
  3. Civitai がダウンしていないか確認します。
  4. Setup-EasyPromptAnime.bat右クリックから「名前をつけてリンク先を保存…」 でインストール先のフォルダ(英数字のみの浅いパス、 スペース不可)にダウンロードして実行します。
    • 「WindowsによってPCが保護されました」と表示されたら、「詳細表示」から「実行」します。
  5. インストールが終わると、Google Colabでプロンプト編集用の「簡単プロンプトアニメエディタ」が立ち上がります。

セットアップ FAQ

  • セットアップや更新で curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x00000000) - 失効の関数は証明書の失効を確認 できませんでした。 といったエラーが発生する
    • ネットワークのセキュリティチェックに失敗しています。
    • アンチウィルスソフトの Avast 有効時に発生し、無効にしたら問題なくインストールできたとの事例報告がありました。
  • 動画の生成が一晩経っても終わらない、サンプル(sample/UpscaleGacha.bat、RTX 3060 で約 15分)の生成に長い時間が掛かる
  • セットアップでダウンロードされるモデルで動画を正常に生成できない
    • モデルのダウンロードに失敗している場合がありますので、animatediff-cli-prompt-travel/data/models/sd/ にある該当ファイルを削除し、src/Setup.bat で再ダウンロードしてください。

更新方法

簡単プロンプトアニメを更新するには、Update.bat を実行します。

つかい方

12秒のアニメをとりあえず生成してみたい方は、sample/UpscaleGacha.bat を実行してみてください(RTX 3060 で約 15分)。

  1. OpenClabEditor.bat で「簡単プロンプトアニメエディタ」を開きます。
  2. ひとつめのを押してプロンプト入力欄を表示し、プロンプトやパラメータを編集して、ふたつめのを押すと動画生成用の生成設定ファイル (*.json) をダウンロードします。
  3. 生成設定ファイルをインストール先(Setup-EasyPromptAnime.bat を実行したフォルダ)にある Generate.bat にドラッグ&ドロップすると、生成設定ファイルの場所に動画を生成します。
    • 生成した動画とフレームレート補間した動画と再エンコードした動画を生成します。

FAQ

効率的にシードガチャをしたい

  • アップスケールを無効にしたり、アップスケールのサイズを下げたりすることで効率的にシードガチャができます。
  • プロンプトをざっくり詰める段階なら、最初の生成解像度を下げたり、短時間にして先頭付近のキーフレームで検証するのも手です。

ガチャ結果動画のシード値を知りたい

  • mp4 ファイル名先頭の 日時(MMDD_HHMM_SS)-数値数値 部分がシードです。
  • animatediff-cli-prompt-travel/(output|upscaled|refine)/ 以下にある prompt.json でも確認できます。

真っ黒の動画が生成されてしまう

以下のいずれかの手順で、改善するかもしれません。

  1. FixCheckpoint.bat でモデルを修正します。モデルが書き換わる可能性があります。
  2. 生成設定ファイルのファイル名に -V を付け足します(改善報告あり)。
  3. モデルの VAE を差し替えます。
  4. 生成設定ファイルのファイル名に -X を付け足します(未検証、-V, -v, -x との併用も)。
  5. 別のモデルを使います。

簡単プロンプトアニメエディタ」の初期値や選択肢を変えたい

  • Colab のメニュー ファイル - ドライブにコピーを保存 して、一番下の コードを表示 から該当部分を編集します。

モデルを追加したい

  1. FixCheckpoint.bat でモデルを修正します。モデルが書き換わる可能性があります。
  2. animatediff-cli-prompt-travel/data/models/sd/ にモデルを置きます。
  3. Colab ソースの model_name = "nadenadesitai_v10" # @param [...]... を書き換えます。

AnimateDiff とモデルに相性があり、黒画像になる、あまりアニメーションしない、といった場合があります。

stable-diffusion-model-toolkit によるモデルへの VAE 埋め込み方法

  1. Stable Diffusion web UIstable-diffusion-model-toolkit をインストールします。
  2. Stable Diffusion web UI の Toolkit タブで リフレッシュ してから 入力 で VAE を埋め込むモデルを選択して 読み込み ます。
  3. 高度な設定 に移り、Component - Class から VAE-v1 を選択します。
  4. 実行 - ファイル で埋め込む VAE を選択して Import します。
  5. 名前 で VAE を埋め込んだモデルのファイル名を指定して 保存 で、モデルフォルダに VAE を埋め込んだモデルが保存されます。
  6. animatediff-cli-prompt-travel/data/models/sd/ に VAE を埋め込んだモデルを移動します。

モーションモジュールを追加したい

  1. animatediff-cli-prompt-travel/data/models/motion-module/ にモーションモジュールを置きます。
  2. Colab ソースの motion_module = "mm_sd_v15_v2.ckpt" # @param [...]... を書き換えます。

LoRA を使いたい

  • animatediff-cli-prompt-travel/data/lora/ に LoRA を置きます。
    • 使える LoRA は通常の LierLa 形式で、C3Lier(Locon) 以降は使えないっぽいです。
  • LoRA の読み込みは、プロンプトエディタの L: で始める行で指定します。

TI を使いたい

  • animatediff-cli-prompt-travel/data/embeddings/ に TI を置きます。

ControlNet を使いたい

  • AnimateDiff prompt travel がそのまま動作していますので、生成設定ファイルを手書きすれば使えます。
  • そのうち対応するかも?

Widlcard を使いたい

  • animatediff-cli-prompt-travel/wildcards/ にワイルドカードを置きます。

Refine がメモリ不足で落ちる

  • context を半分にしていますが、落ちますね。
  • 初回のアップスケールで解像度を抑えつつ Refine を使用、とかもできましたが、重い印象でした。

ストレージ容量が足りない

  • まずは WizTree で状況を確認してください。それでもストレージ容量が足りなかったら、買ってください。

Colabで編集する意味ある?

  • ありません。「Colab版簡単プロンプトアニメ」のコードを流用しただけなので、利用者が多そうだったらローカルエディタを用意する、かも。

各ツールの説明

OpenColabEditor.bat

簡単プロンプトアニメエディタ」を開きます。

Generate.bat

生成設定ファイルをドラッグ&ドロップすると、動画を生成します。

GenerateForever.bat

生成設定ファイルをドラッグ&ドロップすると、動画を生成し続けます。終了時は Ctrl+C で止めてください。

Update.bat

簡単プロンプトアニメと AnimateDiff prompt travel を更新します。

FixCheckpoint.bat

モデルをドラッグ&ドロップすると、モデルに問題があれば AnimateDiff 用に修正します。モデルが書き換わったかどうかは更新日時で確認してください。

FpsX4.bat

mp4 をドラッグ&ドロップすると、RIFE で FPS を4倍にします。サイズが大きくなるので再エンコード版も生成します。

  • 第 2 引数に RIFE による中割りの分割回数(FPSの倍増を何回実施するかの)を指定できます。FPSが 1 なら 2倍、2 なら 4倍、3 なら 8倍、4 なら 16倍になります。未指定や 0 なら 2 になります。
  • 第 3 引数に RIFE の分割後の FPS を指定できます。 この FPS 指定では画像の枚数を変更せずに FPS を適用しますので、アニメーションの速度と長さが変わります。 1秒の 10FPS の動画を RIFE で 4倍にして 40枚の画像がある状態で、第三引数で 60FPS を指定すると、アニメーションが早くなり 0.66秒で再生が終わります。逆に 8倍で80枚にして 60FPS を指定した場合は、ゆっくり再生されて 1.33秒で再生が終わります。0 なら未指定です。
  • 第 4 引数で FFmpeg による再エンコード時の FPS を指定できます。再生速度や動画の長さは変わりません。0 なら未指定です。
  • 第 5 引数で FFmpeg による再エンコード時の crf を指定できます。未指定や 0 なら 20 になります。

Frames2Mp4.bat

Tile アップスケールは mp4 を生成しませんが、animatediff-cli-prompt-travel\upscaled にある連番 png が入っているフォルダをドラッグ&ドロップすると、mp4 を生成します。

DeleteOutput.bat

ストレージ容量を消費しがちな animatediff-cli-prompt-travel/output/*/, upscaled/*/, refine/*/ を削除します。

Mp4Crf26.bat, Mp4Crf32.bat, Mp4Crf38.bat

mp4 をドラッグ&ドロップすると、Crf26 で 1/2、Crf32 で 1/4、Crf38 で 1/8 ぐらいのサイズの mp4 に変換します。

XMp4.bat, XMp4W1920.bat, XMp4W1200.bat, XMp4H1900.bat, XMp4H1200.bat

mp4 をドラッグ&ドロップすると X(Twitter) アップロード用の動画(40FPS, 25Mbps)を生成します。
アップロード時に再エンコードされる前提ですので、省サイズではありません。

  • Xで動画を共有および視聴する方法
  • 動画の大きさが W1920 x H1200 か W1200 x H1900 に収まらない場合は、XMp4W1920.bat, XMp4W1200.bat, XMp4H1900.bat, XMp4H1200.bat を使用して、W1920 x H1200 か W1200 x H1900 に収まるように縮小します。
  • mp4 ファイル名の末尾が *-D2e.mp4 な再エンコード後の mp4 でなく、*-D2.mp4 な再エンコード前の mp4 から生成したほうが、品質が高くなります。

AnimateDiff prompt travel 利用者向け情報

既存のコンフィグファイルのファイル名にオプションを指定することで、Generate.bat が色々やってくれます。
ハイフン(-)は引数の指定に使用するため、ファイル名には使えません。

例) Config-L30-C16-W448-H544-T1088-T1632.jsonGenerate.bat にドロップ

  1. animediff generate -L 30 -C 16 -W 448 -H544
  2. animediff tile-upscale -H 1088 から FFmpeg で mp4 生成
    • -R なら animediff refine -C (context / 2)
  3. animediff tile-upscale -H 1632 から FFmpeg で mp4 生成
  4. RIFE でフレーム補間

ファイル名オプション一覧

キー デフォルト値 説明
L 30 動画のフレーム総数を指定します。
C 16 AnimeDiffのコンテキスト長を指定します。
W 384 動画の幅を指定します。
H 512 動画の高さを指定します。
T - Tile アップスケール後の動画の高さを指定します。2回指定できます。
R - Refine アップスケール後の動画の高さを指定します。2回指定できます。
D 2 RIFE による中割りの分割回数を指定します。FpsX4.bat の第 2 引数説明参照。
I 0 RIFE による中割り後の FPS を指定します。FpsX4.bat の第 3 引数説明参照。
F 0 FFmpeg で mp4 に変換する際の FPS を指定します。FpsX4.bat の第 4 引数説明参照。
M 20 FFmpeg で mp4 に変換する際の crf を指定します。FpsX4.bat の第 5 引数説明参照。
U 10 Tile アップスケール後の画像を MP4 にする際のFPSを指定します。
v - 動画の生成で half-vae を有効にします。
V - 動画のアップスケールで half-vae を有効にします。
x - 動画の生成で xFormers を有効にします。
X - 動画のアップスケールで xFormers を有効にします。

参照

ツール・ライブラリ

ライセンス

このリポジトリのスクリプトやドキュメントは、MIT Licenseです。

This software is released under the MIT License, see LICENSE.txt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.