Buckets:

mishig's picture
|
download
raw
19 kB

Вариация изображения

Модель Stable Diffusion также может генерировать вариации на основе входного изображения. Для этого используется дообученная версия модели Stable Diffusion, подготовленная Justin Pinkney из Lambda.

Исходный код можно найти в LambdaLabsML/lambda-diffusers, а дополнительные официальные контрольные точки для вариаций изображений — в lambdalabs/sd-image-variations-diffusers.

Обязательно ознакомьтесь с разделом Советы по Stable Diffusion, чтобы узнать, как исследовать баланс между скоростью и качеством планировщика, а также как эффективно переиспользовать компоненты конвейера!

StableDiffusionImageVariationPipeline[[diffusers.StableDiffusionImageVariationPipeline]]

diffusers.StableDiffusionImageVariationPipeline[[diffusers.StableDiffusionImageVariationPipeline]]

diffusers.StableDiffusionImageVariationPipeline(vae: AutoencoderKL, image_encoder: CLIPVisionModelWithProjection, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, requires_safety_checker: bool = True)

Источник

Параметры:

vae (AutoencoderKL) : Модель вариационного автоэнкодера (VAE) для кодирования изображений в латентные представления и декодирования из них.

image_encoder (CLIPVisionModelWithProjection) : замороженный энкодер изображений CLIP (clip-vit-large-patch14).

text_encoder (CLIPTextModel) : замороженный текстовый энкодер (clip-vit-large-patch14).

tokenizer (CLIPTokenizer) : CLIPTokenizer для токенизации текста.

unet (UNet2DConditionModel) : UNet2DConditionModel для удаления шума из закодированных латентов изображения.

scheduler (SchedulerMixin) : планировщик, используемый в сочетании с unet для удаления шума из закодированных латентов изображения. Может быть одним из DDIMScheduler, LMSDiscreteScheduler или PNDMScheduler.

safety_checker (StableDiffusionSafetyChecker) : модуль классификации, оценивающий, могут ли сгенерированные изображения считаться оскорбительными или вредными. Подробности о потенциальных рисках модели см. в карточке модели.

feature_extractor (CLIPImageProcessor) : экземпляр CLIPImageProcessor для извлечения признаков из сгенерированных изображений; используется в качестве входных данных для safety_checker.

Pipeline для генерации вариаций изображения на основе входного изображения с использованием Stable Diffusion.

Эта модель наследуется от DiffusionPipeline. Общую документацию по методам, реализованным для всех пайплайнов (загрузка, сохранение, запуск на конкретном устройстве и т. д.), см. в документации родительского класса.

call[[diffusers.StableDiffusionImageVariationPipeline.call]]

__call__(image: typing.Union[PIL.Image.Image, list[PIL.Image.Image], torch.Tensor], height: int | None = None, width: int | None = None, num_inference_steps: int = 50, guidance_scale: float = 7.5, num_images_per_prompt: int | None = 1, eta: float = 0.0, 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)

Источник

Параметры:

image (PIL.Image.Image или list[PIL.Image.Image] или torch.Tensor) : Изображение или изображения для управления генерацией. Если вы предоставляете тензор, он должен быть совместим с CLIPImageProcessor.

height (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Высота генерируемого изображения в пикселях.

width (int, необязательный, по умолчанию self.unet.config.sample_size * self.vae_scale_factor) : Ширина генерируемого изображения в пикселях.

num_inference_steps (int, optional, по умолчанию 50) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода. Этот параметр модулируется strength.

guidance_scale (float, optional, по умолчанию 7.5) : Более высокое значение guidance scale побуждает модель генерировать изображения, тесно связанные с текстовым prompt, за счёт снижения качества изображения. Guidance scale активируется, когда guidance_scale > 1.

num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.

eta (float, необязательный, по умолчанию 0.0) : Соответствует параметру eta (η) из статьи DDIM. Применяется только к DDIMScheduler и игнорируется другими планировщиками.

generator (torch.Generator или list[torch.Generator], необязательно) : torch.Generator для обеспечения детерминированности генерации.

latents (torch.Tensor, необязательный) : Предварительно сгенерированные шумовые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать одну и ту же генерацию с помощью разных промптов. Если не задано, тензор латентов генерируется путём выборки с использованием переданного случайного generator.

output_type (str, необязательный, по умолчанию "pil") : Формат вывода сгенерированного изображения. Выберите между PIL.Image и np.array.

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли StableDiffusionPipelineOutput вместо обычного кортежа.

callback (Callable, необязательный) : функция, вызываемая каждые callback_steps шагов во время инференса. Функция вызывается со следующими аргументами: callback(step: int, timestep: int, latents: torch.Tensor).

callback_steps (int, optional, по умолчанию 1) : Частота вызова функции callback. Если не указано, callback вызывается на каждом шаге.

Возвращает: StableDiffusionPipelineOutput или tuple

Если return_dict равно True, возвращается StableDiffusionPipelineOutput, иначе возвращается tuple, где первый элемент — это список сгенерированных изображений, а второй — список значений bool, указывающих, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw).

