0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

画像生成AIとフレーム補完で一貫性を保った表情アニメーションを作ってみた

Last updated at Posted at 2024-10-20

初めに

画像生成AIを使っていると、いつの間にか時間が経ってしまいますよね。
ついつい、いろんな表情や動きを試したくなってしまいますね、

今回は数枚のイラストからスムーズな表情アニメーションを作成する方法を見つけましたので公開します。

この方法を使用することて、数枚のキーフレームを用意するだけで、AIを使ってその間のフレームを生成し、滑らかで一貫性のあるアニメーションが簡単に作成できます。

また、画像の一貫性はフレーム補完によりある程度保たれるためアニメーションのフレーム数は、AnimateDiffのフレーム数(16)に制限されません。
100フレーム以上の連続したアニメーションが生成可能です。

完成したアニメーション

resized_animation_400x400.png

使用したツール

作り方

1.キーフレームの作成

今回はAkuma.aiのAIキャンバスを使用して作成しました。

元のイラストの変更したい箇所にペイントを行い、プロンプトを調整することで表情差分を作成します。
スクリーンショット 2024-10-20 170038.png

今回作成したキーフレーム

1枚目
flame1

2枚目
flame2

3枚目
flame3

4枚目
flame4

アニメーションとして一貫性を持たせるため、1枚目のフレームを最後に追加して計5枚のキーフレームとします。

2.中間フレームの作成

ツールをダウンロード
https://github.com/yasukikudan/animatediff-cli_simple_ui

環境構築

git clone https://github.com/yasukikudan/animatediff-cli_simple_ui
cd animatediff-cli
python3.10 -m venv .venv
source .venv/bin/activate
python -m pip install torch torchvision torchaudio flet opencv-python
python -m pip install -e '.[dev]'
python -m pip install -e '.[rife]'
mkdir video_dir

モデルの設定例

※モデルは別途ダウンロードが必要です。

{
"base_model": "data/models/huggingface/stable-diffusion-v1-5/",
"controlnet_model": "data/models/controlnet/control_v11e_sd15_ip2p",
"checkpoint_path": "data/models/sd/SDHK04.safetensors",
"motion_module_path": "data/models/motion-module/mm_sd_v14.safetensors"
}

中間フレーム作成

キーフレームをリポジトリ直下のimage_dirに保存し、フレーム補完を実行します。
jpgの場合エラーが発生するためpngを推奨します。

animatediff rife interpolate   -M 8 --in-fps 2 --out-fps 8 image_dir/
#中間フレームの出力先はimage_dir-rife/

生成される中間フレーム
キーフレームには目を開けた状態または目を閉じた状態のもののみでしたが、
RIFEを用いたフレーム補完によって目を半分閉じたフレームが生成されます。

前フレーム RIFEによる中間フレーム 後フレーム
flame2 flame20 flame3

3.AnimateDiffを使った最終調整

RIFEでのフレーム補完ではまだ不自然な箇所が多いため、
AnimateDiffのimg2imgでアニメーション生成を行います。

gui起動

python src/animatediff/gui.py

imageの項目にフレーム補完を行った画像の保存先を指定

strengthは0.5ぐらいが目安です。
screenshot_sample.png

画像のサイズと枚数を指定

width 画像の横幅 px
height 画像の縦幅 px
duration フレーム枚数 
スクリーンショット 2024-10-20 180133.png

img2img適用前、img2img適用後の比較

RIFE単体の場合発生していた目の周りの歪みが、
AnimateDiffを適用した後に目立たなくなっています。

RIFEのみ RIFE+AnimateDiff img2img
flame20 flame20

img2img適用後のフレーム

前後のフレームを確認すると、スムーズに表情が動いていることが分かります。

1枚目 2枚目 3枚目
flame20 flame20 flame20

まとめ

動画生成AIは日進月歩で進化しています、
この手法は生成される動画の自然さについては最新AIにかなわないのですが、
フレーム補完をベースにしているため、
人間が作成した画像に則った画像を簡単に生成できるという点では使い道があるのではないかと思います。
アニメーション作成ツールなどに統合できれば作業の効率に繋がるのではないかと考えています。

TODO

もう少し手間がかからずにアニメーション生成ができるUIを作る。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?