mirror of
https://github.com/ParisNeo/lollms.git
synced 2024-12-20 21:23:17 +00:00
text to video
This commit is contained in:
parent
533183115f
commit
62df82e8e3
63
lollms/services/cogvideo_x/lollms_cogvideo_x.py
Normal file
63
lollms/services/cogvideo_x/lollms_cogvideo_x.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import pipmaster as pm
|
||||||
|
import pkg_resources
|
||||||
|
# Check and install required packages
|
||||||
|
required_packages = [
|
||||||
|
["torch","","https://download.pytorch.org/whl/cu121"],
|
||||||
|
["diffusers","0.30.1",None],
|
||||||
|
["transformers","4.44.2",None],
|
||||||
|
["accelerate","0.33.0",None],
|
||||||
|
["imageio-ffmpeg","0.5.1",None]
|
||||||
|
]
|
||||||
|
|
||||||
|
for package, min_version, index_url in required_packages:
|
||||||
|
if not pm.is_installed(package):
|
||||||
|
pm.install_or_update(package, index_url)
|
||||||
|
else:
|
||||||
|
if min_version:
|
||||||
|
if pkg_resources.parse_version(pm.get_installed_version(package))< pkg_resources.parse_version(min_version):
|
||||||
|
pm.install_or_update(package, index_url)
|
||||||
|
|
||||||
|
import torch
|
||||||
|
from diffusers import CogVideoXPipeline
|
||||||
|
from diffusers.utils import export_to_video
|
||||||
|
from typing import List, Optional
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from lollms.ttv import LollmsTTV
|
||||||
|
|
||||||
|
|
||||||
|
class CogVideoX(LollmsTTV):
|
||||||
|
def __init__(self, model_name: str = "THUDM/CogVideoX-5b", torch_dtype=torch.bfloat16):
|
||||||
|
self.pipe = CogVideoXPipeline.from_pretrained(
|
||||||
|
model_name,
|
||||||
|
torch_dtype=torch_dtype
|
||||||
|
)
|
||||||
|
self.pipe.enable_model_cpu_offload()
|
||||||
|
self.pipe.vae.enable_tiling()
|
||||||
|
|
||||||
|
def generate_video(self, prompt: str, num_frames: int = 49, fps: int = 8,
|
||||||
|
num_inference_steps: int = 50, guidance_scale: float = 6.0,
|
||||||
|
seed: Optional[int] = None) -> str:
|
||||||
|
if seed is not None:
|
||||||
|
generator = torch.Generator(device="cuda").manual_seed(seed)
|
||||||
|
else:
|
||||||
|
generator = None
|
||||||
|
|
||||||
|
video = self.pipe(
|
||||||
|
prompt=prompt,
|
||||||
|
num_videos_per_prompt=1,
|
||||||
|
num_inference_steps=num_inference_steps,
|
||||||
|
num_frames=num_frames,
|
||||||
|
guidance_scale=guidance_scale,
|
||||||
|
generator=generator,
|
||||||
|
).frames[0]
|
||||||
|
|
||||||
|
output_path = "output.mp4"
|
||||||
|
export_to_video(video, output_path, fps=fps)
|
||||||
|
return output_path
|
||||||
|
|
||||||
|
# Usage example:
|
||||||
|
if __name__ == "__main__":
|
||||||
|
cogvideox = CogVideoX()
|
||||||
|
prompt = "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes."
|
||||||
|
output_video = cogvideox.generate_video(prompt)
|
||||||
|
print(f"Video generated and saved to: {output_video}")
|
9
lollms/ttv.py
Normal file
9
lollms/ttv.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
class LollmsTTV(ABC):
|
||||||
|
@abstractmethod
|
||||||
|
def generate_video(self, prompt: str, num_frames: int = 49, fps: int = 8,
|
||||||
|
num_inference_steps: int = 50, guidance_scale: float = 6.0,
|
||||||
|
seed: Optional[int] = None) -> str:
|
||||||
|
pass
|
Loading…
Reference in New Issue
Block a user