LoginSignup
0
1

sd-webui-animatediffでAnimateDiff×ControlNet×クロマキーの動画を作成

Last updated at Posted at 2024-04-06

記事の概要

これまで紹介してきた以下のような手順では、アニメーションのモーションをコントロールすることができなかったが、ControlNetでコントロールできるようになったので、紹介します。

うまくいけば、この動画のようなアニメーションは作成できる。

動画でも解説してます。

環境

OS:Windows 11
GPU:GeForce RTX 4090
CPU:i9-13900KF
memory:64G
python:3.10.10
pytorch:2.1.2
CUDA:11.8
cuDNN:8.8

sd-webui:v1.8.0
sd-webui-animatediff:v2.0.0-a
sd-webui-controlnet:v1.1.441

環境構築

Stable Diffusion Web UIのインストール手順については割愛します。

ライブラリのインストール

Stable Diffusion Web UIを起動後、「Extensions」タブから、以下のライブラリをインストールする。
基本的には全てのライブラリは最新状態にしてください。(ControlNetが効かないことがあります。)

■ABG_extension
https://github.com/KutsuyaYuki/ABG_extension.git

■deforum
https://github.com/deforum-art/sd-webui-deforum.git

■sd-webui-animatediff
https://github.com/continue-revolution/sd-webui-animatediff.git

■sd-webui-controlnet
https://github.com/Mikubill/sd-webui-controlnet.git

モーションモジュールのダウンロード

以下のページからモーションモジュールをダウンロードし、「stable-diffusion-webui¥extensions¥sd-webui-animatediff¥model」フォルダに格納する。

■v3_sd15_mm.ckpt
https://aieasypic.com/inspire/models/detail/animatediff-motion-v3-282581

LoRA

Green screen LoRAとグリーンバックPNGファイルをダウンロードし、LoRAのファイルは、「stable-diffusion-webui¥model¥Lora」フォルダに格納する。

■Green screen LoRAとグリーンバックPNGファイル
https://civitai.com/models/143148/green-screen

「--lowvram」の設定

「stable-diffusion-webui」フォルダに格納されている「webui-user.bat」を編集モードで開き、「set COMMANDLINE_ARGS」に「--lowvram」を追記する。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers --lowvram
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6, max_split_size_mb:128

call webui.bat

「FFmpeg」のインストール

以下の手順などを参考に、導入する。

事前準備

モーションの取得

「Mootion」という3Dキャラクターのモーション動画生成サービスから、モーションをダウンロードする。

image.png
こんな見た目の動画がダウンロードできます。

「Mootion」の動画を分割

「Mootion」からmp4で動画をダウンロードすると、動画を真ん中で分割する必要があるんで、以下のコマンドで分割を行う。

# インプットファイル用にインプットファイル名を定義
SET input=very_long_hard_dance__akari.mp4

# アウトプットファイル用にインプットファイル名を加工
SET base_name=%input:~0,-4%

# 左半分の動画を生成
ffmpeg -i %input% -vf "crop=in_w/2:in_h:0:0" %base_name%_left.mp4

# 右半分の動画を生成
ffmpeg -i %input% -vf "crop=in_w/2:in_h:in_w/2:0" %base_name%_right.mp4

first_frame.png

first_frame.png

動画の編集

アスペクト比などの変更が必要な場合は、Windowsに標準搭載の「clipchamp」などを使って、「4:5」などにアスペクト比を変更する。

また、フレーム数をコントロールしやすくするため、以下のコマンドで、動画のFPSを「8」に変換する。

ffmpeg -i very_long_hard_dance__akari_right_5_4.mp4 -r 8 very_long_hard_dance__akari_right_5_4_8.mp4

最初と最後のフレームのクロマキー生成

img2imgのインプットとなる最初のフレームと最後のフレームを以下のpythonプログラムを実行して、取得する。

import cv2

# MP4ファイルのパス
video_path = 'very_long_hard_dance__akari_right_5_4_8.mp4'

# ビデオを読み込む
cap = cv2.VideoCapture(video_path)

# 最初のフレームを取得
ret, first_frame = cap.read()

if ret:
    # 最初のフレームをPNG形式で保存
    cv2.imwrite('first_frame.png', first_frame)

# ビデオの総フレーム数を取得
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

# 最後のフレームに移動
cap.set(cv2.CAP_PROP_POS_FRAMES, total_frames - 1)

# 最後のフレームを取得
ret, last_frame = cap.read()

if ret:
    # 最後のフレームをPNG形式で保存
    cv2.imwrite('last_frame.png', last_frame)

# リソースを解放
cap.release()

上記で作成した最初のフレームと最後のフレームそれぞれに対して、text2imgでクロマキー画像を生成する。

image.png
image.png
※「Do not auto save」はチェックなしで問題なし。

動画生成

Loraは「lora:GreenScreen_A3:1.5」を指定して、それ以外の設定はだいたい画像の通り。(GreenScreenは他のLoraモデルを使っても問題なし。)
ControlNetのTileで指定している画像は、GreenScreenをダウンロードしたzipファイルに含まれています。

image.png
image.png
image.png
image.png
image.png

上記の設定であれば、以下のようなアニメーションが生成される。

微調整の余地は残っているが、大筋の手順としては確立できてきた。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1