|
@@ -17,6 +17,7 @@ from animatediff.pipelines.pipeline_animation import AnimationPipeline
|
|
|
from animatediff.utils.util import save_videos_grid
|
|
from animatediff.utils.util import save_videos_grid
|
|
|
from animatediff.utils.convert_from_ckpt import convert_ldm_unet_checkpoint, convert_ldm_clip_checkpoint, convert_ldm_vae_checkpoint
|
|
from animatediff.utils.convert_from_ckpt import convert_ldm_unet_checkpoint, convert_ldm_clip_checkpoint, convert_ldm_vae_checkpoint
|
|
|
from animatediff.utils.convert_lora_safetensor_to_diffusers import convert_lora
|
|
from animatediff.utils.convert_lora_safetensor_to_diffusers import convert_lora
|
|
|
|
|
+from diffusers.utils.import_utils import is_xformers_available
|
|
|
|
|
|
|
|
from einops import rearrange, repeat
|
|
from einops import rearrange, repeat
|
|
|
|
|
|
|
@@ -51,6 +52,9 @@ def main(args):
|
|
|
vae = AutoencoderKL.from_pretrained(args.pretrained_model_path, subfolder="vae")
|
|
vae = AutoencoderKL.from_pretrained(args.pretrained_model_path, subfolder="vae")
|
|
|
unet = UNet3DConditionModel.from_pretrained_2d(args.pretrained_model_path, subfolder="unet", unet_additional_kwargs=OmegaConf.to_container(inference_config.unet_additional_kwargs))
|
|
unet = UNet3DConditionModel.from_pretrained_2d(args.pretrained_model_path, subfolder="unet", unet_additional_kwargs=OmegaConf.to_container(inference_config.unet_additional_kwargs))
|
|
|
|
|
|
|
|
|
|
+ if is_xformers_available(): unet.enable_xformers_memory_efficient_attention()
|
|
|
|
|
+ else: assert False
|
|
|
|
|
+
|
|
|
pipeline = AnimationPipeline(
|
|
pipeline = AnimationPipeline(
|
|
|
vae=vae, text_encoder=text_encoder, tokenizer=tokenizer, unet=unet,
|
|
vae=vae, text_encoder=text_encoder, tokenizer=tokenizer, unet=unet,
|
|
|
scheduler=DDIMScheduler(**OmegaConf.to_container(inference_config.noise_scheduler_kwargs)),
|
|
scheduler=DDIMScheduler(**OmegaConf.to_container(inference_config.noise_scheduler_kwargs)),
|