はじめに
前回からの続きです。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