Функция вызова конвейера для генерации.

Примеры:

from diffusers import StableDiffusionImageVariationPipeline
from PIL import Image
from io import BytesIO
import requests

pipe = StableDiffusionImageVariationPipeline.from_pretrained(
    "lambdalabs/sd-image-variations-diffusers", revision="v2.0"
)
pipe = pipe.to("cuda")

url = "https://lh3.googleusercontent.com/y-iFOHfLTwkuQSUegpwDdgKmOjRSTvPxat63dQLB25xkTs4lhIbRUFeNBWZzYf370g=s1200"

response = requests.get(url)
image = Image.open(BytesIO(response.content)).convert("RGB")

out = pipe(image, num_images_per_prompt=3, guidance_scale=15)
out["images"][0].save("result.jpg")

enable_attention_slicing[[diffusers.StableDiffusionImageVariationPipeline.enable_attention_slicing]]

enable_attention_slicing(slice_size: str | int = 'auto')

Источник

Параметры:

slice_size (str или int, необязательный, по умолчанию "auto") : Если указано "auto", вход для головок внимания делится пополам, и внимание вычисляется в два этапа. Если указано "max", для экономии максимального объёма памяти выполняется по одному срезу за раз. Если указано число, используется столько срезов, сколько получается от attention_head_dim // slice_size. В этом случае attention_head_dim должно быть кратным slice_size.

Включает послойный вычисление внимания. При включении этого параметра модуль внимания разбивает входной тензор на фрагменты для вычисления внимания в несколько шагов. Если используется более одной головы внимания, вычисления выполняются последовательно для каждой головы. Это полезно для экономии памяти ценой небольшого снижения скорости.

> ⚠️ Не включайте нарезку внимания, если вы уже используете scaled_dot_product_attention (SDPA) из PyTorch > 2.0 или xFormers. Эти вычисления внимания уже очень экономны по памяти, поэтому вам не нужно включать > эту функцию. Если вы включите нарезку внимания (attention slicing) с SDPA или xFormers, это может привести к серьезному замедлению!

Примеры:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing[[diffusers.StableDiffusionImageVariationPipeline.disable_attention_slicing]]

disable_attention_slicing()

Источник

Отключает вычисление внимания с нарезкой. Если enable_attention_slicing был вызван ранее, внимание вычисляется за один шаг.

enable_xformers_memory_efficient_attention[[diffusers.StableDiffusionImageVariationPipeline.enable_xformers_memory_efficient_attention]]

enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None)

Источник

Параметры:

attention_op (Callable, необязательный) : Переопределяет оператор по умолчанию None для использования в качестве аргумента op функции memory_efficient_attention() xFormers.

Включить энергоэффективное внимание от xFormers. При включении этого параметра следует ожидать снижение потребления памяти GPU и возможное ускорение во время инференса. Ускорение во время обучения не гарантируется.

> ⚠️ Если включены и memory efficient attention, и sliced attention, memory efficient attention имеет > приоритет.

Примеры:

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention[[diffusers.StableDiffusionImageVariationPipeline.disable_xformers_memory_efficient_attention]]

disable_xformers_memory_efficient_attention()

Источник

Отключить энергоэффективное внимание из xFormers.

StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)

Источник

Параметры:

images (list[PIL.Image.Image] или np.ndarray) : список денойзированных изображений PIL длиной batch_size или массив NumPy формы (batch_size, height, width, num_channels).

nsfw_content_detected (list[bool]) : список, указывающий, содержит ли соответствующее сгенерированное изображение контент, нежелательный для просмотра на рабочем месте (nsfw), или None, если проверка безопасности не могла быть выполнена.

Класс вывода для пайплайнов Stable Diffusion.

Xet Storage Details

Size:
19 kB
·
Xet hash:
839ce9ee6628b8e85b9312e79d1e75e48027c904b24d0ad13cc02ce46568a2cf

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