はじめに
以前AnimateDiff Motion Module v3 と SparseCtrl を使って同じことをしました。touch-sp.hatenablog.com
AnimateAnyghingでは変化させたくない部分をそのまま残せます。その点が前回との違いになります。
元画像
用意した1枚の画像に動きを持たせることが目的です。元画像は前回と全く同じものを使いました。
mask画像
左の画像に対して右のようなmask画像を用意しました。こちらのPythonスクリプトを使用しました。
白く塗りつぶされている部分が変化する部分、黒く塗りつぶされている部分が変化させたくない部分です。
今回は人物を固定して、夜空だけを変化させるようにしました。
実行
YAMLファイルの準備
以下のようなYAMLファイルを準備しました。pretrained_model_path: pipeline/animate_anything_512_v1.02 output_dir: ./output/latent train_data: width: 512 height: 512 use_bucketing: false return_mask: true return_motion: true sample_start_idx: 1 fps: 8 n_sample_frames: 16 json_path: /webvid/animation0.json validation_data: prompt: closeup face photo of japanese woman in black clothes, night city street, bokeh, fireworks in background prompt_image: example/girl.jpg mask: example/girl_mask.png sample_preview: true num_frames: 16 fps: 4 width: 512 height: 512 num_inference_steps: 25 guidance_scale: 9 dataset_types: - json shuffle: true validation_steps: 200 trainable_modules: - all - attn1 - conv_in - temp_conv - motion not_trainable_modules: [] trainable_text_modules: null extra_unet_params: null extra_text_encoder_params: null train_batch_size: 4 max_train_steps: 10000 learning_rate: 5.0e-06 scale_lr: false lr_scheduler: constant lr_warmup_steps: 0 adam_beta1: 0.9 adam_beta2: 0.999 adam_weight_decay: 0 adam_epsilon: 1.0e-08 max_grad_norm: 1.0 gradient_accumulation_steps: 1 gradient_checkpointing: true text_encoder_gradient_checkpointing: false checkpointing_steps: 2000 resume_from_checkpoint: null resume_step: null mixed_precision: fp16 use_8bit_adam: false enable_xformers_memory_efficient_attention: false enable_torch_2_attn: true seed: null train_text_encoder: false use_offset_noise: false rescale_schedule: false offset_noise_strength: 0.1 extend_dataset: false cache_latents: false cached_latent_dir: null lora_version: cloneofsimo save_lora_for_webui: true only_lora_for_webui: false lora_bias: none use_unet_lora: false use_text_lora: false unet_lora_modules: - UNet3DConditionModel text_encoder_lora_modules: - CLIPEncoderLayer save_pretrained_model: true lora_rank: 16 lora_path: '' lora_unet_dropout: 0.1 lora_text_dropout: 0.1 logger_type: tensorboard motion_mask: true motion_strength: true kwargs: {}
実行
python train.py --eval --config config.yaml
結果
結果はGoogle Bloggerに載せています。support-touchsp.blogspot.com