Buckets:

mishig's picture
|
download
raw
13.6 kB

Latent Consistency Model Çok Adımlı Zamanlayıcı

Genel Bakış

Simian Luo, Yiqin Tan, Longbo Huang, Jian Li ve Hang Zhao'nun Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference makalesinde latent tutarlılık modelleriyle birlikte tanıtılan çok adımlı ve tek adımlı zamanlayıcı (Algoritma 3). Bu zamanlayıcı, LatentConsistencyModelPipeline üzerinden 1-8 adımda iyi örnekler üretebilmelidir.

LCMScheduler[[diffusers.LCMScheduler]]

diffusers.LCMScheduler[[diffusers.LCMScheduler]]

diffusers.LCMScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.00085, beta_end: float = 0.012, beta_schedule: str = 'scaled_linear', trained_betas: numpy.ndarray | list[float] | None = None, original_inference_steps: int = 50, clip_sample: bool = False, clip_sample_range: float = 1.0, set_alpha_to_one: bool = True, steps_offset: int = 0, prediction_type: str = 'epsilon', thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, sample_max_value: float = 1.0, timestep_spacing: str = 'leading', timestep_scaling: float = 10.0, rescale_betas_zero_snr: bool = False)

Kaynak

Parametreler:

num_train_timesteps (int, varsayılan 1000) : Modelin eğitileceği difüzyon adım sayısı.

beta_start (float, varsayılan 0.00085) : Çıkarımın başlangıç beta değeri.

beta_end (float, varsayılan 0.012) : Son beta değeri.

beta_schedule (str, varsayılan "scaled_linear") : Beta zamanlaması, modelin adım atması için beta aralığını beta dizisine eşleyen bir haritalamadır. linear, scaled_linear veya squaredcos_cap_v2 seçeneklerinden birini seçin.

trained_betas (np.ndarray veya list[float], isteğe bağlı) : beta_start ve beta_end değerlerini atlamak için beta dizisini doğrudan yapılandırıcıya iletin.

original_inference_steps (int, varsayılan 50) : Doğrusal aralıklı bir zaman adımı zaman çizelgesi oluşturmak için kullanılan varsayılan çıkarım adımı sayısıdır. Bu çizelgeden nihai zaman adımı zaman çizelgesini oluşturmak için num_inference_steps eşit aralıklı zaman adımı alınacaktır.

clip_sample (bool, varsayılan False) : Sayısal kararlılık için tahmini örneği kırpın.

clip_sample_range (float, varsayılan 1.0) : Örnek kırpma için maksimum büyüklük. Yalnızca clip_sample=True olduğunda geçerlidir.

set_alpha_to_one (bool, varsayılan True) : Her difüzyon adımı, o adımdaki ve bir önceki adımdaki alfa çarpım değerini kullanır. Son adım için bir önceki alfa yoktur. Bu seçenek True olduğunda bir önceki alfa çarpımı 1 olarak sabitlenir, aksi takdirde 0. adımdaki alfa değeri kullanılır.

steps_offset (int, varsayılan 0) : Bazı model ailelerinin gerektirdiği gibi, çıkarım adımlarına eklenen bir ofset.

