Buckets:
Apache Lisansı, 2.0 Sürümü ("Lisans") altında lisanslanmıştır;
bu dosyayı, Lisansa uygun olarak kullanabilirsiniz.
Lisansın bir kopyasını şu adresten edinebilirsiniz
http://www.apache.org/licenses/LICENSE-2.0
Uygulanabilir yasa gerektirmedikçe veya yazılı olarak anlaşılmadıkça, yazılım
Lisans kapsamında dağıtılan, "OLDUĞU GİBİ" esasına göre dağıtılır,
HİÇBİR TÜR AÇIK VEYA ZIMMİ GARANTİ VEYA ŞART İÇERMEZ.
İzinleri ve
lisans kapsamındaki kısıtlamalar. -->
Wan
Wan Ekibi tarafından Wan-2.1.
Bu rapor, video üretiminin sınırlarını zorlamak üzere tasarlanmış kapsamlı ve açık bir video temel modeli seti olan Wan'ı sunmaktadır. Ana akım difüzyon dönüştürücü (diffusion transformer) paradigmine dayanan Wan; yeni VAE'miz, ölçeklenebilir ön eğitim stratejileri, büyük ölçekli veri kürasyonu ve otomatik değerlendirme metrikleri gibi bir dizi yenilik yoluyla üretici yeteneklerde önemli ilerlemeler sağlamaktadır. Bu katkılar, modelin performansını ve çok yönlülüğünü kolektif olarak artırmaktadır. Özellikle Wan, dört ana özelle karakterize edilir: Öncü Performans: Milyarlarca görüntü ve videodan oluşan devasa bir veri setinde eğitilen Wan'ın 14B modeli, hem veri hem de model boyutu açısından video üretiminin ölçekleme kurallarını (scaling laws) göstermektedir. Birden fazla dahili ve harici benchmark'ta mevcut açık kaynak modellerin ve en ileri düzey ticari çözümlerin tutarlı olarak önüne geçerek açık ve önemli bir performans üstünlüğü sergilemektedir. Kapsamlılık: Wan, verimlilik ve etkililik için sırasıyla 1.3B ve 14B parametreli iki yetkin model sunmaktadır. Ayrıca görüntüden videoya, talimat yönlendirmeli video düzenleme ve kişisel video üretimi dahil olmak üzere sekize kadar görevi kapsayan birden fazla aşağı akış (downstream) uygulamasını kapsamaktadır. Tüketici Düzeyinde Verimlilik: 1.3B model, yalnızca 8.19 GB VRAM gerektiren olağanüstü kaynak verimliliği göstererek geniş bir tüketici düzeyi GPU yelpazesiyle uyumludur. Açıklık: Video üretim topluluğunun büyümesini teşvik etme hedefiyle, kaynak kodu ve tüm modeller dahil olmak üzere Wan serisinin tamamını açık kaynaklı hale getirdik. Bu açıklık, sektörde video üretiminin yaratıcı olanaklarını önemli ölçüde genişletmeyi ve akademiye yüksek kaliteli video temel modelleri sağlamayı amaçlamaktadır. Tüm kod ve modeller bu https URL adresinde mevcuttur.
Tüm orijinal Wan2.1 checkpoint'lerini Wan-AI kuruluşu altında bulabilirsiniz.
Diffusers'da aşağıdaki Wan modelleri desteklenmektedir:
- Wan 2.1 T2V 1.3B
- Wan 2.1 T2V 14B
- Wan 2.1 I2V 14B - 480P
- Wan 2.1 I2V 14B - 720P
- Wan 2.1 FLF2V 14B - 720P
- Wan 2.1 VACE 1.3B
- Wan 2.1 VACE 14B
- Wan 2.2 T2V 14B
- Wan 2.2 I2V 14B
- Wan 2.2 TI2V 5B
- Wan 2.2 Animate 14B
Daha fazla video üretimi örneği için sağ kenar çubuğundaki Wan modellerine tıklayın.
Metinden Video Üretimi
Aşağıdaki örnek, bellek veya çıkarım hızı için optimize edilmiş metinden video üretiminin nasıl yapılacağını gösterir.
Çeşitli bellek tasarrufu teknikleri hakkında daha fazla ayrıntı için Bellek kullanımını azaltma kılavuzuna bakın.
Aşağıdaki Wan2.1 metinden videoya model ~13GB VRAM gerektirir.
# pip install ftfy
import torch
import numpy as np
from diffusers import AutoModel, WanPipeline
from diffusers.quantizers import PipelineQuantizationConfig
from diffusers.hooks.group_offloading import apply_group_offloading
from diffusers.utils import export_to_video, load_image
from transformers import UMT5EncoderModel
text_encoder = UMT5EncoderModel.from_pretrained("Wan-AI/Wan2.1-T2V-14B-Diffusers", subfolder="text_encoder", dtype=torch.bfloat16)
vae = AutoModel.from_pretrained("Wan-AI/Wan2.1-T2V-14B-Diffusers", subfolder="vae", dtype=torch.float32)
transformer = AutoModel.from_pretrained("Wan-AI/Wan2.1-T2V-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)
# group-offloading
onload_device = torch.device("cuda")
offload_device = torch.device("cpu")
apply_group_offloading(text_encoder,
onload_device=onload_device,
offload_device=offload_device,
offload_type="block_level",
num_blocks_per_group=4
)
transformer.enable_group_offload(
onload_device=onload_device,
offload_device=offload_device,
offload_type="leaf_level",
use_stream=True
)
pipeline = WanPipeline.from_pretrained(
"Wan-AI/Wan2.1-T2V-14B-Diffusers",
vae=vae,
transformer=transformer,
text_encoder=text_encoder,
dtype=torch.bfloat16
)
pipeline.to("cuda") # or "mps", "xpu", "cpu"
prompt = """
The camera rushes from far to near in a low-angle shot,
revealing a white ferret on a log. It plays, leaps into the water, and emerges, as the camera zooms in
for a close-up. Water splashes berry bushes nearby, while moss, snow, and leaves blanket the ground.
Birch trees and a light blue sky frame the scene, with ferns in the foreground. Side lighting casts dynamic
shadows and warm highlights. Medium composition, front view, low angle, with depth of field.
"""
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=81,
guidance_scale=5.0,
).frames[0]
export_to_video(output, "output.mp4", fps=16)
Derleme ilk seferde yavaştır ancak pipeline'a yapılan sonraki çağrılar daha hızlıdır. Önbelleğe alma, ara çıktıları saklayıp yeniden kullanarak çıkarımı hızlandırabilir.
# pip install ftfy
import torch
import numpy as np
from diffusers import AutoModel, WanPipeline
from diffusers.hooks.group_offloading import apply_group_offloading
from diffusers.utils import export_to_video, load_image
from transformers import UMT5EncoderModel
text_encoder = UMT5EncoderModel.from_pretrained("Wan-AI/Wan2.1-T2V-14B-Diffusers", subfolder="text_encoder", dtype=torch.bfloat16)
vae = AutoModel.from_pretrained("Wan-AI/Wan2.1-T2V-14B-Diffusers", subfolder="vae", dtype=torch.float32)
transformer = AutoModel.from_pretrained("Wan-AI/Wan2.1-T2V-14B-Diffusers", subfolder="transformer", dtype=torch.bfloat16)
pipeline = WanPipeline.from_pretrained(
"Wan-AI/Wan2.1-T2V-14B-Diffusers",
vae=vae,
transformer=transformer,
text_encoder=text_encoder,
dtype=torch.bfloat16
)
pipeline.to("cuda") # or "mps", "xpu", "cpu"
# torch.compile
pipeline.transformer.to(memory_format=torch.channels_last)
pipeline.transformer = torch.compile(
pipeline.transformer, mode="max-autotune", fullgraph=True
)
prompt = """
The camera rushes from far to near in a low-angle shot,
revealing a white ferret on a log. It plays, leaps into the water, and emerges, as the camera zooms in
for a close-up. Water splashes berry bushes nearby, while moss, snow, and leaves blanket the ground.
Birch trees and a light blue sky frame the scene, with ferns in the foreground. Side lighting casts dynamic
shadows and warm highlights. Medium composition, front view, low angle, with depth of field.
"""
negative_prompt = """
Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality,
low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured,
misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards
"""
output = pipeline(
prompt=prompt,
negative_prompt=negative_prompt,
num_frames=81,
guidance_scale=5.0,
).frames[0]
export_to_video(output, "output.mp4", fps=16)
İlk-Son-Kare-Video Üretimi
Aşağıdaki örnek, bir metin açıklaması, bir başlangıç karesi ve bir bitiş karesi kullanarak video üretmek için görüntüden video hattının (pipeline) nasıl kullanılacağını göstermektedir.
import numpy as np
import torch
import torchvision.transforms.functional as TF
from diffusers import AutoencoderKLWan, WanImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
from transformers import CLIPVisionModel
model_id = "Wan-AI/Wan2.1-FLF2V-14B-720P-diffusers"
image_encoder = CLIPVisionModel.from_pretrained(model_id, subfolder="image_encoder", dtype=torch.float32)
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)
pipe = WanImageToVideoPipeline.from_pretrained(
model_id, vae=vae, image_encoder=image_encoder, dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
first_frame = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png")
last_frame = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png")
def aspect_ratio_resize(image, pipe, max_area=720 * 1280):
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))
return image, height, width
def center_crop_resize(image, height, width):
# Calculate resize ratio to match first frame dimensions
resize_ratio = max(width / image.width, height / image.height)
# Resize the image
width = round(image.width * resize_ratio)
height = round(image.height * resize_ratio)
size = [width, height]
image = TF.center_crop(image, size)
return image, height, width
first_frame, height, width = aspect_ratio_resize(first_frame, pipe)
if last_frame.size != first_frame.size:
last_frame, _, _ = center_crop_resize(last_frame, height, width)
prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."
output = pipe(
image=first_frame, last_image=last_frame, prompt=prompt, height=height, width=width, guidance_scale=5.5
).frames[0]
export_to_video(output, "output.mp4", fps=16)
Herhangi-Videoya Kontrol Edilebilir Üretim
Wan VACE, kontrollü video üretimi sağlayan çeşitli üretim tekniklerini destekler. Bu yeteneklerden bazıları şunlardır:
- Video Kontrolü (Derinlik, Poz, Taslak, Akış, Grayscale, Karalama, Yerleşim, Sınır Kutusu vb.). Kontrol videoları elde etmek için videoları ön işlemeye yönelik önerilen kütüphane: huggingface/controlnet_aux
- Görsel/Video'dan Video'ya (ilk kare, son kare, başlangıç klipleri, bitiş klipleri, rastgele klipler)
- Inpainting ve Outpainting
- Videoya Göre (yüzler, nesneler, karakterler vb.)
- Bileşimden Video (herhangi bir referans, herhangi bir şeyi animasyonla, herhangi bir şeyi değiştir, herhangi bir şeyi genişlet, herhangi bir şeyi hareket ettir, vb.)
Bu çekme isteğinde (bu) mevcut olan kod parçacıkları, kontrol edilebilirlik sinyalleriyle videoların nasıl üretilebileceğine dair bazı örnekleri göstermektedir.
VACE hattı için girdileri hazırlarken akılda tutulması gereken genel kural, koşullandırmada kullanmak istediğiniz girdi görüntülerinin veya bir videonun karelerinin, siyah renkte bir maskeye sahip olması gerektiğidir. Siyah maske, modelin o alan için yeni içerik üretmeyeceğini ve yalnızca o bölümleri üretim sürecini koşullandırmak için kullanacağını belirtir. Model tarafından üretilmesi gereken kısımlar/kareler için maskenin beyaz renkte olması gerekir.
Wan-Animate: Bütüncül Kopyalama ile Birleşik Karakter Animasyonu ve Değiştirme
Wan Ekibi tarafından Wan-Animate.
Wan-Animate, karakter animasyonu ve değiştirme için birleşik bir çerçeve olarak tanıtıyoruz. Bir karakter görseli ve referans video verildiğinde, Wan-Animate, videodaki karakterin ifadelerini ve hareketlerini hassas bir şekilde kopyalayarak karakteri canlandırır ve yüksek sadakatli karakter videoları üretir. Alternatif olarak, canlandırılmış karakteri referans videoya entegre ederek orijinal karakteri değiştirebilir; sahnenin aydınlatmasını ve renk tonunu kopyalayarak kusursuz bir ortam entegrasyonu sağlar. Wan-Animate, Wan modeli üzerine inşa edilmiştir. Karakter animasyonu görevlerine uyarlamak için, referans koşulları ile üretim bölgeleri arasında ayrım yapmak üzere değiştirilmiş bir girdi paradigması kullanıyoruz. Bu tasarım, birden fazla görevi ortak bir sembolik temsilde birleştirir. Vücut hareketini kopyalamak için uzamsal olarak hizalı iskelet sinyallerini ve ifadeleri yeniden canlandırmak için kaynak görsellerden çıkarılan örtük yüz özelliklerini kullanarak, yüksek kontrol edilebilirliğe ve ifade gücüne sahip karakter videolarının üretimini sağlıyoruz. Ayrıca, karakter değiştirme sırasında ortam entegrasyonunu artırmak için yardımcı bir Relighting LoRA geliştirdik. Bu modül, karakterin görünüm tutarlılığını korurken uygun ortam aydınlatmasını ve renk tonunu uygular. Deneysel sonuçlar, Wan-Animate'in en iyi performansı (state-of-the-art) elde ettiğini göstermektedir. Model ağırlıklarını ve kaynak kodunu açık kaynak olarak yayınlamaya kararlıyız.
Proje sayfası: https://humanaigc.github.io/wan-animate
Bu model büyük ölçüde M. Tolga Cangöz tarafından katkı sağlanmıştır.
Kullanım
Wan-Animate hattı iki çalışma modunu destekler:
- Animasyon Modu (varsayılan): Referans videolardaki hareket ve ifadelere dayalı olarak bir karakter görselini canlandırır
- Yerine Geçirme Modu: Sahneyi koruyarak arka plan videosundaki bir karakteri yeni bir karakterle değiştirir
Ön koşullar
Pipeline kullanmadan önce, referans videonuzu ön işlemeye tabi tutarak şunları çıkarmalısınız:
- Poz videosu: Vücut hareketini temsil eden iskelet anahtar noktalarını içerir
- Yüz videosu: İfade kontrolü için yüz özelliği temsilleri içerir
Değiştirme modu için ek olarak şunlara ihtiyacınız var:
- Arka plan videosu: Sahneyi içeren orijinal video
- Video maskesi: İçerik üretilecek (beyaz) ve orijinalin korunacağı (siyah) bölgeleri gösteren bir maske
Ham videolar, hattın uygun bilgileri çıkarmak için önceden işlenmiş olmasını beklediği
pose_videogibi girdiler için kullanılmamalıdır. Bu girdileri hazırlamak için ön işleme betikleri orijinal Wan-Animate deposunda mevcuttur. Bu ön işleme adımlarının Diffusers'a entegrasyonu, gelecekteki bir sürümde planlanmaktadır.
Aşağıdaki örnek, Wan-Animate hattının nasıl kullanılacağını göstermektedir:
import numpy as np
import torch
from diffusers import AutoencoderKLWan, WanAnimatePipeline
from diffusers.utils import export_to_video, load_image, load_video
model_id = "Wan-AI/Wan2.2-Animate-14B-Diffusers"
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)
pipe = WanAnimatePipeline.from_pretrained(model_id, vae=vae, dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
# Load character image and preprocessed videos
image = load_image("path/to/character.jpg")
pose_video = load_video("path/to/pose_video.mp4") # Preprocessed skeletal keypoints
face_video = load_video("path/to/face_video.mp4") # Preprocessed facial features
# Resize image to match VAE constraints
def aspect_ratio_resize(image, pipe, max_area=720 * 1280):
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))
return image, height, width
image, height, width = aspect_ratio_resize(image, pipe)
prompt = "A person dancing energetically in a studio with dynamic lighting and professional camera work"
negative_prompt = "blurry, low quality, distorted, deformed, static, poorly drawn"
# Generate animated video
output = pipe(
image=image,
pose_video=pose_video,
face_video=face_video,
prompt=prompt,
negative_prompt=negative_prompt,
height=height,
width=width,
segment_frame_length=77,
guidance_scale=1.0,
mode="animate", # Animation mode (default)
).frames[0]
export_to_video(output, "animated_character.mp4", fps=30)
import numpy as np
import torch
from diffusers import AutoencoderKLWan, WanAnimatePipeline
from diffusers.utils import export_to_video, load_image, load_video
model_id = "Wan-AI/Wan2.2-Animate-14B-Diffusers"
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)
pipe = WanAnimatePipeline.from_pretrained(model_id, vae=vae, dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
# Load all required inputs for replacement mode
image = load_image("path/to/new_character.jpg")
pose_video = load_video("path/to/pose_video.mp4") # Preprocessed skeletal keypoints
face_video = load_video("path/to/face_video.mp4") # Preprocessed facial features
background_video = load_video("path/to/background_video.mp4") # Original scene
mask_video = load_video("path/to/mask_video.mp4") # Black: preserve, White: generate
# Resize image to match video dimensions
def aspect_ratio_resize(image, pipe, max_area=720 * 1280):
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))
return image, height, width
image, height, width = aspect_ratio_resize(image, pipe)
prompt = "A person seamlessly integrated into the scene with consistent lighting and environment"
negative_prompt = "blurry, low quality, inconsistent lighting, floating, disconnected from scene"
# Replace character in background video
output = pipe(
image=image,
pose_video=pose_video,
face_video=face_video,
background_video=background_video,
mask_video=mask_video,
prompt=prompt,
negative_prompt=negative_prompt,
height=height,
width=width,
segment_frame_lengths=77,
guidance_scale=1.0,
mode="replace", # Replacement mode
).frames[0]
export_to_video(output, "character_replaced.mp4", fps=30)
import numpy as np
import torch
from diffusers import AutoencoderKLWan, WanAnimatePipeline
from diffusers.utils import export_to_video, load_image, load_video
model_id = "Wan-AI/Wan2.2-Animate-14B-Diffusers"
vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", dtype=torch.float32)
pipe = WanAnimatePipeline.from_pretrained(model_id, vae=vae, dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = load_image("path/to/character.jpg")
pose_video = load_video("path/to/pose_video.mp4")
face_video = load_video("path/to/face_video.mp4")
def aspect_ratio_resize(image, pipe, max_area=720 * 1280):
aspect_ratio = image.height / image.width
mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
image = image.resize((width, height))
return image, height, width
image, height, width = aspect_ratio_resize(image, pipe)
prompt = "A person dancing energetically in a studio"
negative_prompt = "blurry, low quality"
# Advanced: Use temporal guidance and custom callback
def callback_fn(pipe, step_index, timestep, callback_kwargs):
# You can modify latents or other tensors here
print(f"Step {step_index}, Timestep {timestep}")
return callback_kwargs
output = pipe(
image=image,
pose_video=pose_video,
face_video=face_video,
prompt=prompt,
negative_prompt=negative_prompt,
height=height,
width=width,
segment_frame_length=77,
num_inference_steps=50,
guidance_scale=5.0,
prev_segment_conditioning_frames=5, # Use 5 frames for temporal guidance (1 or 5 recommended)
callback_on_step_end=callback_fn,
callback_on_step_end_tensor_inputs=["latents"],
).frames[0]
export_to_video(output, "animated_advanced.mp4", fps=30)
Önemli Parametreler
- mode:
"animate"(varsayılan) veya"replace"arasında seçim yapın - prev_segment_conditioning_frames: Zamanlama yönlendirmesi için kare sayısı (1 veya 5 önerilir). 5 kullanmak daha iyi zamanlama tutarlılığı sağlar ancak daha fazla bellek gerektirir
- guidance_scale: Çıktının metin komutuna ne kadar sadık kaldığını kontrol eder. Daha yüksek değerler (5-7), komutla daha uyumlu sonuçlar üretir. Wan-Animate için CFG varsayılan olarak devre dışıdır (
guidance_scale=1.0) ancak negatif komutları desteklemek ve yüz ifadeleri üzerinde daha ince bir kontrol sağlamak için etkinleştirilebilir. (CFG'nin yalnızca metin komutunu ve yüz koşullandırmasını hedefleyeceğini unutmayın.)
Notlar
Wan2.1, load_lora_weights() ile LoRA'ları destekler.
Örnek kodu göster
# pip install ftfy import torch from diffusers import AutoModel, WanPipeline from diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler from diffusers.utils import export_to_video vae = AutoModel.from_pretrained( "Wan-AI/Wan2.1-T2V-1.3B-Diffusers", subfolder="vae", dtype=torch.float32 ) pipeline = WanPipeline.from_pretrained( "Wan-AI/Wan2.1-T2V-1.3B-Diffusers", vae=vae, dtype=torch.bfloat16 ) pipeline.scheduler = UniPCMultistepScheduler.from_config( pipeline.scheduler.config, flow_shift=5.0 ) pipeline.to("cuda") # or "mps", "xpu", "cpu" pipeline.load_lora_weights("benjamin-paine/steamboat-willie-1.3b", adapter_name="steamboat-willie") pipeline.set_adapters("steamboat-willie") pipeline.enable_model_cpu_offload() # use "steamboat willie style" to trigger the LoRA prompt = """ steamboat willie style, golden era animation, The camera rushes from far to near in a low-angle shot, revealing a white ferret on a log. It plays, leaps into the water, and emerges, as the camera zooms in for a close-up. Water splashes berry bushes nearby, while moss, snow, and leaves blanket the ground. Birch trees and a light blue sky frame the scene, with ferns in the foreground. Side lighting casts dynamic shadows and warm highlights. Medium composition, front view, low angle, with depth of field. """ output = pipeline( prompt=prompt, num_frames=81, guidance_scale=5.0, ).frames[0] export_to_video(output, "output.mp4", fps=16)WanTransformer3DModel ve AutoencoderKLWan, from_single_file() ile tek dosyalardan yükleme destekler.
Örnek kodu göster
# pip install ftfy import torch from diffusers import WanPipeline, WanTransformer3DModel, AutoencoderKLWan vae = AutoencoderKLWan.from_single_file( "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/blob/main/split_files/vae/wan_2.1_vae.safetensors" ) transformer = WanTransformer3DModel.from_single_file( "https://huggingface.co/Comfy-Org/Wan_2.1_ComfyUI_repackaged/blob/main/split_files/diffusion_models/wan2.1_t2v_1.3B_bf16.safetensors", dtype=torch.bfloat16 ) pipeline = WanPipeline.from_pretrained( "Wan-AI/Wan2.1-T2V-1.3B-Diffusers", vae=vae, transformer=transformer, dtype=torch.bfloat16 )Daha iyi çözme kalitesi için AutoencoderKLWan veri türünü
torch.float32olarak ayarlayın.Saniyedeki kare sayısı (fps) veya
k,4 * k + 1ile hesaplanmalıdır.Düşük çözünürlüklü videolar için daha düşük
shiftdeğerlerini (2.0ile5.0arası) ve yüksek çözünürlüklü görüntüler için daha yüksekshiftdeğerlerini (7.0ile12.0arası) deneyin.Wan 2.1 ve 2.2, çıkarımı hızlandırmak için LightX2V LoRAs kullanımını destekler. Bunların Wan 2.2 üzerinde kullanımı biraz daha karmaşıktır. Daha fazla bilgi için bu kod parçasına bakın.
Wan 2.2 iki gürültü azaltıcıya (denoiser) sahiptir. Varsayılan olarak LoRA'lar yalnızca ilk gürültü azaltıcıya yüklenir. LoRA'ları ikinci gürültü azaltıcıya yüklemek için
load_into_transformer_2=Truedeğerini ayarlayabilirsiniz. Daha fazla bilgi için bu ve bu örneklerine bakın.
WanPipeline[[diffusers.WanPipeline]]
diffusers.WanPipeline[[diffusers.WanPipeline]]
diffusers.WanPipeline(tokenizer: AutoTokenizer, text_encoder: UMT5EncoderModel, vae: AutoencoderKLWan, scheduler: FlowMatchEulerDiscreteScheduler, transformer: diffusers.models.transformers.transformer_wan.WanTransformer3DModel | None = None, transformer_2: diffusers.models.transformers.transformer_wan.WanTransformer3DModel | None = None, boundary_ratio: float | None = None, expand_timesteps: bool = False)
Parametreler:
tokenizer (T5Tokenizer) : T5'den gelen tokenizer, özellikle google/umt5-xxl varyantı.
text_encoder (T5EncoderModel) : T5, özellikle google/umt5-xxl varyantı.
transformer (WanTransformer3DModel) : Girdi latentlerini gürültüden arındırmak için kullanılan koşullu Transformer.
scheduler (UniPCMultistepScheduler) : Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
vae (AutoencoderKLWan) : Video'ları latent temsillere kodlamak ve latent temsillerden video'lara çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
transformer_2 (WanTransformer3DModel, isteğe bağlı) : Düşük gürültü aşamasında giriş latentlerini gürültüden arındırmak için kullanılan koşullu Transformer. Sağlanırsa, transformer'ın yüksek gürültü aşamalarını ve transformer_2'nin düşük gürültü aşamalarını ele aldığı iki aşamalı gürültüden arındırma etkinleştirilir. Sağlanmazsa yalnızca transformer kullanılır.
boundary_ratio (float, isteğe bağlı, varsayılan None) : İki aşamalı gürültüden arındırma (denoising) sırasında transformer'ler arasında geçiş için sınır olarak kullanılacak toplam zaman adımlarının oranı. Gerçek sınır zaman adımı boundary_ratio * num_train_timesteps olarak hesaplanır. Değer verildiğinde, transformer boundary_timestep'e eşit veya büyük olan zaman adımlarını, transformer_2 ise boundary_timestep'ten küçük olan zaman adımlarını işler. None ise, gürültüden arındırma sürecinin tamamında yalnızca transformer kullanılır.
Wan kullanılarak metinden videoya üretim için Pipeline.
Bu model DiffusionPipeline sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.
call[[diffusers.WanPipeline.call]]
__call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 480, width: int = 832, num_frames: int = 81, num_inference_steps: int = 50, guidance_scale: float = 5.0, guidance_scale_2: float | None = None, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 512)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds geçirin.
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretim sırasında kaçınılması gereken istem veya istemler. Tanımlanmamışsa bunun yerine negative_prompt_embeds geçirin. Rehberlik kullanılmadığında (guidance_scale < 1) yok sayılır.
height (int, varsayılan 480) : Üretilen görüntünün piksel cinsinden yüksekliği.
width (int, varsayılan 832) : Üretilen görüntünün piksel cinsinden genişliği.
num_frames (int, varsayılan 81) : Üretilen videodaki kare sayısı.
num_inference_steps (int, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı, genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
guidance_scale (float, varsayılan 5.0) : Classifier-Free Diffusion Guidance'de tanımlanan yönlendirme ölçeği. guidance_scale, Imagen Paper'deki 2. denklemindeki w olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, prompt ile yakından ilişkili görüntülerin üretilmesini teşvik eder.
guidance_scale_2 (float, isteğe bağlı, varsayılan None) : Düşük gürültü aşaması dönüştürücüsü (transformer_2) için yönlendirme ölçeği. None ise ve hattın boundary_ratio değeri None değilse, guidance_scale ile aynı değer kullanılır. Yalnızca transformer_2 ve hattın boundary_ratio değeri None olmadığında kullanılır.
num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) : Her istem için üretilecek görsel sayısı.
generator (torch.Generator veya list[torch.Generator], isteğe bağlı) : Üretimi deterministik hale getirmek için bir torch.Generator.
latents (torch.Tensor, isteğe bağlı) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.
prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından üretilir.
output_type (str, isteğe bağlı, varsayılan "np") : Üretilen görüntünün çıktı biçimi. PIL.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine WanPipelineOutput döndürülecek mi?
attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsiyonel) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, PipelineCallback veya MultiPipelineCallbacks alt sınıfı olan bir fonksiyon. Aşağıdaki argümanlarla çağrılır: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtildiği üzere tüm tensörlerin listesini içerecektir.
callback_on_step_end_tensor_inputs (list, isteğe bağlı) : callback_on_step_end işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, callback_kwargs argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın ._callback_tensor_inputs özniteliğinde listelenen değişkenleri dahil edebilirsiniz.
max_sequence_length (int, varsayılan 512) : Metin kodlayıcısının maksimum dizi uzunluğu. İfade bu uzunluktan uzunsa kısaltılır. İfade bu uzunluktan kısaysa bu uzunluğa kadar dolgu yapılır.
Dönüş: ~WanPipelineOutput veya tuple
return_dict True ise WanPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu yapıda ilk öğe üretilen görsellerin listesini, ikinci öğe ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> import torch
>>> from diffusers.utils import export_to_video
>>> from diffusers import AutoencoderKLWan, WanPipeline
>>> from diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler
>>> # Available models: Wan-AI/Wan2.1-T2V-14B-Diffusers, Wan-AI/Wan2.1-T2V-1.3B-Diffusers
>>> model_id = "Wan-AI/Wan2.1-T2V-14B-Diffusers"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> flow_shift = 5.0 # 5.0 for 720P, 3.0 for 480P
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe.to("cuda")
>>> prompt = "A cat and a dog baking a cake together in a kitchen. The cat is carefully measuring flour, while the dog is stirring the batter with a wooden spoon. The kitchen is cozy, with sunlight streaming through the window."
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
>>> output = pipe(
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=720,
... width=1280,
... num_frames=81,
... guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=16)
encode_prompt[[diffusers.WanPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : kodlanacak istem
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
do_classifier_free_guidance (bool, isteğe bağlı, varsayılan True) : Sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı.
num_videos_per_prompt (int, opsiyonel, varsayılan 1) : Her istem için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı
prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
device : (torch.device, isteğe bağlı): torch cihazı
dtype : (torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
WanImageToVideoPipeline[[diffusers.WanImageToVideoPipeline]]
diffusers.WanImageToVideoPipeline[[diffusers.WanImageToVideoPipeline]]
diffusers.WanImageToVideoPipeline(tokenizer: AutoTokenizer, text_encoder: UMT5EncoderModel, vae: AutoencoderKLWan, scheduler: FlowMatchEulerDiscreteScheduler, image_processor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModel = None, transformer: WanTransformer3DModel = None, transformer_2: WanTransformer3DModel = None, boundary_ratio: float | None = None, expand_timesteps: bool = False)
Parametreler:
tokenizer (T5Tokenizer) : T5'den gelen tokenizer, özellikle google/umt5-xxl varyantı.
text_encoder (T5EncoderModel) : T5, özellikle google/umt5-xxl varyantı.
image_encoder (CLIPVisionModel) : CLIP, özellikle clip-vit-huge-patch14 varyantı.
transformer (WanTransformer3DModel) : Girdi latentlerini gürültüden arındırmak için kullanılan koşullu Transformer.
scheduler (UniPCMultistepScheduler) : Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
vae (AutoencoderKLWan) : Video'ları latent temsillere kodlamak ve latent temsillerden video'lara çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
transformer_2 (WanTransformer3DModel, isteğe bağlı) : Düşük gürültü aşamasında giriş latentlerini gürültüden arındırmak için kullanılan koşullu Transformer. İki aşamalı gürültüden arındırma işleminde transformer yüksek gürültü aşamalarını, transformer_2 ise düşük gürültü aşamalarını işler. Sağlanmazsa yalnızca transformer kullanılır.
boundary_ratio (float, isteğe bağlı, varsayılan None) : İki aşamalı gürültüden arındırma (denoising) sırasında transformer'ler arasında geçiş için sınır olarak kullanılacak toplam zaman adımlarının oranı. Gerçek sınır zaman adımı boundary_ratio * num_train_timesteps olarak hesaplanır. Değer verildiğinde, transformer boundary_timestep'e eşit veya büyük olan zaman adımlarını, transformer_2 ise boundary_timestep'ten küçük olan zaman adımlarını işler. None ise, gürültüden arındırma sürecinin tamamında yalnızca transformer kullanılır.
Wan kullanılarak görüntüden videoya üretim için Pipeline.
Bu model DiffusionPipeline sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.
call[[diffusers.WanImageToVideoPipeline.call]]
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 480, width: int = 832, num_frames: int = 81, num_inference_steps: int = 50, guidance_scale: float = 5.0, guidance_scale_2: float | None = None, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, last_image: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 512)
Parametreler:
image (PipelineImageInput) : Üretimi koşullandırmak için girdi olarak kullanılan görüntü. Bir görüntü, görüntü listesi veya torch.Tensor olmalıdır.
last_image (torch.Tensor, isteğe bağlı) : Üretilen videoyu koşullandırmak için isteğe bağlı son kare. Sağlandığında, model image (ilk kare) ile last_image (son kare) arasında interpolasyon yapar.
prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine prompt_embeds geçirilmelidir.
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
height (int, varsayılan 480) : Üretilen videonun yüksekliği.
width (int, varsayılan 832) : Üretilen videonun genişliği.
num_frames (int, varsayılan 81) : Üretilen videodaki kare sayısı.
num_inference_steps (int, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı, genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
guidance_scale (float, varsayılan 5.0) : Classifier-Free Diffusion Guidance'de tanımlanan yönlendirme ölçeği. guidance_scale, Imagen Paper'deki 2. denklemindeki w olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, prompt ile yakından ilişkili görüntülerin üretilmesini teşvik eder.
guidance_scale_2 (float, isteğe bağlı, varsayılan None) : Düşük gürültü aşaması dönüştürücüsü (transformer_2) için yönlendirme ölçeği. None ise ve hattın boundary_ratio değeri None değilse, guidance_scale ile aynı değer kullanılır. Yalnızca transformer_2 ve hattın boundary_ratio değeri None olmadığında kullanılır.
num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) : Her istem için üretilecek görsel sayısı.
generator (torch.Generator veya list[torch.Generator], isteğe bağlı) : Üretimi deterministik hale getirmek için bir torch.Generator.
latents (torch.Tensor, isteğe bağlı) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.
prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri negative_prompt girdi argümanından üretilir.
image_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş görsel gömme (embedding) değerleri. Görsel girdileri (ağırlıklandırma) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, görsel gömme değerleri image girdi argümanından üretilir.
output_type (str, isteğe bağlı, varsayılan "np") : Üretilen görüntünün çıktı biçimi. PIL.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine WanPipelineOutput döndürülecek mi?
attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsiyonel) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, PipelineCallback veya MultiPipelineCallbacks alt sınıfı olan bir fonksiyon. Aşağıdaki argümanlarla çağrılır: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtildiği üzere tüm tensörlerin listesini içerecektir.
callback_on_step_end_tensor_inputs (list, isteğe bağlı) : callback_on_step_end işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, callback_kwargs argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın ._callback_tensor_inputs özniteliğinde listelenen değişkenleri dahil edebilirsiniz.
max_sequence_length (int, varsayılan 512) : Metin kodlayıcısının maksimum dizi uzunluğu. İfade bu uzunluktan uzunsa kısaltılır. İfade bu uzunluktan kısaysa bu uzunluğa kadar dolgu yapılır.
Dönüş: ~WanPipelineOutput veya tuple
return_dict True ise WanPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu yapıda ilk öğe üretilen görsellerin listesini, ikinci öğe ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> import torch
>>> import numpy as np
>>> from diffusers import AutoencoderKLWan, WanImageToVideoPipeline
>>> from diffusers.utils import export_to_video, load_image
>>> from transformers import CLIPVisionModel
>>> # Available models: Wan-AI/Wan2.1-I2V-14B-480P-Diffusers, Wan-AI/Wan2.1-I2V-14B-720P-Diffusers
>>> model_id = "Wan-AI/Wan2.1-I2V-14B-480P-Diffusers"
>>> image_encoder = CLIPVisionModel.from_pretrained(
... model_id, subfolder="image_encoder", torch_dtype=torch.float32
... )
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = WanImageToVideoPipeline.from_pretrained(
... model_id, vae=vae, image_encoder=image_encoder, torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
... )
>>> max_area = 480 * 832
>>> aspect_ratio = image.height / image.width
>>> mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1]
>>> height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value
>>> width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value
>>> image = image.resize((width, height))
>>> prompt = (
... "An astronaut hatching from an egg, on the surface of the moon, the darkness and depth of space realised in "
... "the background. High quality, ultrarealistic detail and breath-taking movie-like camera shot."
... )
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
>>> output = pipe(
... image=image,
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=height,
... width=width,
... num_frames=81,
... guidance_scale=5.0,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=16)
encode_prompt[[diffusers.WanImageToVideoPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : kodlanacak istem
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
do_classifier_free_guidance (bool, isteğe bağlı, varsayılan True) : Sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı.
num_videos_per_prompt (int, opsiyonel, varsayılan 1) : Her istem için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı
prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
device : (torch.device, isteğe bağlı): torch cihazı
dtype : (torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
WanVACEPipeline[[diffusers.WanVACEPipeline]]
diffusers.WanVACEPipeline[[diffusers.WanVACEPipeline]]
diffusers.WanVACEPipeline(tokenizer: AutoTokenizer, text_encoder: UMT5EncoderModel, vae: AutoencoderKLWan, scheduler: FlowMatchEulerDiscreteScheduler, transformer: WanVACETransformer3DModel = None, transformer_2: WanVACETransformer3DModel = None, boundary_ratio: float | None = None)
Parametreler:
tokenizer (T5Tokenizer) : T5'den gelen tokenizer, özellikle google/umt5-xxl varyantı.
text_encoder (T5EncoderModel) : T5, özellikle google/umt5-xxl varyantı.
vae (AutoencoderKLWan) : Video'ları latent temsillere kodlamak ve latent temsillerden video'lara çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
scheduler (UniPCMultistepScheduler) : Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
transformer (WanVACETransformer3DModel, isteğe bağlı) : Yüksek gürültü aşamasında giriş latentlerini gürültüden arındırmak için kullanılan koşullu Transformer. İki aşamalı gürültüden arındırma işleminde transformer yüksek gürültü aşamalarını, transformer_2 ise düşük gürültü aşamalarını işler. transformer veya transformer_2 parametrelerinden en az biri sağlanmalıdır.
transformer_2 (WanVACETransformer3DModel, isteğe bağlı) : Düşük gürültü aşamasında giriş latentlerini gürültüden arındırmak için kullanılan koşullu Transformer. İki aşamalı gürültüden arındırma işleminde transformer yüksek gürültü aşamalarını, transformer_2 ise düşük gürültü aşamalarını işler. transformer veya transformer_2 parametrelerinden en az birinin sağlanması gerekir.
boundary_ratio (float, isteğe bağlı, varsayılan None) : İki aşamalı gürültüden arındırma sırasında transformer'ler arasında geçiş için sınır olarak kullanılacak toplam zaman adımlarının oranı. Gerçek sınır zaman adımı boundary_ratio * num_train_timesteps olarak hesaplanır. Değer verildiğinde, transformer >= boundary_timestep olan zaman adımlarını, transformer_2 ise < boundary_timestep olan zaman adımlarını işler. None ise, gürültüden arındırma sürecinin tamamında yalnızca mevcut transformer kullanılır.
Wan kullanılarak kontrollü üretim için Pipeline.
Bu model DiffusionPipeline sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.
call[[diffusers.WanVACEPipeline.call]]
__call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, video: list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]] | None = None, mask: list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]] | None = None, reference_images: list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]] | None = None, conditioning_scale: typing.Union[float, list[float], torch.Tensor] = 1.0, height: int = 480, width: int = 832, num_frames: int = 81, num_inference_steps: int = 50, guidance_scale: float = 5.0, guidance_scale_2: float | None = None, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 512)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine prompt_embeds geçirilmelidir.
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
video (list[PIL.Image.Image], isteğe bağlı) : Üretimin başlangıç noktası olarak kullanılacak girdi video veya videoları. Video, PIL görüntülerinin bir listesi, bir numpy dizisi veya bir torch tensörü olmalıdır. Şu anda pipeline yalnızca bir seferde bir video üretmeyi destekler.
mask (list[PIL.Image.Image], isteğe bağlı) : Girdi maskesi, hangi video bölgelerinin koşul olarak kullanılacağını ve hangilerinin oluşturulacağını tanımlar. Maskedeki siyah alanlar koşul bölgelerini, beyaz alanlar ise üretim bölgelerini belirtir. Maske, PIL görüntülerinin bir listesi, bir numpy dizisi veya bir torch tensörü olmalıdır. Şu anda bir seferde tek bir video oluşturulmasını destekler.
reference_images (list[PIL.Image.Image], isteğe bağlı) : Üretim için ek koşullandırma olarak bir veya daha fazla referans görüntüsünün listesi. Örneğin, bir videoyu karakteri değiştirmek için inpaint işlemine tabi tutuyorsanız, yeni karakterin referans görüntülerini buraya iletebilirsiniz. Desteklenen görevlerin ve kullanım durumlarının tam listesi için Diffusers örneklerine ve orijinal kullanıcı kılavuzuna bakın.
conditioning_scale (float, list[float], torch.Tensor, varsayılan 1.0) : Modelin her kontrol katmanında, gürültüden arındırma latent akışına kontrol koşullandırma latent akışının eklenmesi sırasında uygulanacak koşullandırma ölçeği. Bir float değeri sağlanırsa, tüm katmanlara eşit olarak uygulanır. Bir liste veya tensör sağlanırsa, modeldeki kontrol katmanlarının sayısı (len(transformer.config.vace_layers)) ile aynı uzunlukta olmalıdır.
height (int, varsayılan 480) : Üretilen görüntünün piksel cinsinden yüksekliği.
width (int, varsayılan 832) : Üretilen görüntünün piksel cinsinden genişliği.
num_frames (int, varsayılan 81) : Üretilen videodaki kare sayısı.
num_inference_steps (int, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı, genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
guidance_scale (float, varsayılan 5.0) : Classifier-Free Diffusion Guidance'de tanımlanan yönlendirme ölçeği. guidance_scale, Imagen Paper'deki 2. denklemindeki w olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, prompt ile yakından ilişkili görüntülerin üretilmesini teşvik eder.
guidance_scale_2 (float, isteğe bağlı, varsayılan None) : Düşük gürültü aşaması dönüştürücüsü (transformer_2) için yönlendirme ölçeği. None ise ve hattın boundary_ratio değeri None değilse, guidance_scale ile aynı değer kullanılır. Yalnızca transformer_2 ve hattın boundary_ratio değeri None olmadığında kullanılır.
num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) : Her istem için üretilecek görsel sayısı.
generator (torch.Generator veya list[torch.Generator], isteğe bağlı) : Üretimi deterministik hale getirmek için bir torch.Generator.
latents (torch.Tensor, isteğe bağlı) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.
prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından üretilir.
output_type (str, isteğe bağlı, varsayılan "np") : Üretilen görüntünün çıktı biçimi. PIL.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine WanPipelineOutput döndürülecek mi?
attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsiyonel) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, PipelineCallback veya MultiPipelineCallbacks alt sınıfı olan bir fonksiyon. Aşağıdaki argümanlarla çağrılır: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtildiği üzere tüm tensörlerin listesini içerecektir.
callback_on_step_end_tensor_inputs (list, isteğe bağlı) : callback_on_step_end işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, callback_kwargs argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın ._callback_tensor_inputs özniteliğinde listelenen değişkenleri dahil edebilirsiniz.
max_sequence_length (int, varsayılan 512) : Metin kodlayıcısının maksimum dizi uzunluğu. İfade bu uzunluktan uzunsa kısaltılır. İfade bu uzunluktan kısaysa bu uzunluğa kadar dolgu yapılır.
Dönüş: ~WanPipelineOutput veya tuple
return_dict True ise WanPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu yapıda ilk öğe üretilen görsellerin listesini, ikinci öğe ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> import torch
>>> import PIL.Image
>>> from diffusers import AutoencoderKLWan, WanVACEPipeline
>>> from diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler
>>> from diffusers.utils import export_to_video, load_image
def prepare_video_and_mask(first_img: PIL.Image.Image, last_img: PIL.Image.Image, height: int, width: int, num_frames: int):
first_img = first_img.resize((width, height))
last_img = last_img.resize((width, height))
frames = []
frames.append(first_img)
# Ideally, this should be 127.5 to match original code, but they perform computation on numpy arrays
# whereas we are passing PIL images. If you choose to pass numpy arrays, you can set it to 127.5 to
# match the original code.
frames.extend([PIL.Image.new("RGB", (width, height), (128, 128, 128))] * (num_frames - 2))
frames.append(last_img)
mask_black = PIL.Image.new("L", (width, height), 0)
mask_white = PIL.Image.new("L", (width, height), 255)
mask = [mask_black, *[mask_white] * (num_frames - 2), mask_black]
return frames, mask
>>> # Available checkpoints: Wan-AI/Wan2.1-VACE-1.3B-diffusers, Wan-AI/Wan2.1-VACE-14B-diffusers
>>> model_id = "Wan-AI/Wan2.1-VACE-1.3B-diffusers"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = WanVACEPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> flow_shift = 3.0 # 5.0 for 720P, 3.0 for 480P
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe.to("cuda")
>>> prompt = "CG animation style, a small blue bird takes off from the ground, flapping its wings. The bird's feathers are delicate, with a unique pattern on its chest. The background shows a blue sky with white clouds under bright sunshine. The camera follows the bird upward, capturing its flight and the vastness of the sky from a close-up, low-angle perspective."
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
>>> first_frame = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_first_frame.png"
... )
>>> last_frame = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flf2v_input_last_frame.png>>> "
... )
>>> height = 512
>>> width = 512
>>> num_frames = 81
>>> video, mask = prepare_video_and_mask(first_frame, last_frame, height, width, num_frames)
>>> output = pipe(
... video=video,
... mask=mask,
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=height,
... width=width,
... num_frames=num_frames,
... num_inference_steps=30,
... guidance_scale=5.0,
... generator=torch.Generator().manual_seed(42),
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=16)
encode_prompt[[diffusers.WanVACEPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : kodlanacak istem
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
do_classifier_free_guidance (bool, isteğe bağlı, varsayılan True) : Sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı.
num_videos_per_prompt (int, opsiyonel, varsayılan 1) : Her istem için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı
prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
device : (torch.device, isteğe bağlı): torch cihazı
dtype : (torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
WanVideoToVideoPipeline[[diffusers.WanVideoToVideoPipeline]]
diffusers.WanVideoToVideoPipeline[[diffusers.WanVideoToVideoPipeline]]
diffusers.WanVideoToVideoPipeline(tokenizer: AutoTokenizer, text_encoder: UMT5EncoderModel, transformer: WanTransformer3DModel, vae: AutoencoderKLWan, scheduler: FlowMatchEulerDiscreteScheduler)
Parametreler:
tokenizer (T5Tokenizer) : T5'den gelen tokenizer, özellikle google/umt5-xxl varyantı.
text_encoder (T5EncoderModel) : T5, özellikle google/umt5-xxl varyantı.
transformer (WanTransformer3DModel) : Girdi latentlerini gürültüden arındırmak için kullanılan koşullu Transformer.
scheduler (UniPCMultistepScheduler) : Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
vae (AutoencoderKLWan) : Video'ları latent temsillere kodlamak ve latent temsillerden video'lara çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
Wan kullanılarak video-vidyo üretim hattı.
Bu model DiffusionPipeline sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.
call[[diffusers.WanVideoToVideoPipeline.call]]
__call__(video: list = None, prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 480, width: int = 832, num_inference_steps: int = 50, timesteps: list[int] | None = None, guidance_scale: float = 5.0, strength: float = 0.8, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 512)
Parametreler:
video (list[PIL.Image.Image]) : Video-to-video üretiminde başlangıç noktası olarak kullanılan girdi videosu. Video, PIL görüntüleri listesi, numpy dizisi veya torch tensörü olarak sağlanmalıdır.
prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine prompt_embeds geçirilmelidir.
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
height (int, varsayılan 480) : Üretilen görüntünün piksel cinsinden yüksekliği.
width (int, varsayılan 832) : Üretilen görüntünün piksel cinsinden genişliği.
num_inference_steps (int, varsayılan 50) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı, genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
timesteps (list[int], isteğe bağlı) : set_timesteps metodunda timesteps argümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, num_inference_steps geçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır.
guidance_scale (float, varsayılan 5.0) : Classifier-Free Diffusion Guidance'de tanımlanan yönlendirme ölçeği. guidance_scale, Imagen Paper'deki 2. denklemindeki w olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, prompt ile yakından ilişkili görüntülerin üretilmesini teşvik eder.
strength (float, varsayılan 0.8) : Güç arttıkça orijinal görüntü ile üretilen video arasındaki farklar artar.
num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) : Her istem için üretilecek görsel sayısı.
generator (torch.Generator veya list[torch.Generator], isteğe bağlı) : Üretimi deterministik hale getirmek için bir torch.Generator.
latents (torch.Tensor, isteğe bağlı) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.
prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından üretilir.
output_type (str, isteğe bağlı, varsayılan "np") : Üretilen görüntünün çıktı biçimi. PIL.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine WanPipelineOutput döndürülecek mi?
attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsiyonel) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, PipelineCallback veya MultiPipelineCallbacks alt sınıfı olan bir fonksiyon. Aşağıdaki argümanlarla çağrılır: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtildiği üzere tüm tensörlerin listesini içerecektir.
callback_on_step_end_tensor_inputs (list, isteğe bağlı) : callback_on_step_end işlevi için girdi tensörlerinin listesi. Listede belirtilen tensörler, callback_kwargs argümanı olarak geçirilir. Yalnızca pipeline sınıfınızın ._callback_tensor_inputs özniteliğinde listelenen değişkenleri dahil edebilirsiniz.
max_sequence_length (int, varsayılan 512) : Metin kodlayıcısının maksimum dizi uzunluğu. İfade bu uzunluktan uzunsa kısaltılır. İfade bu uzunluktan kısaysa bu uzunluğa kadar dolgu yapılır.
Dönüş: ~WanPipelineOutput veya tuple
return_dict True ise WanPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu yapıda ilk öğe üretilen görsellerin listesini, ikinci öğe ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> import torch
>>> from diffusers.utils import export_to_video, load_video
>>> from diffusers import AutoencoderKLWan, WanVideoToVideoPipeline
>>> from diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler
>>> # Available models: Wan-AI/Wan2.1-T2V-14B-Diffusers, Wan-AI/Wan2.1-T2V-1.3B-Diffusers
>>> model_id = "Wan-AI/Wan2.1-T2V-1.3B-Diffusers"
>>> vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
>>> pipe = WanVideoToVideoPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)
>>> flow_shift = 3.0 # 5.0 for 720P, 3.0 for 480P
>>> pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config, flow_shift=flow_shift)
>>> pipe.to("cuda")
>>> prompt = "A robot standing on a mountain top. The sun is setting in the background"
>>> negative_prompt = "Bright tones, overexposed, static, blurred details, subtitles, style, works, paintings, images, static, overall gray, worst quality, low quality, JPEG compression residue, ugly, incomplete, extra fingers, poorly drawn hands, poorly drawn faces, deformed, disfigured, misshapen limbs, fused fingers, still picture, messy background, three legs, many people in the background, walking backwards"
>>> video = load_video(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/hiker.mp4"
... )
>>> output = pipe(
... video=video,
... prompt=prompt,
... negative_prompt=negative_prompt,
... height=480,
... width=720,
... guidance_scale=5.0,
... strength=0.7,
... ).frames[0]
>>> export_to_video(output, "output.mp4", fps=16)
encode_prompt[[diffusers.WanVideoToVideoPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : kodlanacak istem
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
do_classifier_free_guidance (bool, isteğe bağlı, varsayılan True) : Sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı.
num_videos_per_prompt (int, opsiyonel, varsayılan 1) : Her istem için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı
prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
device : (torch.device, isteğe bağlı): torch cihazı
dtype : (torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
WanAnimatePipeline[[diffusers.WanAnimatePipeline]]
diffusers.WanAnimatePipeline[[diffusers.WanAnimatePipeline]]
diffusers.WanAnimatePipeline(tokenizer: AutoTokenizer, text_encoder: UMT5EncoderModel, vae: AutoencoderKLWan, scheduler: UniPCMultistepScheduler, image_processor: CLIPImageProcessorPil, image_encoder: CLIPVisionModel, transformer: WanAnimateTransformer3DModel)
Parametreler:
tokenizer (T5Tokenizer) : T5'den gelen tokenizer, özellikle google/umt5-xxl varyantı.
text_encoder (T5EncoderModel) : T5, özellikle google/umt5-xxl varyantı.
image_encoder (CLIPVisionModel) : CLIP, özellikle clip-vit-huge-patch14 varyantı.
transformer (WanAnimateTransformer3DModel) : Girdi latentlerini gürültüden arındırmak için kullanılan koşullu Transformer.
scheduler (UniPCMultistepScheduler) : Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
vae (AutoencoderKLWan) : Video'ları latent temsillere kodlamak ve latent temsillerden video'lara çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
image_processor (CLIPImageProcessor) : Kodlama öncesinde görüntüleri ön işlemek için görüntü işleyici.
Wan-Animate kullanarak birleşik karakter animasyonu ve değiştirme için pipeline.
WanAnimatePipeline, karakter görseli, poz videosu ve yüz videosunu girdi olarak alır ve iki modda video üretir:
Animasyon modu: Model, girdi duruş ve yüz videolarındaki insan hareketlerini taklit eden karakter görüntüsünün videosunu oluşturur. Karakter, sağlanan hareket kontrollerine göre canlandırılarak karakterin yeni bir animasyonlu videosu oluşturulur.
Değiştirme modu: Model, hareket kontrolü için duruş ve yüz videolarını kullanarak arka plan videosundaki bir karakteri, sağlanan karakter görseliyle değiştirir. Bu mod, ek olarak
background_videovemask_videogirdilerini gerektirir. Maske videosunda, orijinal içeriğin korunması gereken bölgeler siyah, yeni karakterin oluşturulacağı bölgeler ise beyaz olmalıdır.
Bu model DiffusionPipeline sınıfından devralınmıştır. Tüm pipeline'lar için uygulanan genel yöntemlerin (indirme, kaydetme, belirli bir cihazda çalıştırma vb.) belgelerini üst sınıfın dokümantasyonunda bulabilirsiniz.
Pipeline ayrıca aşağıdaki yükleme yöntemlerini devralır:
- LoRA ağırlıklarını yüklemek için load_lora_weights()
call[[diffusers.WanAnimatePipeline.call]]
__call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], pose_video: list, face_video: list, background_video: list[PIL.Image.Image] | None = None, mask_video: list[PIL.Image.Image] | None = None, prompt: str | list[str] = None, negative_prompt: str | list[str] = None, height: int = 720, width: int = 1280, segment_frame_length: int = 77, num_inference_steps: int = 20, mode: str = 'animate', prev_segment_conditioning_frames: int = 1, motion_encode_batch_size: int | None = None, guidance_scale: float = 1.0, num_videos_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'np', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int, NoneType], diffusers.callbacks.PipelineCallback | diffusers.callbacks.MultiPipelineCallbacks]] = None, callback_on_step_end_tensor_inputs: list = ['latents'], max_sequence_length: int = 512)
Parametreler:
image (PipelineImageInput) : Üretimi koşullandırmak için girdi karakter görseli. Bir görsel, görseller listesi veya torch.Tensor olmalıdır.
pose_video (list[PIL.Image.Image]) : Üretimi koşullandırmak için girdi olarak kullanılacak poz videosu. PIL görüntülerinin bir listesi olmalıdır.
face_video (list[PIL.Image.Image]) : Üretimi koşullandırmak için girdi yüz videosu. PIL görüntülerinin bir listesi olmalıdır.
background_video (list[PIL.Image.Image], isteğe bağlı) : mode "replace" olduğunda, üretimi koşullandırmak için girdi arka plan videosu. PIL görüntülerinin bir listesi olmalıdır.
mask_video (list[PIL.Image.Image], isteğe bağlı) : mode "replace" olduğunda, üretimi koşullandırmak için girdi maskesi videosu. PIL görüntülerinin bir listesi olmalıdır.
prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmamışsa, bunun yerine prompt_embeds geçirilmelidir.
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
mode (str, varsayılan "animation") : Üretimin modu. "animate" ve "replace" arasında seçim yapın.
prev_segment_conditioning_frames (int, varsayılan 1) : Geçici yönlendirme için kullanılacak önceki video segmentindeki kare sayısı. 1 veya 5 olması önerilir. Genel olarak, N negatif olmayan bir tam sayı olmak üzere 4N + 1 olmalıdır.
motion_encode_batch_size (int, opsiyonel) : Hareket kodlayıcı aracılığıyla yüz videosunun toplu kodlanmasında kullanılan parti boyutu. Daha küçük bir parti boyutu ayarlayarak çıkarım hızı ile daha düşük bellek kullanımı arasında bir denge kurulmasına olanak tanır. Ayarlanmazsa self.transformer.config.motion_encoder_batch_size varsayılan olarak kullanılır.
height (int, varsayılan 720) : Üretilen videonun yüksekliği.
width (int, varsayılan 1280) : Üretilen videonun genişliği.
segment_frame_length (int, varsayılan 77) : Her oluşturulan video segmentindeki kare sayısı. Oluşturulan videonun toplam kare sayısı, pose_video içindeki kare sayısına eşit olacaktır; bu uzunluğa ulaşana kadar videoyu segmentler halinde oluşturacağız. Genel olarak, N negatif olmayan bir tam sayı olmak üzere 4N + 1 olmalıdır.
num_inference_steps (int, varsayılan 20) : Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı, genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
guidance_scale (float, varsayılan 1.0) : Classifier-Free Diffusion Guidance'de tanımlanan yönlendirme ölçeği. guidance_scale, Imagen Paper'deki 2. denklemindeki w olarak tanımlanır. Yönlendirme ölçeği, guidance_scale > 1 olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği, genellikle daha düşük görüntü kalitesi pahasına, prompt ile yakından ilişkili görüntülerin üretilmesini teşvik eder. Varsayılan olarak, Wan Animate çıkarımında CFG kullanılmaz.
num_videos_per_prompt (int, isteğe bağlı, varsayılan 1) : Her istem için üretilecek görsel sayısı.
generator (torch.Generator veya list[torch.Generator], isteğe bağlı) : Üretimi deterministik hale getirmek için bir torch.Generator.
latents (torch.Tensor, isteğe bağlı) : Görsel üretimi için girdi olarak kullanılacak, Gauss dağılımından örneklenen önceden oluşturulmuş gürültülü latensler. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgele generator kullanılarak örneklem yoluyla bir latens tensörü oluşturulur.
prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından üretilir.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini (istek ağırlıklandırması) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, metin gömme değerleri negative_prompt girdi argümanından üretilir.
image_embeds (torch.Tensor, isteğe bağlı) : Önceden oluşturulmuş görsel gömme (embedding) değerleri. Görsel girdileri (ağırlıklandırma) kolayca ayarlamak için kullanılabilir. Sağlanmazsa, görsel gömme değerleri image girdi argümanından üretilir.
output_type (str, isteğe bağlı, varsayılan "np") : Üretilen görüntünün çıktı biçimi. PIL.Image veya np.array arasında seçim yapın.
return_dict (bool, isteğe bağlı, varsayılan True) : Düz bir tuple yerine WanPipelineOutput döndürülecek mi?
attention_kwargs (dict, isteğe bağlı) : Belirtilirse, diffusers.models.attention_processor içinde self.processor altında tanımlanan AttentionProcessor'a iletilen bir kwargs sözlüğü.
callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsiyonel) : Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan, PipelineCallback veya MultiPipelineCallbacks alt sınıfı olan bir fonksiyon. Aşağıdaki argümanlarla çağrılır: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs, callback_on_step_end_tensor_inputs tarafından belirtildiği üzere tüm tensörlerin listesini içerecektir.
callback_on_step_end_tensor_inputs (List, optional) : The list of tensor inputs for the callback_on_step_end function. The tensors specified in the list will be passed as callback_kwargs argument. You will only be able to include variables listed in the ._callback_tensor_inputs attribute of your pipeline class.
max_sequence_length (int, varsayılan 512) : Metin kodlayıcısının maksimum dizi uzunluğu. İfade bu uzunluktan uzunsa kısaltılır. İfade bu uzunluktan kısaysa bu uzunluğa kadar dolgu yapılır.
Dönüş: ~WanPipelineOutput veya tuple
return_dict True ise WanPipelineOutput döndürülür, aksi halde bir tuple döndürülür; bu yapıda ilk öğe üretilen görsellerin listesini, ikinci öğe ise ilgili üretilen görselin "not-safe-for-work" (nsfw) içerip içermediğini gösteren bool değerlerinin listesini içerir.
Üretim için pipeline'ın çağrı fonksiyonu.
Örnekler:
>>> import torch
>>> import numpy as np
>>> from diffusers import WanAnimatePipeline
>>> from diffusers.utils import export_to_video, load_image, load_video
>>> model_id = "Wan-AI/Wan2.2-Animate-14B-Diffusers"
>>> pipe = WanAnimatePipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> # Optionally upcast the Wan VAE to FP32
>>> pipe.vae.to(torch.float32)
>>> pipe.to("cuda")
>>> # Load the reference character image
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
... )
>>> # Load pose and face videos (preprocessed from reference video)
>>> # Note: Videos should be preprocessed to extract pose keypoints and face features
>>> # Refer to the Wan-Animate preprocessing documentation for details
>>> pose_video = load_video("path/to/pose_video.mp4")
>>> face_video = load_video("path/to/face_video.mp4")
>>> # CFG is generally not used for Wan Animate
>>> prompt = (
... "An astronaut hatching from an egg, on the surface of the moon, the darkness and depth of space realised in "
... "the background. High quality, ultrarealistic detail and breath-taking movie-like camera shot."
... )
>>> # Animation mode: Animate the character with the motion from pose/face videos
>>> output = pipe(
... image=image,
... pose_video=pose_video,
... face_video=face_video,
... prompt=prompt,
... height=height,
... width=width,
... segment_frame_length=77, # Frame length of each inference segment
... guidance_scale=1.0,
... num_inference_steps=20,
... mode="animate",
... ).frames[0]
>>> export_to_video(output, "output_animation.mp4", fps=30)
>>> # Replacement mode: Replace a character in the background video
>>> # Requires additional background_video and mask_video inputs
>>> background_video = load_video("path/to/background_video.mp4")
>>> mask_video = load_video("path/to/mask_video.mp4") # Black areas preserved, white areas generated
>>> output = pipe(
... image=image,
... pose_video=pose_video,
... face_video=face_video,
... background_video=background_video,
... mask_video=mask_video,
... prompt=prompt,
... height=height,
... width=width,
... segment_frame_length=77, # Frame length of each inference segment
... guidance_scale=1.0,
... num_inference_steps=20,
... mode="replace",
... ).frames[0]
>>> export_to_video(output, "output_replacement.mp4", fps=30)
encode_prompt[[diffusers.WanAnimatePipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], negative_prompt: str | list[str] | None = None, do_classifier_free_guidance: bool = True, num_videos_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 226, device: typing.Optional[torch.device] = None, dtype: typing.Optional[torch.dtype] = None)
Parametreler:
prompt (str veya list[str], isteğe bağlı) : kodlanacak istem
negative_prompt (str veya list[str], isteğe bağlı) : Görsel üretimi yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında (yani guidance_scale değeri 1'den küçükse) yok sayılır.
do_classifier_free_guidance (bool, isteğe bağlı, varsayılan True) : Sınıflandırıcı serbest yönlendirmenin (classifier free guidance) kullanılıp kullanılmayacağı.
num_videos_per_prompt (int, opsiyonel, varsayılan 1) : Her istem için oluşturulması gereken video sayısı. Sonuç gömme vektörlerinin yerleştirileceği torch cihazı
prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, metin gömme değerleri prompt girdi argümanından oluşturulur.
negative_prompt_embeds (torch.Tensor, isteğe bağlı) : Ön oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds, negative_prompt girdi argümanından oluşturulur.
device : (torch.device, isteğe bağlı): torch cihazı
dtype : (torch.dtype, isteğe bağlı): torch dtype
İsteği metin kodlayıcı gizli durumlarına kodlar.
pad_video_frames[[diffusers.WanAnimatePipeline.pad_video_frames]]
pad_video_frames(frames: list, num_target_frames: int)
Dizgi benzeri bir video frames dizisini, "reflect" benzeri bir strateji kullanarak num_target_frames değerine kadar doldurur. Kare boyutunun ilk boyut olduğu varsayılır. 1B durumda bu strateji aşağıdaki gibi görselleştirilebilir:
pad_video_frames([1, 2, 3, 4, 5], 10) -> [1, 2, 3, 4, 5, 4, 3, 2, 1, 2]
WanPipelineOutput[[diffusers.pipelines.wan.pipeline_output.WanPipelineOutput]]
diffusers.pipelines.wan.pipeline_output.WanPipelineOutput[[diffusers.pipelines.wan.pipeline_output.WanPipelineOutput]]
diffusers.pipelines.wan.pipeline_output.WanPipelineOutput(frames: Tensor)
Parametreler:
frames (torch.Tensor, np.ndarray veya list[list[PIL.Image.Image]]) : video çıktıları listesi - batch_size, uzunluğunda iç içe geçmiş bir liste olabilir; her alt liste, num_frames. uzunluğunda gürültüsü azaltılmış PIL görüntü dizileri içerir. Ayrıca (batch_size, num_frames, channels, height, width) biçiminde bir NumPy dizi veya Torch tensörü de olabilir.
Wan pipeline'leri için çıktı sınıfı.
Xet Storage Details
- Size:
- 103 kB
- Xet hash:
- 5e9d580a52d62ca10f00c510c4e74ef6718bf050a8b373921a5f1eb5bcb253e2
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.