Diffusers documentation

Stable Cascade

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Stable Cascade

Este modelo é construído sobre a arquitetura Würstchen e sua principal diferença em relação a outros modelos, como Stable Diffusion, é que ele opera em um espaço latente muito menor. Por que isso é importante? Quanto menor o espaço latente, mais rápido você pode executar a inferência e mais barato se torna o treinamento. Quão pequeno é o espaço latente? O Stable Diffusion usa um fator de compressão de 8, resultando em uma imagem de 1024x1024 sendo codificada para 128x128. O Stable Cascade atinge um fator de compressão de 42, o que significa que é possível codificar uma imagem de 1024x1024 para 24x24, mantendo reconstruções nítidas. O modelo condicional de texto é então treinado no espaço latente altamente comprimido. Versões anteriores dessa arquitetura alcançaram uma redução de custo de 16x em relação ao Stable Diffusion 1.5.

Portanto, esse tipo de modelo é adequado para usos em que a eficiência é importante. Além disso, todas as extensões conhecidas, como finetuning, LoRA, ControlNet, IP-Adapter, LCM etc., também são possíveis com esse método.

O código original pode ser encontrado em Stability-AI/StableCascade.

Visão geral do modelo

O Stable Cascade consiste em três modelos: Stage A, Stage B e Stage C, representando uma cascata para gerar imagens, daí o nome “Stable Cascade”.

Stage A & B são usados para comprimir imagens, de forma semelhante ao papel do VAE no Stable Diffusion. No entanto, com essa configuração, é possível alcançar uma compressão muito maior das imagens. Enquanto os modelos Stable Diffusion usam um fator de compressão espacial de 8, codificando uma imagem com resolução de 1024 x 1024 para 128 x 128, o Stable Cascade atinge um fator de compressão de 42. Isso codifica uma imagem de 1024 x 1024 para 24 x 24, mantendo a capacidade de decodificar a imagem com precisão. Isso traz o grande benefício de treinamento e inferência mais baratos. Além disso, o Stage C é responsável por gerar os pequenos latents de 24 x 24 a partir de um prompt de texto.

O modelo Stage C opera nos latentes pequenos de 24 x 24 e remove o ruído dos latentes condicionados em prompts de texto. O modelo também é o maior componente no pipeline Cascade e deve ser usado com o StableCascadePriorPipeline

Os modelos Stage B e Stage A são usados com o StableCascadeDecoderPipeline e são responsáveis por gerar a imagem final a partir dos latentes pequenos de 24 x 24.

Existem algumas restrições sobre os tipos de dados que podem ser usados com os modelos Stable Cascade. Os checkpoints oficiais para o StableCascadePriorPipeline não suportam o tipo de dados torch.float16. Use torch.bfloat16 em vez disso.

Para usar o tipo de dados torch.bfloat16 com o StableCascadeDecoderPipeline, é necessário ter o PyTorch 2.2.0 ou superior instalado. Isso também significa que o uso do StableCascadeCombinedPipeline com torch.bfloat16 requer o PyTorch 2.2.0 ou superior, pois ele chama o StableCascadeDecoderPipeline internamente.

Se não for possível instalar o PyTorch 2.2.0 ou superior no seu ambiente, o StableCascadeDecoderPipeline pode ser usado isoladamente com o tipo de dados torch.float16. Você pode baixar os pesos da variante de precisão completa ou bf16 para o pipeline e converter os pesos para torch.float16.

Exemplo de uso

import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings.to(torch.float16),
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")

Usando as versões Lite dos modelos das Etapas B e C

import torch
from diffusers import (
    StableCascadeDecoderPipeline,
    StableCascadePriorPipeline,
    StableCascadeUNet,
)

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")

Carregando checkpoints originais com from_single_file

O carregamento de checkpoints no formato original é suportado pelo método from_single_file na StableCascadeUNet.

import torch
from diffusers import (
    StableCascadeDecoderPipeline,
    StableCascadePriorPipeline,
    StableCascadeUNet,
)

prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""

prior_unet = StableCascadeUNet.from_single_file(
    "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
    dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
    "https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
    dtype=torch.bfloat16
)

prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)

prior.enable_model_cpu_offload()
prior_output = prior(
    prompt=prompt,
    height=1024,
    width=1024,
    negative_prompt=negative_prompt,
    guidance_scale=4.0,
    num_images_per_prompt=1,
    num_inference_steps=20
)

decoder.enable_model_cpu_offload()
decoder_output = decoder(
    image_embeddings=prior_output.image_embeddings,
    prompt=prompt,
    negative_prompt=negative_prompt,
    guidance_scale=0.0,
    output_type="pil",
    num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")

Usos

Uso Direto

O modelo é destinado, por enquanto, a fins de pesquisa. As áreas e tarefas de pesquisa possíveis incluem

  • Pesquisa sobre modelos generativos.
  • Implantação segura de modelos com potencial para gerar conteúdo nocivo.
  • Investigar e compreender as limitações e os vieses dos modelos generativos.
  • Geração de obras de arte e uso em design e outros processos artísticos.
  • Aplicações em ferramentas educacionais ou criativas.

Os usos excluídos são descritos abaixo.

Uso fora do escopo

O modelo não foi treinado para ser factual ou para representar fielmente pessoas ou eventos, e, portanto, o uso do modelo para gerar esse tipo de conteúdo está fora do escopo das capacidades deste modelo. O modelo não deve ser usado de nenhuma forma que viole a Política de Uso Aceitável da Stability AI.

Limitações e Viés

Limitações

  • Rostos e pessoas em geral podem não ser gerados corretamente.
  • A parte de auto-encodimento do modelo é com perdas.

StableCascadeCombinedPipeline

classe diffusers.StableCascadeCombinedPipeline

< >

( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )

Parâmetros

  • tokenizer (CLIPTokenizer) — O tokenizer do decodificador a ser usado para entradas de texto.
  • text_encoder (CLIPTextModelWithProjection) — O codificador de texto do decodificador a ser usado para entradas de texto.
  • decoder (StableCascadeUNet) — O modelo de decodificador a ser usado no pipeline de geração de imagens do decodificador.
  • scheduler (DDPMWuerstchenScheduler) — O scheduler a ser usado no pipeline de geração de imagens do decodificador.
  • vqgan (PaellaVQModel) — O modelo VQGAN a ser usado no pipeline de geração de imagens do decodificador.
  • prior_prior (StableCascadeUNet) — O modelo prior a ser usado para o pipeline prior.
  • prior_text_encoder (CLIPTextModelWithProjection) — O codificador de texto anterior a ser usado para entradas de texto.
  • prior_tokenizer (CLIPTokenizer) — O tokenizer anterior a ser usado para entradas de texto.
  • prior_scheduler (DDPMWuerstchenScheduler) — O scheduler a ser usado para o pipeline prior.
  • prior_feature_extractor (CLIPImageProcessor) — Modelo que extrai recursos de imagens geradas para serem usados como entradas para o image_encoder.
  • prior_image_encoder (CLIPVisionModelWithProjection) — Codificador de imagem CLIP congelado (clip-vit-large-patch14).

Pipeline combinado para geração de texto para imagem usando Stable Cascade.

Este modelo herda de DiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os pipelines (como download ou salvamento, execução em um dispositivo específico, etc.)

__call__

< >

( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )

Parâmetros

  • prompt (str ou list[str]) — O prompt ou os prompts para orientar a geração de imagem para o prior e o decoder.
  • images (torch.Tensor, PIL.Image.Image, list[torch.Tensor], list[PIL.Image.Image], opcional) — As imagens para orientar a geração de imagens do prior.
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale for menor que 1).
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas para o prior. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • prompt_embeds_pooled (torch.Tensor, opcional) — Incorporações de texto pré-geradas para o prior. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não for fornecido, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativo pré-geradas para o prior. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo o peso do prompt. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • negative_prompt_embeds_pooled (torch.Tensor, opcional) — Embeddings de texto negativos pré-gerados para o prior. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • num_images_per_prompt (int, opcional, padrão 1) — O número de imagens a serem geradas por prompt.
  • height (int, opcional, padrão 512) — A altura em pixels da imagem gerada.
  • width (int, opcional, padrão 512) — A largura em pixels da imagem gerada.
  • prior_guidance_scale (float, opcional, padrão 4.0) — Escala de orientação definida em Classifier-Free Diffusion Guidance. prior_guidance_scale é definido como w da equação 2. do Imagen Paper. A escala de orientação é ativada definindo prior_guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão estreitamente ligadas ao prompt de texto, geralmente em detrimento da qualidade da imagem.
  • prior_num_inference_steps (int | dict[float, int], opcional, padrão 60) — O número de etapas de desruidamento prior. Mais etapas de desruidamento geralmente levam a uma imagem de maior qualidade, às custas de uma inferência mais lenta. Para um espaçamento mais específico de timesteps, você pode passar prior_timesteps personalizados
  • num_inference_steps (int, optional, defaults to 12) — The number of decoder denoising steps. More denoising steps usually lead to a higher quality image at the expense of slower inference. For more specific timestep spacing, you can pass customized timesteps
  • decoder_guidance_scale (float, opcional, padrão 0.0) — Escala de orientação definida em Classifier-Free Diffusion Guidance. guidance_scale é definido como w da equação 2 do Imagen Paper. A escala de orientação é ativada ao definir guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão intimamente ligadas ao prompt de texto, geralmente em detrimento de uma menor qualidade de imagem.
  • generator (torch.Generator ou list[torch.Generator], opcional) — Um ou uma lista de geradores do torch para tornar a geração determinística.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pré-gerados, amostrados de uma distribuição gaussiana, a serem usados como entradas para a geração de imagens. Pode ser usado para ajustar a mesma geração com diferentes prompts. Se não for fornecido, um tensor de latentes será gerado por amostragem usando o generator aleatório fornecido.
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre: "pil" (PIL.Image.Image), "np" (np.array) ou "pt" (torch.Tensor).
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ImagePipelineOutput em vez de uma tupla simples.
  • prior_callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de remoção de ruído durante a inferência. A função é chamada com os seguintes argumentos: prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).
  • prior_callback_on_step_end_tensor_inputs (list, opcional) — A lista de entradas de tensor para a função prior_callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline.
  • callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá uma lista de todos os tensores, conforme especificado por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — A lista de entradas de tensor para a função callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline.

