Buckets:
| # VQDiffusionScheduler | |
| `VQDiffusionScheduler` преобразует выход трансформерной модели в образец для изображения без шума на предыдущем шаге диффузии. Он был представлен в статье [Vector Quantized Diffusion Model for Text-to-Image Synthesis](https://huggingface.co/papers/2111.14822) Shuyang Gu, Dong Chen, Jianmin Bao, Fang Wen, Bo Zhang, Dongdong Chen, Lu Yuan, Baining Guo. | |
| Аннотация из статьи: | |
| *Мы представляем модель векторно-квантованной диффузии (VQ-Diffusion) для генерации изображений по тексту. Этот метод основан на векторно-квантованном вариационном автоэнкодере (VQ-VAE), пространство скрытых представлений которого моделируется с помощью условного варианта недавно разработанной вероятностной модели диффузии с шумоподавлением (DDPM). Мы обнаружили, что этот метод в пространстве скрытых представлений хорошо подходит для задач генерации изображений по тексту, поскольку он не только устраняет одностороннюю смещенность, характерную для существующих методов, но и позволяет использовать стратегию диффузии с маскированием и заменой, чтобы избежать накопления ошибок, что является серьезной проблемой существующих методов. Наши эксперименты показывают, что VQ-Diffusion дает значительно лучшие результаты генерации изображений по тексту по сравнению с традиционными авторегрессионными (AR) моделями с аналогичным количеством параметров. По сравнению с предыдущими методами генерации изображений по тексту на основе GAN, наша VQ-Diffusion способна обрабатывать более сложные сцены и значительно повышает качество синтезируемых изображений. Наконец, мы показываем, что вычисления генерации изображений в нашем методе можно сделать высокоэффективными с помощью репараметризации. При использовании традиционных AR-методов время генерации изображений по тексту линейно возрастает с разрешением выходного изображения и, следовательно, является довольно затратным даже для изображений обычного размера. VQ-Diffusion позволяет нам достичь лучшей компромиссной зависимости между качеством и скоростью. Наши эксперименты показывают, что модель VQ-Diffusion с репараметризацией работает в пятнадцать раз быстрее традиционных AR-методов, при этом обеспечивая лучшее качество изображений.* | |
| ## VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]] | |
| #### diffusers.VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]] | |
| ```python | |
| diffusers.VQDiffusionScheduler(num_vec_classes: int, num_train_timesteps: int = 100, alpha_cum_start: float = 0.99999, alpha_cum_end: float = 9e-06, gamma_cum_start: float = 9e-06, gamma_cum_end: float = 0.99999) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L142) | |
| **Параметры:** | |
| num_vec_classes (`int`) : Количество классов векторных эмбеддингов латентных пикселей. Включает класс для замаскированного латентного пикселя. | |
| num_train_timesteps (`int`, по умолчанию `100`) : Количество шагов диффузии для обучения модели. | |
| alpha_cum_start (`float`, по умолчанию `0.99999`) : Начальное значение накопленного альфа-параметра. | |
| alpha_cum_end (`float`, по умолчанию `0.000009`) : Конечное накопленное значение альфа. | |
| gamma_cum_start (`float`, по умолчанию `0.000009`) : Начальное значение накопленного гамма. | |
| gamma_cum_end (`float`, по умолчанию `0.99999`) : Конечное значение накопленного гамма. | |
| Планировщик для векторно-квантованной диффузии. | |
| Эта модель наследуется от [SchedulerMixin](/docs/diffusers/main/ru/api/schedulers/overview#diffusers.SchedulerMixin) и [ConfigMixin](/docs/diffusers/main/ru/api/configuration#diffusers.ConfigMixin). Общие методы, которые библиотека реализует для всех планировщиков, такие как загрузка и сохранение, описаны в документации суперкласса. | |
| #### apply_cumulative_transitions[[diffusers.VQDiffusionScheduler.apply_cumulative_transitions]] | |
| ```python | |
| apply_cumulative_transitions(q: Tensor, t: typing.Union[int, torch.Tensor]) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L491) | |
| **Параметры:** | |
| q (`torch.Tensor` формы `(batch size, num classes - 1, num latent pixels)`) : Логарифмические вероятности для классов немаскированных латентных пикселей. | |
| t (`int` или `torch.Tensor`) : Шаг времени, определяющий, какая кумулятивная матрица переходов будет использована. | |
| **Возвращает:** `torch.Tensor` формы `(batch size, num classes, num latent pixels)` | |
| Переходные логарифмические вероятности с добавленными вероятностями классов маски. | |
| Примените кумулятивную матрицу переходов на шаге времени к логарифмическим вероятностям по немаскированным классам. | |
| #### log_Q_t_transitioning_to_known_class[[diffusers.VQDiffusionScheduler.log_Q_t_transitioning_to_known_class]] | |
| ```python | |
| log_Q_t_transitioning_to_known_class(t: typing.Union[int, torch.Tensor], x_t: LongTensor, log_onehot_x_t: Tensor, cumulative: bool) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L392) | |
| **Параметры:** | |
| t (`int` или `torch.Tensor`) : Шаг времени, определяющий, какая матрица переходов используется. | |
| x_t (`torch.LongTensor` формы `(batch size, num latent pixels)`) : Классы каждого латентного пикселя в момент времени `t`. | |
| log_onehot_x_t (`torch.Tensor` формы `(batch size, num classes, num latent pixels)`) : Логарифмы one-hot векторов `x_t`. | |
| cumulative (`bool`) : Если cumulative равно `False`, используется матрица перехода за один шаг `t-1`->`t`. Если cumulative равно `True`, используется накопленная матрица перехода `0`->`t`. | |
| **Возвращает:** `torch.Tensor` | |
| Каждый _столбец_ возвращаемой матрицы является _строкой_ логарифмических вероятностей полной матрицы переходов вероятностей. Тензор имеет форму `(batch size, num classes - 1, num latent pixels)`, если `cumulative` равно `True`, и форму `(batch size, num classes, num latent pixels)` в противном случае. | |
| При накопительном режиме тензор содержит на одну строку меньше, поскольку начальный латентный пиксель не может быть замаскирован. | |
| Где: | |
| - `q_n` — это распределение вероятностей для прямого процесса `n`-го латентного пикселя. | |
| - C_0 — это класс латентного пиксельного эмбеддинга | |
| - C_k — это класс замаскированного латентного пикселя | |
| результат без накопления (без логарифмов): | |
| ``` | |
| q_0(x_t | x_{t-1} = C_0) ... q_n(x_t | x_{t-1} = C_0) | |
| . . . | |
| . . . | |
| . . . | |
| q_0(x_t | x_{t-1} = C_k) ... q_n(x_t | x_{t-1} = C_k) | |
| ``` | |
| накопленный результат (без логарифмов): | |
| ``` | |
| q_0_cumulative(x_t | x_0 = C_0) ... q_n_cumulative(x_t | x_0 = C_0) | |
| . . . | |
| . . . | |
| . . . | |
| q_0_cumulative(x_t | x_0 = C_{k-1}) ... q_n_cumulative(x_t | x_0 = C_{k-1}) | |
| ``` | |
| Вычисляет логарифмические вероятности строк из (кумулятивной или некумулятивной) матрицы переходов для каждого скрытого пикселя в `x_t`. | |
| #### q_posterior[[diffusers.VQDiffusionScheduler.q_posterior]] | |
| ```python | |
| q_posterior(log_p_x_0: Tensor, x_t: LongTensor, t: typing.Union[int, torch.Tensor]) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L281) | |
| **Параметры:** | |
| log_p_x_0 (`torch.Tensor` формы `(batch size, num classes - 1, num latent pixels)`) : Логарифмические вероятности для предсказанных классов начальных латентных пикселей. Не включает предсказание для маскированного класса, так как начальное изображение без шума не может быть замаскировано. | |
| x_t (`torch.LongTensor` формы `(batch size, num latent pixels)`) : Классы каждого латентного пикселя в момент времени `t`. | |
| t (`int` или `torch.Tensor`) : Шаг времени, определяющий, какая матрица переходов используется. | |
| **Возвращает:** `torch.Tensor` формы `(batch size, num classes, num latent pixels)` | |
| Логарифмические вероятности предсказанных классов изображения на шаге `t-1`. | |
| Вычисляет логарифмические вероятности для предсказанных классов изображения на шаге `t-1`: | |
| ``` | |
| p(x_{t-1} | x_t) = sum( q(x_t | x_{t-1}) * q(x_{t-1} | x_0) * p(x_0) / q(x_t | x_0) ) | |
| ``` | |
| #### set_timesteps[[diffusers.VQDiffusionScheduler.set_timesteps]] | |
| ```python | |
| set_timesteps(num_inference_steps: int, device: typing.Union[str, torch.device, NoneType] = None) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L214) | |
| **Параметры:** | |
| num_inference_steps (`int`) : Количество шагов диффузии, используемое при генерации образцов с помощью предобученной модели. | |
| device (`str` или `torch.device`, *необязательный*) : Устройство, на которое следует переместить временные шаги и параметры процесса диффузии (alpha, beta, gamma). | |
| Устанавливает дискретные временные шаги, используемые для цепочки диффузии (выполняется перед инференсом). | |
| #### шаг[[diffusers.VQDiffusionScheduler.step]] | |
| ```python | |
| step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: LongTensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L236) | |
| **Параметры:** | |
| model_output (`torch.Tensor` формы `(batch size, num classes - 1, num latent pixels)`) : Логарифмические вероятности для предсказанных классов начальных латентных пикселей. Не включает предсказание для маскированного класса, так как начальное изображение без шума не может быть замаскировано. | |
| timestep (`int` или `torch.Tensor`) : Шаг времени, определяющий, какие матрицы переходов используются. | |
| sample (`torch.LongTensor` формы `(batch size, num latent pixels)`) : Классы каждого латентного пикселя на текущем шаге времени. | |
| generator (`torch.Generator`, *необязательный*) : генератор случайных чисел для шума, применяемого к `p(x_{t-1} | x_t)` перед выборкой из него. | |
| return_dict (`bool`, по умолчанию `True`) : Возвращать ли [VQDiffusionSchedulerOutput](/docs/diffusers/main/ru/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) или `tuple`. | |
| **Возвращает:** [VQDiffusionSchedulerOutput](/docs/diffusers/main/ru/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) или `tuple[torch.LongTensor]` | |
| If return_dict is `True`, [VQDiffusionSchedulerOutput](/docs/diffusers/main/ru/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) is returned, otherwise a tuple is returned where the first element is the sample tensor. | |
| Предскажите образец из предыдущего шага времени с помощью распределения обратного перехода. Подробнее о том, как вычисляется распределение, см. [q_posterior()](/docs/diffusers/main/ru/api/schedulers/vq_diffusion#diffusers.VQDiffusionScheduler.q_posterior). | |
| ## VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]] | |
| #### diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]] | |
| ```python | |
| diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput(prev_sample: LongTensor) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L27) | |
| **Параметры:** | |
| prev_sample (`torch.LongTensor` формы `(batch size, num latent pixels)`) : вычисленная выборка на предыдущем шаге. `prev_sample` следует использовать как следующий вход модели в цикле удаления шума. | |
| Класс для вывода функции шага планировщика. | |
Xet Storage Details
- Size:
- 16.4 kB
- Xet hash:
- f2d09b25a5ea3fcbcd1815a25cf31ed307b410da329ece6c8ade982b0365615d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.