Stable Diffusion Web UI + AnimateDiff をローカルで動かしてみた

# Stable Diffusion Web UI + AnimateDiff

AnimateDiff を使ってみたので, 手順と感想など

## 動作環境

- OS: Ubuntu Server 22.04.5 LTS
  - NVIDIA ドライバ: nvidia-driver-565-server
- CPU: AMD Ryzen 3700X
- RAM: DDR4 64GB
- GPU: NVIDIA RTX 3090 FE

## Stable Diffusion Web UI インストール

1. リポジトリを clone

   ```sh
   git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
   ```

2. python 3.10 をインストール (今回は conda で構築)

   ```sh
   conda create -n python3.10 python=3.10
   conda activate python3.10
   ```

3. `webui-user.sh` で指定されているコマンドライン引数を修正

   ```diff
   - export COMMANDLINE_ARGS=""
   + export COMMANDLINE_ARGS="--listen --xformers --enable-insecure-extension-access"
   ```

   - `--listen`: ローカルネットワーク上の他の PC からアクセスできるようにする
   - `--xformers`: 画像生成が高速化されるらしい
   - `--enable-insecure-extension-access`: 拡張機能を Web UI からインストールできるようにする

4. `webui.sh` を実行

   ```sh
   bash webui.sh
   ```

   venv が自動で作成され, pip パッケージがいろいろインストールされる.

5. 適当な PC で Web UI にアクセス
   <http://ubuntu-server.local:7860/>

   ![webui.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/bb1f1652-7e94-27bc-c066-5e4db79fc81f.png)

   このような画面が表示されるはず.

## AnimateDiff インストール

1. Extensions > Install from URL で以下の URL を貼り付けて "Install" をクリック

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

   ![webui-animatediff-installation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/14eeb033-baeb-4f85-ccbe-cc91423596f1.png)

2. Extensions > Installed で "Apply and restart UI" をクリック

   ![webui-animatediff-installation2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/65ef66bd-3aff-192c-1986-5146661e5a1b.png)

3. 成功していれば, txt2img のページに "AnimateDiff" という項目が追加されているはず.

   ![webui-animatediff-installation3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/4d127cca-2bd7-6871-c688-2d2764d39991.png)

4. AnimateDiff を有効にするには

   ![webui-animatediff-installation4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/e4c624e3-c3c5-3853-701c-51669b32c64b.png)

   - "Enable AnimateDiff" にチェックを入れる.
   - "Motion Module" でモデルを指定する.

## モデルのダウンロード

- Stable Diffusion のモデル と AnimateDiff のモデル (Motion Module) が必要.
- Stable Diffusion のモデルは `models/Stable-diffusion/` 以下に置く.
- AnimateDiff のモデルは `extensions/sd-webui-animatediff/model/` 以下に置く.

今回は以下のモデルを使用した.

- Stable Diffusion: 7th_anime_v3_A
  <https://huggingface.co/syaimu/7th_Layer>
- Motion Module: animatediffMotion_v15V2
  <https://civitai.com/models/108836/animatediff-motion-modules>

Stable Diffusion のモデル形式に対応した Motion Module でないと, 動作しない点に注意.

## 実行結果

### パラメータの設定

![webui-settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/d1bd7e60-93b4-a68e-7c9b-fee7d21b3034.png)

ほぼデフォルトのまま. フレーム数だけ 64 に変更.

### 1. singing

- Prompt: masterpiece, best quality, 1girl, singing
- Negative prompt: (なし)

![00051-2943279668.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/97b023ff-e2e4-45f0-98d5-0ccfb0bb7a86.gif)
![00052-2943279700.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/9dd28328-efc0-41e4-4cb3-0f2915951891.gif)
![00053-2943279732.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/036ea857-bca6-b4f6-eb0b-848f4d01d0e3.gif)
![00054-2943279764.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/fe85d1a3-0b2f-cafa-d842-09f4a84cd04a.gif)

### 2. dancing

- Prompt: masterpiece, best quality, 1girl, dancing
- Negative prompt: (なし)

![00055-2558175450.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/f688b2fe-8fde-ba31-576b-ed54dc967da0.gif)
![00056-2558175482.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/92d9cfa8-5f28-aa3e-2533-13f3fe5a30e2.gif)
![00057-2558175514.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/9a588617-2d2d-35c0-d340-1dcd8a82e4e4.gif)
![00058-2558175546.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191898/da3e3a9e-3c64-a0b6-2177-30a0d0e9070c.gif)

## 感想

- 画像の人物が徐々に変わってしまう...
- 歌っている, 踊っている という特徴を AI がよくつかんでいるように思える.
- (やたら茶色っぽくなるのはモデルの癖？)