Função invocada ao chamar o pipeline para geração.

Exemplos:

>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline

>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
...     "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)

enable_model_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )

Desloca todos os modelos para a CPU usando accelerate, reduzindo o uso de memória com baixo impacto no desempenho. Em comparação com enable_sequential_cpu_offload, este método move um modelo inteiro de cada vez para a GPU quando seu método forward é chamado, e o modelo permanece na GPU até que o próximo modelo seja executado. As economias de memória são menores do que com enable_sequential_cpu_offload, mas o desempenho é muito melhor devido à execução iterativa do unet.

enable_sequential_cpu_offload

< >

( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )

Desloca todos os modelos (os dicionários de estado de unet, text_encoder, vae e safety checker) para a CPU usando 🤗 Accelerate, reduzindo significativamente o uso de memória. Os modelos são movidos para um torch.device('meta') e carregados em uma GPU apenas quando o método forward do submódulo específico é chamado. O deslocamento ocorre com base em submódulos. As economias de memória são maiores do que ao usar enable_model_cpu_offload, mas o desempenho é menor.

StableCascadePriorPipeline

classe diffusers.StableCascadePriorPipeline

< >

( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )

Parâmetros

  • prior (StableCascadeUNet) — O prior do Stable Cascade para aproximar o embedding da imagem a partir do embedding de texto e/ou imagem.
  • text_encoder (CLIPTextModelWithProjection) — Codificador de texto congelado (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).
  • feature_extractor (CLIPImageProcessor) — Modelo que extrai recursos de imagens geradas para serem usados como entradas para o image_encoder.
  • image_encoder (CLIPVisionModelWithProjection) — Codificador de imagem CLIP congelado (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — Tokenizer da classe CLIPTokenizer.
  • scheduler (DDPMWuerstchenScheduler) — Um scheduler a ser usado em combinação com prior para gerar o embedding da imagem.
  • resolution_multiple (‘float’, opcional, padrão 42.67) — Resolução padrão para múltiplas imagens geradas.

Pipeline para gerar prior de imagem para Stable Cascade.

Este modelo herda de DiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os pipelines (como download ou salvamento, execução em um dispositivo específico, etc.)

__call__

< >

( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )

Parâmetros

  • prompt (str ou list[str]) — O prompt ou os prompts para orientar a geração da imagem.
  • images (torch.Tensor, PIL.Image.Image, list[torch.Tensor] ou list[PIL.Image.Image], opcional) — Imagem(ns) de referência usada(s) para condicionar a geração do prior. Quando fornecida(s), os embeddings da imagem são derivados da imagem e combinados com o prompt de texto.
  • height (int, opcional, padrão 1024) — A altura em pixels da imagem gerada.
  • width (int, opcional, padrão 1024) — A largura em pixels da imagem gerada.
  • num_inference_steps (int, opcional, padrão 60) — O número de etapas de desruidamento. Mais etapas de desruidamento geralmente resultam em uma imagem de maior qualidade, à custa de uma inferência mais lenta.
  • timesteps (list[float], opcional) — Timesteps personalizados para usar no processo de remoção de ruído com agendadores que suportam um argumento timesteps em seu método set_timesteps. Se não definido, o comportamento padrão quando num_inference_steps é passado será usado. Deve estar em ordem decrescente.
  • guidance_scale (float, opcional, padrão 8.0) — Escala de orientação definida em Classifier-Free Diffusion Guidance. decoder_guidance_scale é definido como w da equação 2. do Imagen Paper. A escala de orientação é ativada definindo decoder_guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens estreitamente ligadas ao prompt de texto, geralmente em detrimento da qualidade da imagem.
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Ignorado quando não se usa orientação (ou seja, ignorado se decoder_guidance_scale for menor que 1).
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • prompt_embeds_pooled (torch.Tensor, opcional) — Embeddings de texto agrupados pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não fornecidos, os embeddings de texto agrupados serão gerados a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • negative_prompt_embeds_pooled (torch.Tensor, opcional) — Embeddings de texto negativo pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não for fornecido, negative_prompt_embeds_pooled será gerado a partir do argumento de entrada negative_prompt.
  • image_embeds (torch.Tensor, opcional) — Incorporações de imagem pré-geradas. Podem ser usadas para ajustar facilmente as entradas de imagem, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de imagem serão geradas a partir do argumento de entrada image, se este existir.
  • num_images_per_prompt (int, opcional, padrão 1) — O número de imagens a serem geradas por prompt.
  • generator (torch.Generator ou list[torch.Generator], opcional) — Um ou uma lista de geradores do torch para tornar a geração determinística.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pré-gerados, amostrados de uma distribuição gaussiana, a serem usados como entradas para a geração de imagens. Pode ser usado para ajustar a mesma geração com diferentes prompts. Se não for fornecido, um tensor de latentes será gerado por amostragem usando o generator aleatório fornecido.
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre: "pil" (PIL.Image.Image), "np" (np.array) ou "pt" (torch.Tensor).
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ImagePipelineOutput em vez de uma tupla simples.
  • callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá uma lista de todos os tensores, conforme especificado por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — A lista de entradas de tensor para a função callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline.

Função invocada ao chamar o pipeline para geração.

Exemplos:

>>> import torch
>>> from diffusers import StableCascadePriorPipeline

>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
...     "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")

