目录
已开源:
视频生成模型 Zeroscope_v2_576w 开源 - 腾讯云开发者社区-腾讯云
- import torch
- from diffusers import DiffusionPipeline, DPMSolverMultistepScheduler
- from diffusers.utils import export_to_video
- import os
- # os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
-
- os.environ["HF_TOKEN"] = "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"
- # os.environ['HTTPS_PROXY'] = 'https://127.0.0.1:7890'
-
- # pipe = DiffusionPipeline.from_pretrained(r"D:\360安全浏览器下载", torch_dtype=torch.float16)
- pipe = DiffusionPipeline.from_pretrained("cerspense/zeroscope_v2_576w", torch_dtype=torch.float16,use_auth_token=os.environ["HF_TOKEN"])
- pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
- pipe.enable_model_cpu_offload()
-
- prompt = "Darth Vader is surfing on waves"
- video_frames = pipe(prompt, num_inference_steps=40, height=320, width=576, num_frames=24).frames
- video_path = export_to_video(video_frames)
- print(video_path)
- Traceback (most recent call last):
- File "E:\project\jijia\aaa.py", line 18, in
- video_path = export_to_video(video_frames)
- File "D:\ProgramData\miniconda3\envs\pysd\lib\site-packages\diffusers\utils\export_utils.py", line 135, in export_to_video
- h, w, c = video_frames[0].shape
- ValueError: too many values to unpack (expected 3)
- def export_to_video(
- video_frames: Union[List[np.ndarray], List[PIL.Image.Image]], output_video_path: str = None, fps: int = 10
- ) -> str:
- if is_opencv_available():
- import cv2
- else:
- raise ImportError(BACKENDS_MAPPING["opencv"][1].format("export_to_video"))
-
- if output_video_path is None:
- output_video_path = tempfile.NamedTemporaryFile(suffix=".mp4").name
-
- # Convert PIL images to numpy arrays if needed
- if isinstance(video_frames[0], PIL.Image.Image):
- video_frames = [np.array(frame) for frame in video_frames]
-
- # Ensure the frames are in the correct format
- if isinstance(video_frames[0], np.ndarray):
- # Check if frames are 4-dimensional and handle accordingly
- if len(video_frames[0].shape) == 4:
- video_frames = [frame[0] for frame in video_frames]
-
- # Convert frames to uint8
- video_frames = [(frame * 255).astype(np.uint8) for frame in video_frames]
-
- # Ensure all frames are in (height, width, channels) format
- h, w, c = video_frames[0].shape
- fourcc = cv2.VideoWriter_fourcc(*"mp4v")
- video_writer = cv2.VideoWriter(output_video_path, fourcc, fps=fps, frameSize=(w, h))
-
- for frame in video_frames:
- img = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
- video_writer.write(img)
-
- video_writer.release()
- return output_video_path
-
- def export_to_video_o(
- video_frames: Union[List[np.ndarray], List[PIL.Image.Image]], output_video_path: str = None, fps: int = 10
- ) -> str:
- if is_opencv_available():
- import cv2
- else:
- raise ImportError(BACKENDS_MAPPING["opencv"][1].format("export_to_video"))
- if output_video_path is None:
- output_video_path = tempfile.NamedTemporaryFile(suffix=".mp4").name
-
- if isinstance(video_frames[0], np.ndarray):
- video_frames = [(frame * 255).astype(np.uint8) for frame in video_frames]
-
- elif isinstance(video_frames[0], PIL.Image.Image):
- video_frames = [np.array(frame) for frame in video_frames]
-
- fourcc = cv2.VideoWriter_fourcc(*"mp4v")
- h, w, c = video_frames[0].shape
- video_writer = cv2.VideoWriter(output_video_path, fourcc, fps=fps, frameSize=(w, h))
- for i in range(len(video_frames)):
- img = cv2.cvtColor(video_frames[i], cv2.COLOR_RGB2BGR)
- video_writer.write(img)
- return output_video_path