Diffusers documentation
Stable Cascade
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
StableCascadePriorPipelinenão suportam o tipo de dadostorch.float16. Usetorch.bfloat16em vez disso.Para usar o tipo de dados
torch.bfloat16com oStableCascadeDecoderPipeline, é necessário ter o PyTorch 2.2.0 ou superior instalado. Isso também significa que o uso doStableCascadeCombinedPipelinecomtorch.bfloat16requer o PyTorch 2.2.0 ou superior, pois ele chama oStableCascadeDecoderPipelineinternamente.Se não for possível instalar o PyTorch 2.2.0 ou superior no seu ambiente, o
StableCascadeDecoderPipelinepode ser usado isoladamente com o tipo de dadostorch.float16. Você pode baixar os pesos da variante de precisão completa oubf16para o pipeline e converter os pesos paratorch.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
< source >( 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__
< source >( 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[str] = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents'] )
Parâmetros
- prompt (
stroulist[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 (
stroulist[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 seguidance_scalefor menor que1). - 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 entradaprompt. - 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 entradaprompt. - 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 entradanegative_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 entradanegative_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 comowda equação 2. do Imagen Paper. A escala de orientação é ativada definindoprior_guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão estreitamente ligadas aopromptde 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 passarprior_timestepspersonalizados - num_inference_steps (
int, opcional, padrão 12) — O número de etapas de remoção de ruído do decodificador. Mais etapas de remoção de ruído geralmente resultam em uma imagem de maior qualidade, às custas de uma inferência mais lenta. Para um espaçamento mais específico detimesteps, você pode passartimestepspersonalizados - decoder_guidance_scale (
float, opcional, padrão 0.0) — Escala de orientação definida em Classifier-Free Diffusion Guidance.guidance_scaleé definido comowda equação 2 do Imagen Paper. A escala de orientação é ativada ao definirguidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão intimamente ligadas aopromptde texto, geralmente em detrimento de uma menor qualidade de imagem. - generator (
torch.Generatoroulist[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 ogeneratoraleató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ãoTrue) — 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çãoprior_callback_on_step_end. Os tensores especificados na lista serão passados como argumentocallback_kwargs. Você só poderá incluir variáveis listadas no atributo._callback_tensor_inputsda 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_kwargsincluirá uma lista de todos os tensores, conforme especificado porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — A lista de entradas de tensor para a funçãocallback_on_step_end. Os tensores especificados na lista serão passados como argumentocallback_kwargs. Você só poderá incluir variáveis listadas no atributo._callback_tensor_inputsda 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
< source >( 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
< source >( 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
< source >( 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 compriorpara 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__
< source >( 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[float] = 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[str] = ['latents'] )
Parâmetros
- prompt (
stroulist[str]) — O prompt ou os prompts para orientar a geração da imagem. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor]oulist[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 argumentotimestepsem seu métodoset_timesteps. Se não definido, o comportamento padrão quandonum_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 comowda equação 2. do Imagen Paper. A escala de orientação é ativada definindodecoder_guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens estreitamente ligadas aopromptde texto, geralmente em detrimento da qualidade da imagem. - negative_prompt (
stroulist[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 sedecoder_guidance_scalefor menor que1). - 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 entradaprompt. - 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 entradaprompt. - 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 entradanegative_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 entradanegative_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 entradaimage, se este existir. - num_images_per_prompt (
int, opcional, padrão 1) — O número de imagens a serem geradas por prompt. - generator (
torch.Generatoroulist[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 ogeneratoraleató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ãoTrue) — 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_kwargsincluirá uma lista de todos os tensores, conforme especificado porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — A lista de entradas de tensor para a funçãocallback_on_step_end. Os tensores especificados na lista serão passados como argumentocallback_kwargs. Você só poderá incluir variáveis listadas no atributo._callback_tensor_inputsda 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
< source >( 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] )
Classe de saída para WuerstchenPriorPipeline.
StableCascadeDecoderPipeline
classe diffusers.StableCascadeDecoderPipeline
< source >( 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 compriorpara 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__
< source >( 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[str] = ['latents'] )
Parâmetros
- image_embeddings (
torch.Tensoroulist[torch.Tensor]) — Embeddings de imagem extraídos de uma imagem ou gerados por um Modelo Prioritário. - prompt (
stroulist[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 comowda equação 2. do Imagen Paper. A escala de orientação é ativada definindodecoder_guidance_scale > 1. Uma escala de orientação maior incentiva a geração de imagens que estão estreitamente ligadas aopromptde texto, geralmente em detrimento da qualidade da imagem. - negative_prompt (
stroulist[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 sedecoder_guidance_scalefor menor que1). - 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 entradaprompt. - 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 entradaprompt. - 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 entradanegative_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 entradanegative_prompt. - num_images_per_prompt (
int, opcional, padrão 1) — O número de imagens a serem geradas por prompt. - generator (
torch.Generatoroulist[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 ogeneratoraleató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ãoTrue) — 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_kwargsincluirá uma lista de todos os tensores, conforme especificado porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — A lista de entradas de tensor para a funçãocallback_on_step_end. Os tensores especificados na lista serão passados como argumentocallback_kwargs. Você só poderá incluir variáveis listadas no atributo._callback_tensor_inputsda 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)