>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)

StableCascadePriorPipelineOutput

classe diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput

< >

( image_embeddings: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray] )

Parâmetros

  • image_embeddings (torch.Tensor ou np.ndarray) — Incorporações de imagem anteriores para o prompt de texto
  • prompt_embeds (torch.Tensor) — Incorporações de texto para o prompt.
  • negative_prompt_embeds (torch.Tensor) — Incorporações de texto para o prompt negativo.

Classe de saída para WuerstchenPriorPipeline.

StableCascadeDecoderPipeline

classe diffusers.StableCascadeDecoderPipeline

< >

( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_dim_scale: float = 10.67 )

Parâmetros

  • tokenizer (CLIPTokenizer) — O tokenizador do CLIP.
  • text_encoder (CLIPTextModelWithProjection) — O codificador de texto do CLIP.
  • decoder (StableCascadeUNet) — O unet do decodificador do Stable Cascade.
  • vqgan (PaellaVQModel) — O modelo VQGAN.
  • scheduler (DDPMWuerstchenScheduler) — Um scheduler a ser usado em combinação com prior para gerar o embedding da imagem.
  • latent_dim_scale (float, optional, defaults to 10.67) — Multiplicador para determinar o tamanho do espaço latente VQ a partir dos embeddings de imagem. Se os embeddings de imagem tiverem height=24 e width=24, a forma do latente VQ precisa ser height=int(2410.67)=256 e width=int(2410.67)=256 para corresponder às condições de treinamento.

