【animatediff-cli-prompt-travel】背景がチカチカしていやなら固定すればいいじゃないか

はじめに

前回からの続きです。
touch-sp.hatenablog.com
Video2Videoで動画をアニメ化した時に背景がチカチカすることがあります。前回作成した動画がそうでした。


今回は背景を固定する方法にチャレンジしました。

PC環境

WindowsではうまくいかなかったのでWSL2を使用しています。

Ubuntu 22.04 on WSL2
CUDA 11.8
Python 3.10

Python環境構築

git clone https://github.com/s9roll7/animatediff-cli-prompt-travel
cd animatediff-cli-prompt-travel
py -3.10 -m venv venv
venv\Scripts\activate
python -m pip install --upgrade pip
pip install -U setuptools wheel
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
pip install -e .
pip install -e .[stylize]
pip install -e .[stylize_mask]
pip install xformers mediapipe

PyTorch==2.0.1を使っているならxformersは0.0.22に固定した方が良さそうです。

準備

「animatediff-cli-prompt-travel/data」以下を次のようにしました。

Windowsの時とは「stable-diffusion-v1-5」の場所が少し異なります。

data
+---models
|   +---huggingface
|   |   +---stable-diffusion-v1-5
|   +---motion-module
|   |   +---mm_sd_v15_v2.ckpt
|   +---sd
|       +---mistoonAnime_v20.safetensors
+---embeddings
|   +---easynegative.safetensors
|   +---verybadimagenegative_v1.3.pt
+---lora
    +---more_details.safetensors

実行

Videoは512x512, fps 25の動画を用意しました。

Step 1

animatediff stylize create-config video/dance512.mp4 --fps 25

参照動画の実際のfpsを指定する必要があります。指定しなければfps 8になってしまいます。

これで「stylize」フォルダに「2023-10-13T09-18-52-sample-mistoonanime_v20」というフォルダが作成されました。

そのフォルダ内に「prompt.json」があるのでそちらを書き換える必要があります。

変更前

"path": "share/Stable-diffusion/mistoonAnime_v20.safetensors",

変更後

"path": "models/sd/mistoonAnime_v20.safetensors",



せっかくembeddingsを用意したのでnegative promptも書き換えました。
変更前

"n_prompt": [
    "(worst quality, low quality:1.4),nudity,simple background,border,mouth closed,text, patreon,bed,bedroom,white background,((monochrome)),sketch,(pink body:1.4),7 arms,8 arms,4 arms"
],

変更後

"n_prompt": [
    "easynegative, bad_prompt_version2-neg, (worst quality, low quality:1.4), ((monochrome)), sketch"
],



LoRAも書き換えました。
変更前

"lora_map": {
    "share/Lora/muffet_v2.safetensors": 1.0,
    "share/Lora/add_detail.safetensors": 1.0
},

変更後

"lora_map": {
    "lora/more_details.safetensors": 1.0
},



motion LoRA、IP Adapterは使わないのでその部分を消去しました。

"motion_lora_map": {
    "models/motion_lora/v2_lora_PanLeft.ckpt": 1.0
},
"ip_adapter_map": {
    "enable": true,
    "input_image_dir": "ip_adapter_image/test",
    "save_input_image": true,
    "resized_to_square": false,
    "scale": 0.5,
    "is_plus_face": true,
    "is_plus": true
},



upscaleは行わないのでその部分を消去しました。

"upscale_config": {
    "scheduler": "k_dpmpp_sde",
    "steps": 20,
    "strength": 0.5,
    "guidance_scale": 10,
    "controlnet_tile": {
        "enable": true,
        "controlnet_conditioning_scale": 1.0,
        "guess_mode": false,
        "control_guidance_start": 0.0,
        "control_guidance_end": 1.0
    },
    "controlnet_line_anime": {
        "enable": false,
        "controlnet_conditioning_scale": 1.0,
        "guess_mode": false,
        "control_guidance_start": 0.0,
        "control_guidance_end": 1.0
    },
    "controlnet_ip2p": {
        "enable": false,
        "controlnet_conditioning_scale": 0.5,
        "guess_mode": false,
        "control_guidance_start": 0.0,
        "control_guidance_end": 1.0
    },
    "controlnet_ref": {
        "enable": false,
        "use_frame_as_ref_image": false,
        "use_1st_frame_as_ref_image": false,
        "ref_image": "ref_image/path_to_your_ref_img.jpg",
        "attention_auto_machine_weight": 1.0,
        "gn_auto_machine_weight": 1.0,
        "style_fidelity": 0.25,
        "reference_attn": true,
        "reference_adain": false
    }
},



