forked from huggingface/diffusers
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #185 from huggingface/main
Merge changes
- Loading branch information
Showing
25 changed files
with
2,888 additions
and
246 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
<!--Copyright 2024 The HuggingFace Team. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with | ||
the License. You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on | ||
an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the | ||
specific language governing permissions and limitations under the License. | ||
--> | ||
# CogVideoX | ||
|
||
CogVideoX is a text-to-video generation model focused on creating more coherent videos aligned with a prompt. It achieves this using several methods. | ||
|
||
- a 3D variational autoencoder that compresses videos spatially and temporally, improving compression rate and video accuracy. | ||
|
||
- an expert transformer block to help align text and video, and a 3D full attention module for capturing and creating spatially and temporally accurate videos. | ||
|
||
|
||
|
||
## Load model checkpoints | ||
Model weights may be stored in separate subfolders on the Hub or locally, in which case, you should use the [`~DiffusionPipeline.from_pretrained`] method. | ||
|
||
|
||
```py | ||
from diffusers import CogVideoXPipeline, CogVideoXImageToVideoPipeline | ||
pipe = CogVideoXPipeline.from_pretrained( | ||
"THUDM/CogVideoX-2b", | ||
torch_dtype=torch.float16 | ||
) | ||
|
||
pipe = CogVideoXImageToVideoPipeline.from_pretrained( | ||
"THUDM/CogVideoX-5b-I2V", | ||
torch_dtype=torch.bfloat16 | ||
) | ||
|
||
``` | ||
|
||
## Text-to-Video | ||
For text-to-video, pass a text prompt. By default, CogVideoX generates a 720x480 video for the best results. | ||
|
||
```py | ||
import torch | ||
from diffusers import CogVideoXPipeline | ||
from diffusers.utils import export_to_video | ||
|
||
prompt = "An elderly gentleman, with a serene expression, sits at the water's edge, a steaming cup of tea by his side. He is engrossed in his artwork, brush in hand, as he renders an oil painting on a canvas that's propped up against a small, weathered table. The sea breeze whispers through his silver hair, gently billowing his loose-fitting white shirt, while the salty air adds an intangible element to his masterpiece in progress. The scene is one of tranquility and inspiration, with the artist's canvas capturing the vibrant hues of the setting sun reflecting off the tranquil sea." | ||
|
||
pipe = CogVideoXPipeline.from_pretrained( | ||
"THUDM/CogVideoX-5b", | ||
torch_dtype=torch.bfloat16 | ||
) | ||
|
||
pipe.enable_model_cpu_offload() | ||
pipe.vae.enable_tiling() | ||
|
||
video = pipe( | ||
prompt=prompt, | ||
num_videos_per_prompt=1, | ||
num_inference_steps=50, | ||
num_frames=49, | ||
guidance_scale=6, | ||
generator=torch.Generator(device="cuda").manual_seed(42), | ||
).frames[0] | ||
|
||
export_to_video(video, "output.mp4", fps=8) | ||
|
||
``` | ||
|
||
|
||
<div class="flex justify-center"> | ||
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cogvideox/cogvideox_out.gif" alt="generated image of an astronaut in a jungle"/> | ||
</div> | ||
|
||
|
||
## Image-to-Video | ||
|
||
|
||
You'll use the [THUDM/CogVideoX-5b-I2V](https://huggingface.co/THUDM/CogVideoX-5b-I2V) checkpoint for this guide. | ||
|
||
```py | ||
import torch | ||
from diffusers import CogVideoXImageToVideoPipeline | ||
from diffusers.utils import export_to_video, load_image | ||
|
||
prompt = "A vast, shimmering ocean flows gracefully under a twilight sky, its waves undulating in a mesmerizing dance of blues and greens. The surface glints with the last rays of the setting sun, casting golden highlights that ripple across the water. Seagulls soar above, their cries blending with the gentle roar of the waves. The horizon stretches infinitely, where the ocean meets the sky in a seamless blend of hues. Close-ups reveal the intricate patterns of the waves, capturing the fluidity and dynamic beauty of the sea in motion." | ||
image = load_image(image="cogvideox_rocket.png") | ||
pipe = CogVideoXImageToVideoPipeline.from_pretrained( | ||
"THUDM/CogVideoX-5b-I2V", | ||
torch_dtype=torch.bfloat16 | ||
) | ||
|
||
pipe.vae.enable_tiling() | ||
pipe.vae.enable_slicing() | ||
|
||
video = pipe( | ||
prompt=prompt, | ||
image=image, | ||
num_videos_per_prompt=1, | ||
num_inference_steps=50, | ||
num_frames=49, | ||
guidance_scale=6, | ||
generator=torch.Generator(device="cuda").manual_seed(42), | ||
).frames[0] | ||
|
||
export_to_video(video, "output.mp4", fps=8) | ||
``` | ||
|
||
<div class="flex gap-4"> | ||
<div> | ||
<img class="rounded-xl" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cogvideox/cogvideox_rocket.png"/> | ||
<figcaption class="mt-2 text-center text-sm text-gray-500">initial image</figcaption> | ||
</div> | ||
<div> | ||
<img class="rounded-xl" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cogvideox/cogvideox_outrocket.gif"/> | ||
<figcaption class="mt-2 text-center text-sm text-gray-500">generated video</figcaption> | ||
</div> | ||
</div> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.