Buckets:
| # Модели согласованности | |
| Модели согласованности были предложены в работе [Consistency Models](https://huggingface.co/papers/2303.01469) Янгом Сонгом, Прафуллой Дхаривалом, Марком Ченом и Ильей Сутскевером. | |
| Аннотация из статьи: | |
| *Модели диффузии значительно продвинули области генерации изображений, аудио и видео, но они зависят от итеративного процесса выборки, что приводит к медленной генерации. Чтобы преодолеть это ограничение, мы предлагаем consistency models — новое семейство моделей, которые генерируют образцы высокого качества, напрямую отображая шум в данные. По своей конструкции они поддерживают быструю генерацию за один шаг, при этом позволяя многошаговую выборку для обмена вычислительных ресурсов на качество образцов. Они также поддерживают редактирование данных в режиме zero-shot, такое как inpainting изображений, колоризация и суперразрешение, без необходимости явного обучения на этих задачах. Consistency models можно обучать либо путём дистилляции предобученных диффузионных моделей, либо как самостоятельные генеративные модели. В ходе обширных экспериментов мы демонстрируем, что они превосходят существующие техники дистилляции для диффузионных моделей при одношаговой и малошаговой выборке, достигая нового state-of-the-art значения FID 3.55 на CIFAR-10 и 6.20 на ImageNet 64x64 для генерации за один шаг. При обучении в изоляции consistency models становятся новым семейством генеративных моделей, которые могут превосходить существующие одношаговые, неадверсариальные генеративные модели на стандартных бенчмарках, таких как CIFAR-10, ImageNet 64x64 и LSUN 256x256.* | |
| Исходный код можно найти в [openai/consistency_models](https://github.com/openai/consistency_models), а дополнительные контрольные точки доступны в [openai](https://huggingface.co/openai). | |
| Пайплайн был предложен [dg845](https://github.com/dg845) и [ayushtues](https://huggingface.co/ayushtues). ❤️ | |
| ## Советы | |
| Для дополнительного ускорения используйте `torch.compile`, чтобы генерировать несколько изображений менее чем за 1 секунду: | |
| ```diff | |
| import torch | |
| from diffusers import ConsistencyModelPipeline | |
| device = "cuda" # or "mps", "xpu", "cpu" | |
| # Load the cd_bedroom256_lpips checkpoint. | |
| model_id_or_path = "openai/diffusers-cd_bedroom256_lpips" | |
| pipe = ConsistencyModelPipeline.from_pretrained(model_id_or_path, dtype=torch.float16) | |
| pipe.to(device) | |
| + pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True) | |
| # Multistep sampling | |
| # Timesteps can be explicitly specified; the particular timesteps below are from the original GitHub repo: | |
| # https://github.com/openai/consistency_models/blob/main/scripts/launch.sh#L83 | |
| for _ in range(10): | |
| image = pipe(timesteps=[17, 0]).images[0] | |
| image.show() | |
| ``` | |
| ## ConsistencyModelPipeline[[diffusers.ConsistencyModelPipeline]] | |
| #### diffusers.ConsistencyModelPipeline[[diffusers.ConsistencyModelPipeline]] | |
| ```python | |
| diffusers.ConsistencyModelPipeline(unet: UNet2DModel, scheduler: CMStochasticIterativeScheduler) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/consistency_models/pipeline_consistency_models.py#L67) | |
| **Параметры:** | |
| unet ([UNet2DModel](/docs/diffusers/main/ru/api/models/unet2d#diffusers.UNet2DModel)) : `UNet2DModel` для удаления шума из закодированных латентов изображения. | |
| scheduler ([SchedulerMixin](/docs/diffusers/main/ru/api/schedulers/overview#diffusers.SchedulerMixin)) : планировщик, используемый в связке с `unet` для удаления шума из закодированных латентов изображения. В настоящее время совместим только с [CMStochasticIterativeScheduler](/docs/diffusers/main/ru/api/schedulers/cm_stochastic_iterative#diffusers.CMStochasticIterativeScheduler). | |
| Пайплайн для безусловной или условной (по классу) генерации изображений. | |
| Эта модель наследуется от [DiffusionPipeline](/docs/diffusers/main/ru/api/pipelines/overview#diffusers.DiffusionPipeline). Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса. | |
| #### __call__[[diffusers.ConsistencyModelPipeline.__call__]] | |
| ```python | |
| __call__(batch_size: int = 1, class_labels: typing.Union[torch.Tensor, list[int], int, NoneType] = None, num_inference_steps: int = 1, timesteps: list[int] = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/consistency_models/pipeline_consistency_models.py#L171) | |
| **Параметры:** | |
| batch_size (`int`, *необязательный*, по умолчанию 1) : Количество изображений для генерации. | |
| class_labels (`torch.Tensor` или `list[int]` или `int`, *необязательный*) : Необязательные классы меток для условных моделей согласованности, зависящих от класса. Не используются, если модель не зависит от класса. | |
| num_inference_steps (`int`, *optional*, по умолчанию 1) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. | |
| timesteps (`list[int]`, *optional*) : Пользовательские шаги для процесса денойзинга. Если не заданы, используются равномерно распределённые шаги `num_inference_steps`. Должны быть в порядке убывания. | |
| generator (`torch.Generator`, *необязательный*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) для обеспечения детерминированности генерации. | |
| latents (`torch.Tensor`, *необязательный*) : Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать одну и ту же генерацию с помощью разных промптов. Если не задано, тензор латентов генерируется путём выборки с использованием переданного случайного `generator`. | |
| output_type (`str`, *необязательный*, по умолчанию `"pil"`) : Формат вывода сгенерированного изображения. Выберите между `PIL.Image` и `np.array`. | |
| return_dict (`bool`, *необязательный*, по умолчанию `True`) : Возвращать ли [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) вместо обычного кортежа. | |
| callback (`Callable`, *необязательный*) : функция, вызываемая каждые `callback_steps` шагов во время инференса. Функция вызывается со следующими аргументами: `callback(step: int, timestep: int, latents: torch.Tensor)`. | |
| callback_steps (`int`, *optional*, по умолчанию 1) : Частота вызова функции `callback`. Если не указано, callback вызывается на каждом шаге. | |
| **Возвращает:** [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput) или `tuple` | |
| Если `return_dict` равно `True`, возвращается [ImagePipelineOutput](/docs/diffusers/main/ru/api/pipelines/consistency_models#diffusers.ImagePipelineOutput), иначе возвращается `tuple`, где первый элемент — это список с сгенерированными изображениями. | |
| Примеры: | |
| ```py | |
| >>> import torch | |
| >>> from diffusers import ConsistencyModelPipeline | |
| >>> device = "cuda" | |
| >>> # Load the cd_imagenet64_l2 checkpoint. | |
| >>> model_id_or_path = "openai/diffusers-cd_imagenet64_l2" | |
| >>> pipe = ConsistencyModelPipeline.from_pretrained(model_id_or_path, torch_dtype=torch.float16) | |
| >>> pipe.to(device) | |
| >>> # Onestep Sampling | |
| >>> image = pipe(num_inference_steps=1).images[0] | |
| >>> image.save("cd_imagenet64_l2_onestep_sample.png") | |
| >>> # Onestep sampling, class-conditional image generation | |
| >>> # ImageNet-64 class label 145 corresponds to king penguins | |
| >>> image = pipe(num_inference_steps=1, class_labels=145).images[0] | |
| >>> image.save("cd_imagenet64_l2_onestep_sample_penguin.png") | |
| >>> # Multistep sampling, class-conditional image generation | |
| >>> # Timesteps can be explicitly specified; the particular timesteps below are from the original GitHub repo: | |
| >>> # https://github.com/openai/consistency_models/blob/main/scripts/launch.sh#L77 | |
| >>> image = pipe(num_inference_steps=None, timesteps=[22, 0], class_labels=145).images[0] | |
| >>> image.save("cd_imagenet64_l2_multistep_sample_penguin.png") | |
| ``` | |
| ## ImagePipelineOutput[[diffusers.ImagePipelineOutput]] | |
| #### diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]] | |
| ```python | |
| diffusers.ImagePipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L135) | |
| **Параметры:** | |
| images (`List[PIL.Image.Image]` или `np.ndarray`) : Список денойзированных изображений PIL длиной `batch_size` или массив NumPy формы `(batch_size, height, width, num_channels)`. | |
| Класс вывода для пайплайнов обработки изображений. | |
Xet Storage Details
- Size:
- 12 kB
- Xet hash:
- 040ae7542c883f2c6cff158be4dad1a87afe09c084aeeaa2539ccc05b367f5cc
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.