prediction_type (str, defaults to "epsilon") : Prediction type of the scheduler function; can be epsilon (predicts the noise of the diffusion process), sample (directly predicts the noisy sample) or v_prediction` (see section 2.4 of Imagen Video paper).

thresholding (bool, varsayılan False) : "Dinik eşikleme" yönteminin kullanılıp kullanılmayacağını belirtir. Bu, Stable Diffusion gibi gizli uzay difüzyon modelleri için uygun değildir.

dynamic_thresholding_ratio (float, varsayılan 0.995) : Dinamik eşikleme yöntemi için oran. Yalnızca thresholding=True olduğunda geçerlidir.

sample_max_value (float, varsayılan 1.0) : Dinamik eşikleme için eşik değeri. Yalnızca thresholding=True olduğunda geçerlidir.

timestep_spacing (str, varsayılan "leading") : Zaman adımlarının ölçeklendirilme yöntemi. Daha fazla bilgi için Common Diffusion Noise Schedules and Sample Steps are Flawed makalesindeki Tablo 2'ye bakın.

timestep_scaling (float, varsayılan 10.0) : Tutarlılık modeli sınır koşulları c_skip ve c_out hesaplanırken zaman adımlarının çarpılacağı katsayı. Bu değeri artırmak, yaklaşık hatayı azaltır (ancak varsayılan 10.0 değeri için yaklaşık hata zaten oldukça küçüktür).

rescale_betas_zero_snr (bool, varsayılan False) : Betaların sıfır terminal SNR'ye sahip olacak şekilde yeniden ölçeklenip ölçeklenmeyeceğini belirtir. Bu, modelin orta parlaklıktaki örneklerle sınırlı kalmak yerine çok parlak ve karanlık örnekler üretmesini sağlar. --offset_noise ile gevşek bir şekilde ilişkilidir.

LCMScheduler, gürültü azaltma difüzyon olasılıksal modellerinde (DDPM) tanıtılan gürültü azaltma işlemini, Markov olmayan yönlendirme ile genişletir.

Bu model SchedulerMixin ve ConfigMixin sınıflarından devralır. ~ConfigMixin, zamanlayıcının __init__ fonksiyonuna iletilen num_train_timesteps gibi tüm yapılandırma özniteliklerini saklamaktan sorumludur. Bunlara scheduler.config.num_train_timesteps yoluyla erişilebilir. SchedulerMixin, SchedulerMixin.save_pretrained() ve from_pretrained() fonksiyonları aracılığıyla genel yükleme ve kaydetme işlevselliği sağlar.

add_noise[[diffusers.LCMScheduler.add_noise]]

add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor)

Kaynak

Parametreler:

original_samples (torch.Tensor) : Gürültü eklenecek orijinal örnekler.

noise (torch.Tensor) : Örneklere eklenecek gürültü.

timesteps (torch.IntTensor) : Her örnek için gürültü seviyesini gösteren zaman adımları.

Dönüş: torch.Tensor

Gürültülü örnekler.

Her zaman adımındaki gürültü büyüklüğüne göre orijinal örneklerin gürültü ekleyin (bu, ileri difüzyon sürecidir).

get_scalings_for_boundary_condition_discrete[[diffusers.LCMScheduler.get_scalings_for_boundary_condition_discrete]]

get_scalings_for_boundary_condition_discrete(timestep: int)

Kaynak

Parametreler:

timestep (int) : Ölçeklemelerin hesaplanacağı ayrık zaman adımı.

Dönüş: tuple[float, float]

c_skip (girdi örneği için ölçekleme) ve c_out (tahmin edilen gürültüden arındırılmış örnek için ölçekleme) içeren bir demet.

Latent Consistency Model'de kullanılan, verilen ayrık zaman adımı için sınır koşulu ölçeklemelerini (c_skip ve c_out) hesaplar.

get_velocity[[diffusers.LCMScheduler.get_velocity]]

get_velocity(sample: Tensor, noise: Tensor, timesteps: IntTensor)

Kaynak

Parametreler:

sample (torch.Tensor) : Girdi örneği.

noise (torch.Tensor) : Gürültü tensörü.

timesteps (torch.IntTensor) : Hız hesaplama için zaman adımları.

Dönüş: torch.Tensor

Hesaplanan hız.

Hız formülüne göre örnek ve gürültüden hız tahminini hesaplayın.

index_for_timestep[[diffusers.LCMScheduler.index_for_timestep]]

index_for_timestep(timestep: typing.Union[float, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None)

Kaynak

Parametreler:

timestep (float veya torch.Tensor) : Zamanlamada bulunacak timestep değeri.

schedule_timesteps (torch.Tensor, isteğe bağlı) : Aranacak zaman adımı zamanlaması. None ise self.timesteps kullanılır.

Dönüş: int

Zaman adımı planındaki zaman adımının indeksi. Çok eşleşme varsa, planın ortasından başlanırken (örneğin, görüntüden görüntüye) bir sigmanın atlanmaması için çok eşleşme durumunda ikinci indeksi döndürür.

Verilen zaman adımının zaman adımı zaman çizelgesindeki indeksini bulun.

previous_timestep[[diffusers.LCMScheduler.previous_timestep]]

previous_timestep(timestep)

Kaynak

Parametreler:

timestep (int) : Güncel zaman adımı.

Dönüş: int veya torch.Tensor

Önceki zaman adımı.

Difüzyon zincirindeki bir önceki zaman adımını hesaplayın.

scale_model_input[[diffusers.LCMScheduler.scale_model_input]]

scale_model_input(sample: Tensor, timestep: int | None = None)

Kaynak

Parametreler:

sample (torch.Tensor) : Girdi örneği.

timestep (int, isteğe bağlı) : Difüzyon zincirindeki mevcut zaman adımı.

Dönüş: torch.Tensor

Ölçeklendirilmiş bir girdi örneği.

Gürültüden arındırma modelinin girdisinin mevcut zaman adımına bağlı olarak ölçeklenmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.

set_begin_index[[diffusers.LCMScheduler.set_begin_index]]

set_begin_index(begin_index: int = 0)

Kaynak

Parametreler:

begin_index (int, varsayılan 0) : Zamanlayıcının başlangıç indeksi.

Zamanlayıcının başlangıç indeksini ayarlar. Bu işlev, çıkarım (inference) öncesinde pipeline'dan çalıştırılmalıdır.

set_timesteps[[diffusers.LCMScheduler.set_timesteps]]

set_timesteps(num_inference_steps: int | None = None, device: typing.Union[str, torch.device, NoneType] = None, original_inference_steps: int | None = None, timesteps: list[int] | None = None, strength: float = 1.0)

Kaynak

Parametreler:

num_inference_steps (int, isteğe bağlı) : Ön eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı. Kullanılırsa, timesteps None olmalıdır.

device (str veya torch.device, opsiyonel) : Timestep'lerin taşınacağı cihaz. None ise timestep'ler taşınmaz.

original_inference_steps (int, opsiyonel) : Doğrusal aralıklı bir zaman adımı planı oluşturmak için kullanılacak olan orijinal çıkarım adımı sayısı (standart diffusers uygulamasından farklıdır). Ardından bu plandan, indeksler açısından eşit aralıklı olacak şekilde num_inference_steps zaman adımı seçer ve bunu nihai zaman adımı planımız olarak kullanırız. Ayarlanmazsa, bu değer original_inference_steps özniteliğine varsayılan olarak ayarlanır.

timesteps (list[int], isteğe bağlı) : Timestep'ler arasında keyfi aralıklara destek sağlamak için kullanılan özel timestep'ler. None ise, eğitim/distilasyon timestep zaman çizelgesinde timestep'ler arasında eşit aralıklı varsayılan timestep aralıklandırma stratejisi kullanılır. timesteps geçirilirse, num_inference_steps None olmalıdır.

strength (float, varsayılan 1.0) : Kısmi zaman adımı zaman çizelgesi oluşturmak için kullanılan güç faktörü (ör. görüntüden görüntüye). 1.0 değeri tam zaman çizelgesini kullanır.

Dönüş: None

Difüzyon zinciri için kullanılan ayrık zaman adımlarını ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır).

adım[[diffusers.LCMScheduler.step]]

step(model_output: Tensor, timestep: int, sample: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True)

Kaynak

Parametreler:

model_output (torch.Tensor) : Öğrenen difüzyon modelinden gelen doğrudan çıktı.

timestep (int) : Difüzyon zincirindeki mevcut ayrık zaman adımı.

sample (torch.Tensor) : Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği.

generator (torch.Generator, isteğe bağlı) : Yeniden üretilebilir örneklemeler için rastgele sayı üreteci.

return_dict (bool, varsayılan True) : LCMSchedulerOutput veya tuple döndürülecek mi?

Dönüş: LCMSchedulerOutput veya tuple

return_dict True ise LCMSchedulerOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.

Önceki zaman adımındaki örneği SDE'yi tersine çevirerek tahmin edin. Bu işlev, öğrenilen model çıktılarını (en sık tahmin edilen gürültüyü) kullanarak difüzyon sürecini ilerletir.

Xet Storage Details

Size:
13.6 kB
·
Xet hash:
603f432d495edb777a52547b5bb661b3ad9dae54eeb697a2526b8fcee6650127

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.