Buckets:

mishig's picture
|
download
raw
13.7 kB
# EDMEulerScheduler
La formulation de Karras du planificateur Euler (Algorithme 2) issue de l'article [Elucidating the Design Space of Diffusion-Based Generative Models](https://huggingface.co/papers/2206.00364) de Karras et al. Il s'agit d'un planificateur rapide qui peut souvent générer de bons résultats en 20 à 30 étapes. Le planificateur est basé sur l'implémentation originale [k-diffusion](https://github.com/crowsonkb/k-diffusion/blob/481677d114f6ea445aa009cf5bd7a9cdee909e47/k_diffusion/sampling.py#L51) de [Katherine Crowson](https://github.com/crowsonkb/).
## EDMEulerScheduler[[diffusers.EDMEulerScheduler]]
#### diffusers.EDMEulerScheduler[[diffusers.EDMEulerScheduler]]
```python
diffusers.EDMEulerScheduler(sigma_min: float = 0.002, sigma_max: float = 80.0, sigma_data: float = 0.5, sigma_schedule: typing.Literal['karras', 'exponential'] = 'karras', num_train_timesteps: int = 1000, prediction_type: typing.Literal['epsilon', 'v_prediction'] = 'epsilon', rho: float = 7.0, final_sigmas_type: typing.Literal['zero', 'sigma_min'] = 'zero')
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L49)
**Paramètres :**
sigma_min (`float`, *facultatif*, valeur par défaut `0.002`) : Magnitude minimale du bruit dans le planificateur sigma. Cette valeur a été fixée à 0.002 dans l'article EDM [1] ; une plage raisonnable est [0, 10].
sigma_max (`float`, *facultatif*, valeur par défaut `80.0`) : Amplitude maximale du bruit dans le planificateur sigma. Cette valeur a été fixée à 80.0 dans l'article EDM [1] ; une plage raisonnable est [0.2, 80.0].
sigma_data (`float`, *facultatif*, valeur par défaut `0.5`) : L'écart-type de la distribution des données. Cette valeur est fixée à 0,5 dans l'article EDM [1].
sigma_schedule (`Literal["karras", "exponential"]`, *facultatif*, par défaut `"karras"`) : Planification à utiliser pour calculer les `sigmas`. Par défaut, nous utilisons la planification introduite dans l’article EDM (https://huggingface.co/papers/2206.00364). La planification `"exponential"` a été intégrée dans ce modèle : https://huggingface.co/stabilityai/cosxl.
num_train_timesteps (`int`, *facultatif*, valeur par défaut `1000`) : Le nombre d'étapes de diffusion pour entraîner le modèle.
prediction_type (`Literal["epsilon", "v_prediction"]`, *facultatif*, par défaut `"epsilon"`) : Type de prédiction de la fonction du planificateur. `"epsilon"` prédit le bruit du processus de diffusion, et `"v_prediction"` (voir la section 2.4 de l'article [Imagen Video](https://huggingface.co/papers/2210.02303)).
rho (`float`, *facultatif*, valeur par défaut `7.0`) : Le paramètre rho utilisé pour le calcul de l'ordonnancement des sigmas de Karras, qui est fixé à 7.0 dans l'article EDM [1].
final_sigmas_type (`Literal["zero", "sigma_min"]`, *facultatif*, valeur par défaut `"zero"`) : La valeur finale de `sigma` pour le calendrier de bruit pendant le processus d'échantillonnage. Si `"sigma_min"`, le sigma final est identique au dernier sigma du calendrier d'entraînement. Si `"zero"`, le sigma final est défini à 0.
Implémente le planificateur Euler dans la formulation EDM telle que présentée dans Karras et al. 2022 [1].
[1] Karras, Tero, et al. « Elucidating the Design Space of Diffusion-Based Generative Models. » https://huggingface.co/papers/2206.00364
Ce modèle hérite de [SchedulerMixin](/docs/diffusers/main/fr/api/schedulers/overview#diffusers.SchedulerMixin) et [ConfigMixin](/docs/diffusers/main/fr/api/configuration#diffusers.ConfigMixin). Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous les planificateurs, telles que le chargement et l'enregistrement.
#### add_noise[[diffusers.EDMEulerScheduler.add_noise]]
```python
add_noise(original_samples: Tensor, noise: Tensor, timesteps: Tensor)
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L536)
**Paramètres :**
original_samples (`torch.Tensor`) : Les échantillons d'origine auxquels du bruit sera ajouté.
noise (`torch.Tensor`) : Le tenseur de bruit à ajouter aux échantillons d'origine.
timesteps (`torch.Tensor`) : Les pas de temps auxquels ajouter du bruit, déterminant le niveau de bruit à partir de l'ordonnancement.
**Retourne :** `torch.Tensor`
Les échantillons bruités avec un bruit ajouté mis à l'échelle selon le calendrier des pas de temps.
Ajouter du bruit aux échantillons d'origine selon le calendrier de bruit aux pas de temps spécifiés.
#### index_for_timestep[[diffusers.EDMEulerScheduler.index_for_timestep]]
```python
index_for_timestep(timestep: typing.Union[float, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None)
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L381)
**Paramètres :**
timestep (`float` ou `torch.Tensor`) : La valeur de timestep à rechercher dans le planning.
schedule_timesteps (`torch.Tensor`, *facultatif*) : Le calendrier des pas de temps à explorer. Si `None`, utilise `self.timesteps`.
**Retourne :** `int`
L'indice de la pas de temps dans le planning. Pour la toute première étape, renvoie le deuxième indice si plusieurs correspondances existent, afin d'éviter de sauter un sigma lors d'un démarrage en cours de planning (par exemple, pour l'image-vers-image).
Trouver l'index d'une étape de temps donnée dans le calendrier des étapes de temps.
#### precondition_inputs[[diffusers.EDMEulerScheduler.precondition_inputs]]
```python
precondition_inputs(sample: Tensor, sigma: typing.Union[float, torch.Tensor])
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L177)
**Paramètres :**
sample (`torch.Tensor`) : Tenseur d'échantillon d'entrée à préconditionner.
sigma (`float` ou `torch.Tensor`) : La valeur actuelle de sigma (niveau de bruit).
**Retourne :** `torch.Tensor`
L'échantillon d'entrée mis à l'échelle.
Préconditionner l'échantillon d'entrée en le mettant à l'échelle selon la formulation EDM.
#### precondition_noise[[diffusers.EDMEulerScheduler.precondition_noise]]
```python
precondition_noise(sigma: typing.Union[float, torch.Tensor])
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L195)
**Paramètres :**
sigma (`float` ou `torch.Tensor`) : La valeur de sigma (niveau de bruit) à préconditionner.
**Retourne :** `torch.Tensor`
La valeur de bruit préconditionnée calculée comme `0.25 * log(sigma)`.
Préconditionner le niveau de bruit en appliquant une transformation logarithmique.
#### precondition_outputs[[diffusers.EDMEulerScheduler.precondition_outputs]]
```python
precondition_outputs(sample: Tensor, model_output: Tensor, sigma: typing.Union[float, torch.Tensor])
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L214)
**Paramètres :**
sample (`torch.Tensor`) : Le tenseur d'échantillon d'entrée.
model_output (`torch.Tensor`) : La sortie directe du modèle de diffusion appris.
sigma (`float` ou `torch.Tensor`) : La valeur actuelle de sigma (niveau de bruit).
**Retourne :** `torch.Tensor`
L'échantillon débruité calculé en combinant la connexion de contournement et le facteur d'échelle de sortie.
Préconditionner les sorties du modèle selon la formulation EDM.
#### scale_model_input[[diffusers.EDMEulerScheduler.scale_model_input]]
```python
scale_model_input(sample: Tensor, timestep: typing.Union[float, torch.Tensor])
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L249)
**Paramètres :**
sample (`torch.Tensor`) : Le tenseur d'échantillon d'entrée.
timestep (`float` ou `torch.Tensor`) : L'étape temporelle actuelle dans la chaîne de diffusion.
**Retourne :** `torch.Tensor`
Un échantillon d'entrée mis à l'échelle.
Mettre à l'échelle l'entrée du modèle de débruitage pour correspondre à l'algorithme d'Euler. Assure l'interchangeabilité avec les planificateurs qui nécessitent de mettre à l'échelle l'entrée du modèle de débruitage en fonction de l'étape temporelle actuelle.
#### set_begin_index[[diffusers.EDMEulerScheduler.set_begin_index]]
```python
set_begin_index(begin_index: int = 0)
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L167)
**Paramètres :**
begin_index (`int`, par défaut `0`) : L'index de début pour le planificateur.
Définit l'index de début pour le planificateur. Cette fonction doit être exécutée depuis le pipeline avant l'inférence.
#### set_timesteps[[diffusers.EDMEulerScheduler.set_timesteps]]
```python
set_timesteps(num_inference_steps: int = None, device: typing.Union[str, torch.device] = None, sigmas: typing.Union[list[float], torch.Tensor, NoneType] = None)
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L273)
**Paramètres :**
num_inference_steps (`int`, *facultatif*) : Le nombre d'étapes de diffusion utilisé lors de la génération d'échantillons avec un modèle pré-entraîné.
device (`str` ou `torch.device`, *facultatif*) : L'appareil vers lequel les timesteps doivent être déplacés. Si `None`, les timesteps ne sont pas déplacés.
sigmas (`torch.Tensor | list[float]`, *facultatif*) : Sigmas personnalisés à utiliser pour le processus de débruitage. S'ils ne sont pas définis, le comportement par défaut utilisé lorsque `num_inference_steps` est passé sera appliqué.
Définit les pas de temps discrets utilisés pour la chaîne de diffusion (à exécuter avant l'inférence).
#### étape[[diffusers.EDMEulerScheduler.step]]
```python
step(model_output: Tensor, timestep: typing.Union[float, torch.Tensor], sample: Tensor, s_churn: float = 0.0, s_tmin: float = 0.0, s_tmax: float = inf, s_noise: float = 1.0, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True, pred_original_sample: typing.Optional[torch.Tensor] = None)
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L427)
**Paramètres :**
model_output (`torch.Tensor`) : La sortie directe du modèle de diffusion appris.
timestep (`float` ou `torch.Tensor`) : L'étape discrète actuelle dans la chaîne de diffusion.
sample (`torch.Tensor`) : Une instance actuelle d'un échantillon créé par le processus de diffusion.
s_churn (`float`, *facultatif*, par défaut `0.0`) : La quantité de stochastique à ajouter à chaque étape. Des valeurs plus élevées ajoutent plus de bruit.
s_tmin (`float`, *facultatif*, par défaut `0.0`) : Le seuil minimal de sigma en dessous duquel aucun bruit n'est ajouté.
s_tmax (`float`, *facultatif*, par défaut `float("inf")`) : Le seuil de sigma maximal au-delà duquel aucun bruit n'est ajouté.
s_noise (`float`, *facultatif*, par défaut `1.0`) : Facteur d'échelle pour le bruit ajouté à l'échantillon.
generator (`torch.Generator`, *facultatif*) : Un générateur de nombres aléatoires pour la reproductibilité.
return_dict (`bool`, *facultatif*, par défaut `True`) : Indique s'il faut retourner un [EDMEulerSchedulerOutput](/docs/diffusers/main/fr/api/schedulers/edm_euler#diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput) ou un tuple.
pred_original_sample (`torch.Tensor`, *facultatif*) : L'échantillon débruité prédit à partir d'une étape précédente. S'il est fourni, la recomputation est ignorée.
**Retourne :** [EDMEulerSchedulerOutput](/docs/diffusers/main/fr/api/schedulers/edm_euler#diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput) ou `tuple`
Si `return_dict` est `True`, un [EDMEulerSchedulerOutput](/docs/diffusers/main/fr/api/schedulers/edm_euler#diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput) est renvoyé, sinon un tuple est renvoyé dont le premier élément est le tenseur de l’échantillon précédent et le deuxième élément est le tenseur de l’échantillon original prédit.
Prédit l'échantillon de l'étape temporelle précédente en inversant l'EDS. Cette fonction propage le processus de diffusion à partir des sorties du modèle appris (le plus souvent le bruit prédit).
## EDMEulerSchedulerOutput[[diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput]]
#### diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput[[diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput]]
```python
diffusers.schedulers.scheduling_edm_euler.EDMEulerSchedulerOutput(prev_sample: Tensor, pred_original_sample: typing.Optional[torch.Tensor] = None)
```
[Source](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_edm_euler.py#L32)
**Paramètres :**
prev_sample (`torch.Tensor` de forme `(batch_size, num_channels, height, width)` pour les images) : Échantillon calculé `(x_{t-1})` de l'étape temporelle précédente. `prev_sample` doit être utilisé comme entrée du modèle suivante dans la boucle de débruitage.
pred_original_sample (`torch.Tensor` de forme `(batch_size, num_channels, height, width)` pour les images) : l'échantillon débruité prédit `(x_{0})` basé sur la sortie du modèle à l'étape temporelle actuelle. `pred_original_sample` peut être utilisé pour prévisualiser la progression ou pour le guidage.
Classe de sortie pour la sortie de la fonction `step` du planificateur.

Xet Storage Details

Size:
13.7 kB
·
Xet hash:
e76aa4caa859015b7af859d58b355681a40d7db846118692485a991ee769faaa

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