stable-diffusion-videos
例子 - 在 “蓝莓意大利面” 和 “草莓意大利面” 之间变形
安装
pip install stable_diffusion_videos
使用方法
查看 examples 文件夹,获取示例脚本 👀
制作视频
注意:对于 Apple M1 架构,使用 torch.float32
代替 torch.float16
,因为 MPS 上不支持 torch.float16
。
from stable_diffusion_videos import StableDiffusionWalkPipeline
import torch
pipeline = StableDiffusionWalkPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
torch_dtype=torch.float16,
).to("cuda")
video_path = pipeline.walk(
prompts=['a cat', 'a dog'],
seeds=[42, 1337],
num_interpolation_steps=3,
height=512, # 如果 > 512 使用 64 的倍数。如果 < 512 使用 8 的倍数。
width=512, # 如果 > 512 使用 64 的倍数。如果 < 512 使用 8 的倍数。
output_dir='dreams', # 图片/视频保存路径
name='animals_test', # 图片/视频保存路径下的子目录
guidance_scale=8.5, # 数值越高越遵循提示,数值越低模型的自由度越高
num_inference_steps=50, # 每生成一张图片的扩散步数。50 是一个不错的默认值
)
制作音乐视频
新功能! 可以通过提供音频文件路径将音乐添加到视频中。音频会影响插值的频率,使视频伴随节拍移动 🎶
from stable_diffusion_videos import StableDiffusionWalkPipeline
import torch
pipeline = StableDiffusionWalkPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
torch_dtype=torch.float16,
).to("cuda")
# 歌曲中的秒数。
audio_offsets = [146, 148] # [开始, 结束]
fps = 30 # 测试时使用较低值(5 或 10),高质量时使用较高值(30 或 60)
# 将秒转换为帧
num_interpolation_steps = [(b-a) * fps for a, b in zip(audio_offsets, audio_offsets[1:])]
video_path = pipeline.walk(
prompts=['a cat', 'a dog'],
seeds=[42, 1337],
num_interpolation_steps=num_interpolation_steps,
audio_filepath='audio.mp3',
audio_start_sec=audio_offsets[0],
fps=fps,
height=512, # 如果 > 512 使用 64 的倍数。如果 < 512 使用 8 的倍数。
width=512, # 如果 > 512 使用 64 的倍数。如果 < 512 使用 8 的倍数。
output_dir='dreams', # 图片/视频保存路径
guidance_scale=7.5, # 数值越高越遵循提示,数值越低模型的自由度越高
num_inference_steps=50, # 每生成一张图片的扩散步数。50 是一个不错的默认值
)
使用界面
from stable_diffusion_videos import StableDiffusionWalkPipeline, Interface
import torch
pipeline = StableDiffusionWalkPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
torch_dtype=torch.float16,
).to("cuda")
interface = Interface(pipeline)
interface.launch()
致谢
这项工作基于 @karpathy 分享的 脚本。该脚本被修改为 这里的 gist,然后进一步更新/修改为这个仓库。
贡献
你可以在 这里 提交问题或功能请求
享受吧 🤗