Pipeline para gerar imagens a partir do modelo Stable Cascade.

Este modelo herda de DiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os pipelines (como download ou salvamento, execução em um dispositivo específico, etc.)

__call__

< >

( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )

Parâmetros

  • image_embeddings (torch.Tensor ou list[torch.Tensor]) — Embeddings de imagem extraídos de uma imagem ou gerados por um Modelo Prioritário.
  • prompt (str ou list[str]) — O prompt ou os prompts para orientar a geração da imagem.
  • num_inference_steps (int, opcional, padrão 12) — O número de etapas de desruidamento. Mais etapas de desruidamento geralmente resultam em uma imagem de maior qualidade, à custa de uma inferência mais lenta.
  • guidance_scale (float, opcional, padrão 0.0) — Escala de orientação definida em Classifier-Free Diffusion Guidance. decoder_guidance_scale é definido como w da equação 2. do Imagen Paper. A escala de orientação é ativada definindo decoder_guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão estreitamente ligadas ao prompt de texto, geralmente em detrimento da qualidade da imagem.
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Ignorado quando não se usa orientação (ou seja, ignorado se decoder_guidance_scale for menor que 1).
  • prompt_embeds (torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • prompt_embeds_pooled (torch.Tensor, opcional) — Embeddings de texto agrupados pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não fornecidos, os embeddings de texto agrupados serão gerados a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.Tensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • negative_prompt_embeds_pooled (torch.Tensor, opcional) — Embeddings de texto negativo pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompt. Se não for fornecido, negative_prompt_embeds_pooled será gerado a partir do argumento de entrada negative_prompt.
  • num_images_per_prompt (int, opcional, padrão 1) — O número de imagens a serem geradas por prompt.
  • generator (torch.Generator ou list[torch.Generator], opcional) — Um ou uma lista de geradores do torch para tornar a geração determinística.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pré-gerados, amostrados de uma distribuição gaussiana, a serem usados como entradas para a geração de imagens. Pode ser usado para ajustar a mesma geração com diferentes prompts. Se não for fornecido, um tensor de latentes será gerado por amostragem usando o generator aleatório fornecido.
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre: "pil" (PIL.Image.Image), "np" (np.array) ou "pt" (torch.Tensor).
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ImagePipelineOutput em vez de uma tupla simples.
  • callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá uma lista de todos os tensores, conforme especificado por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — A lista de entradas de tensor para a função callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline.

Função invocada ao chamar o pipeline para geração.

Exemplos:

>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline

>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
...     "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
...     "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")

>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)
Update on GitHub