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 = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['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, 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 customizedtimesteps - 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 = 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 (
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 = ['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)