stylize_configの中にもupscaleの記述があるのでそちらも消去しました。

"1": {
    "steps": 20,
    "guidance_scale": 10.0,
    "width": 768,
    "height": 768,
    "length": 76,
    "context": 8,
    "overlap": 2,
    "stride": 0,
    "controlnet_tile": {
        "enable": true,
        "use_preprocessor": true,
        "guess_mode": false,
        "controlnet_conditioning_scale": 1.0,
        "control_guidance_start": 0.0,
        "control_guidance_end": 1.0,
        "control_scale_list": []
    },
    "controlnet_ip2p": {
        "enable": false,
        "use_preprocessor": true,
        "guess_mode": false,
        "controlnet_conditioning_scale": 0.5,
        "control_guidance_start": 0.0,
        "control_guidance_end": 1.0,
        "control_scale_list": []
    },
    "ip_adapter": false,
    "reference": false,
    "interpolation_multiplier": 1
}

Step 2

animatediff stylize create-mask stylize/2023-10-13T09-18-52-sample-mistoonanime_v20



「2023-10-13T09-18-52-sample-mistoonanime_v20」フォルダ内に「fg_00_2023-10-13T09-27-42」と「bg_2023-10-13T09-27-42」の二つのフォルダが追加されました。

Step 3

animatediff stylize generate stylize/2023-10-13T09-18-52-sample-mistoonanime_v20/fg_00_2023-10-13T09-27-42



実行時にデフォルトではtileとip2pの二つのコントロールネットが使われます。変更したい時には「fg_00_2023-10-13T09-27-42」フォルダ内のprompt.jsonを書き換える必要があります。

実行すると「fg_00_2023-10-13T09-27-42」フォルダ内に「2023-10-13T12-19-05_00」というフォルダが作成され、さらにその中に「00-341774366206100」という画像が入ったフォルダが作成されます。

Step 4

「2023-10-13T09-18-52-sample-mistoonanime_v20」フォルダ内のprompt.jsonにパスを追加する必要があります。

絶対パスである必要があります。

追加するのはstylize_config→compositeの部分です。

"composite": {
    "fg_list": [
        {
            "path": "/mnt/wsl/PHYSICALDRIVE1p1/prompttravel/animatediff-cli-prompt-travel/stylize/2023-10-13T09-18-52-sample-mistoonanime_v20/fg_00_2023-10-13T09-27-42/2023-10-13T12-19-05_00/00-341774366206100",
            "mask_path": " absolute path to mask dir (this is optional) ",
            "mask_prompt": "person"
        },
        {
            "path": " absolute path to frame dir ",
            "mask_path": " absolute path to mask dir (this is optional) ",
            "mask_prompt": "cat"
        }
    ],
    "bg_frame_dir": "/mnt/wsl/PHYSICALDRIVE1p1/prompttravel/animatediff-cli-prompt-travel/stylize/2023-10-13T09-18-52-sample-mistoonanime_v20/bg_2023-10-13T09-27-42/00_controlnet_image/controlnet_tile",
    "hint": ""
},



最後に以下を実行します。

animatediff stylize composite stylize/2023-10-13T09-18-52-sample-mistoonanime_v20



これで「2023-10-13T09-18-52-sample-mistoonanime_v20」フォルダ内に「cp_2023-10-13T13-03-23」というフォルダが作成され、その中に最終的な動画が保存されます。

結果




動画はGoogle Bloggerに載せています。
support-touchsp.blogspot.com




このエントリーをはてなブックマークに追加