Diffusers documentation
InstructPix2Pix
InstructPix2Pix
InstructPix2Pix: Learning to Follow Image Editing Instructions é de Tim Brooks, Aleksander Holynski e Alexei A. Efros.
O resumo do artigo é:
Propomos um método para editar imagens a partir de instruções humanas: dada uma imagem de entrada e uma instrução escrita que informa ao modelo o que fazer, nosso modelo segue essas instruções para editar a imagem. Para obter dados de treinamento para esse problema, combinamos o conhecimento de dois grandes modelos pré-treinados — um modelo de linguagem (GPT-3) e um modelo de texto para imagem (Stable Diffusion) — para gerar um grande conjunto de dados de exemplos de edição de imagem. Nosso modelo de difusão condicional, InstructPix2Pix, é treinado em nossos dados gerados e generaliza para imagens reais e instruções escritas pelos usuários no momento da inferência. Como ele realiza as edições na passagem direta e não requer ajuste fino por exemplo ou inversão, nosso modelo edita imagens rapidamente, em questão de segundos. Mostramos resultados convincentes de edição para uma coleção diversificada de imagens de entrada e instruções escritas.
Você pode encontrar informações adicionais sobre o InstructPix2Pix no artigo, no repositório de código original e experimentá-lo em uma demonstração.
Certifique-se de consultar o guia de Schedulers para aprender a explorar o compromisso entre a velocidade e a qualidade do scheduler, e veja a seção reutilização de componentes entre pipelines para aprender a carregar eficientemente os mesmos componentes em vários pipelines.
StableDiffusionInstructPix2PixPipeline
classe diffusers.StableDiffusionInstructPix2PixPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = Nonerequires_safety_checker: bool = True )
Parâmetros
- vae (AutoencoderKL) — Modelo Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.
- text_encoder (CLIPTextModel) — Codificador de texto congelado (clip-vit-large-patch14).
- tokenizer (CLIPTokenizer) —
Um
CLIPTokenizerpara tokenizar texto. - unet (UNet2DConditionModel) —
Um
UNet2DConditionModelpara desruidar os latentes da imagem codificada. - scheduler (SchedulerMixin) —
Um scheduler a ser usado em combinação com
unetpara desruidar os latentes da imagem codificada. Pode ser um de DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - safety_checker (
StableDiffusionSafetyChecker) — Módulo de classificação que estima se as imagens geradas podem ser consideradas ofensivas ou prejudiciais. Consulte o model card para mais detalhes sobre os potenciais danos de um modelo. - feature_extractor (CLIPImageProcessor) —
Um
CLIPImageProcessorpara extrair recursos de imagens geradas; usado como entradas para osafety_checker.
Pipeline para edição de imagens em nível de pixel seguindo instruções de texto (baseado no Stable Diffusion).
Este modelo herda de DiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, etc.).
O pipeline também herda os seguintes métodos de carregamento:
- load_textual_inversion() para carregar embeddings de inversão textual
- load_lora_weights() para carregar os pesos do LoRA
- save_lora_weights() para salvar os pesos do LoRA
- load_ip_adapter() para carregar IP Adapters
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonenum_inference_steps: int = 100guidance_scale: float = 7.5image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']cross_attention_kwargs: dict[str, typing.Any] | None = None**kwargs ) → StableDiffusionPipelineOutput or tuple
Parâmetros
- prompt (
stroulist[str], opcional) — O prompt ou os prompts para orientar a geração de imagens. Se não for definido, você precisa passarprompt_embeds. - image (
torch.Tensornp.ndarray,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image]oulist[np.ndarray]) —Imageou tensor representando um lote de imagens a ser repintado de acordo comprompt. Também pode aceitar latentes de imagem comoimage, mas, se latentes forem passados diretamente, eles não são codificados novamente. - num_inference_steps (
int, opcional, padrão 100) — O número de etapas de remoção de ruído. Mais etapas de remoção de ruído geralmente resultam em uma imagem de maior qualidade, à custa de uma inferência mais lenta. - guidance_scale (
float, opcional, padrão 7.5) — Um valor mais alto de guidance scale incentiva o modelo a gerar imagens fortemente ligadas ao textoprompt, em detrimento da qualidade da imagem. O guidance scale é ativado quandoguidance_scale > 1. - image_guidance_scale (
float, optional, defaults to 1.5) — Push the generated image towards the initialimage. Image guidance scale is enabled by settingimage_guidance_scale > 1. Higher image guidance scale encourages generated images that are closely linked to the sourceimage, usually at the expense of lower image quality. This pipeline requires a value of at least1. - negative_prompt (
stroulist[str], opcional) — O prompt ou os prompts para orientar o que não incluir na geração de imagem. Se não definido, é necessário passarnegative_prompt_embedsem vez disso. Ignorado quando não está usando orientação (guidance_scale < 1). - num_images_per_prompt (
int, opcional, padrão 1) — O número de imagens a serem geradas por prompt. - eta (
float, opcional, padrão 0.0) — Corresponde ao parâmetro eta (η) do paper DDIM. Aplica-se apenas ao DDIMScheduler e é ignorado em outros schedulers. - generator (
torch.Generator, opcional) — Umtorch.Generatorpara 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 é gerado por amostragem usando ogeneratoraleatório fornecido. - prompt_embeds (
torch.Tensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto (ponderação do prompt). Se não forem fornecidas, as incorporações de texto são geradas a partir do argumento de entradaprompt. - negative_prompt_embeds (
torch.Tensor, opcional) — Embeddings de texto negativos pré-gerados. Pode ser usado para ajustar facilmente as entradas de texto (ponderação do prompt). Se não for fornecido, osnegative_prompt_embedssão gerados a partir do argumento de entradanegative_prompt. - ip_adapter_image — (
PipelineImageInput, opcional): Entrada de imagem opcional para trabalhar com IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], opcional) — Incorporações de imagem pré-geradas para IP-Adapter. Deve ser uma lista com o mesmo comprimento que o número de IP-adapters. Cada elemento deve ser um tensor de forma(batch_size, num_images, emb_dim). Deve conter a incorporação de imagem negativa sedo_classifier_free_guidanceestiver definido comoTrue. Se não for fornecido, as incorporações são calculadas a partir do argumento de entradaip_adapter_image. - output_type (
str, opcional, padrão"pil") — O formato de saída da imagem gerada. Escolha entrePIL.Imageounp.array. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um StableDiffusionPipelineOutput em vez de uma tupla simples. - callback_on_step_end (
Callable,PipelineCallback,MultiPipelineCallbacks, opcional) — Uma função ou uma subclasse dePipelineCallbackouMultiPipelineCallbacksque é chamada no final de cada etapa de remoção de ruído durante a inferência, 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. - cross_attention_kwargs (
dict, opcional) — Um dicionário de kwargs que, se especificado, é passado aoAttentionProcessorconforme definido emself.processor.
Retorna
StableDiffusionPipelineOutput ou tuple
Se return_dict for True, StableDiffusionPipelineOutput é retornado,
caso contrário, uma tuple é retornada, em que o primeiro elemento é uma lista com as imagens geradas e o
segundo elemento é uma lista de bools indicando se a imagem gerada correspondente contém
conteúdo “not-safe-for-work” (nsfw).
A função de chamada do pipeline para geração.
Exemplos:
>>> import PIL
>>> import requests
>>> import torch
>>> from io import BytesIO
>>> from diffusers import StableDiffusionInstructPix2PixPipeline
>>> def download_image(url):
... response = requests.get(url)
... return PIL.Image.open(BytesIO(response.content)).convert("RGB")
>>> img_url = "https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
>>> image = download_image(img_url).resize((512, 512))
>>> pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(
... "timbrooks/instruct-pix2pix", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "make the mountains snowy"
>>> image = pipe(prompt=prompt, image=image).images[0]load_textual_inversion
< source >( pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]]token: str | list[str] | None = Nonetokenizer: 'PreTrainedTokenizer' | None = Nonetext_encoder: 'PreTrainedModel' | None = None**kwargs )
Parâmetros
- pretrained_model_name_or_path (
strouos.PathLikeoulist[str or os.PathLike]ouDictoulist[Dict]) — Pode ser um dos seguintes ou uma lista deles:- Uma string, o id do modelo (por exemplo,
sd-concepts-library/low-poly-hd-logos-icons) de um modelo pré-treinado hospedado no Hub. - Um caminho para um diretório (por exemplo,
./my_text_inversion_directory/) contendo os pesos de inversão textual. - Um caminho para um arquivo (por exemplo,
./my_text_inversions.pt) contendo pesos de inversão textual. - Um torch state dict.
- Uma string, o id do modelo (por exemplo,
- token (
stroulist[str], opcional) — Substitui o token a ser usado para os pesos de inversão textual. Sepretrained_model_name_or_pathfor uma lista, entãotokentambém deve ser uma lista de comprimento igual. - text_encoder (CLIPTextModel, opcional) — Codificador de texto congelado (clip-vit-large-patch14). Se não for especificado, a função utilizará self.tokenizer.
- tokenizer (CLIPTokenizer, opcional) —
Um
CLIPTokenizerpara tokenizar texto. Se não for especificado, a função usará self.tokenizer. - weight_name (
str, opcional) — Nome de um arquivo de pesos personalizado. Isso deve ser usado quando:- O arquivo de inversão textual salvo está no formato 🤗 Diffusers, mas foi salvo sob um nome de peso específico, como
text_inv.bin. - O arquivo de inversão textual salvo está no formato Automatic1111.
- O arquivo de inversão textual salvo está no formato 🤗 Diffusers, mas foi salvo sob um nome de peso específico, como
- cache_dir (
str | os.PathLike, opcional) — Caminho para um diretório onde a configuração de um modelo pré-treinado baixado é armazenada em cache, caso o cache padrão não seja utilizado. - force_download (
bool, opcional, padrãoFalse) — Se deve forçar o (re-)download dos pesos do modelo e dos arquivos de configuração, sobrescrevendo as versões em cache, caso existam. - proxies (
dict[str, str], opcional) — Um dicionário de servidores proxy a serem usados por protocolo ou endpoint, por exemplo,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Os proxies são usados em cada solicitação. - local_files_only (
bool, opcional, padrãoFalse) — Se deve carregar apenas os pesos e arquivos de configuração do modelo localmente. Se definido comoTrue, o modelo não será baixado do Hub. - hf_token (
strou bool, opcional) — O token a ser usado como autorização de bearer HTTP para arquivos remotos. SeTrue, o token gerado a partir dediffusers-cli login(armazenado em~/.huggingface) é utilizado. - revision (
str, opcional, padrão"main") — A versão específica do modelo a ser usada. Pode ser o nome de um branch, o nome de uma tag, um id de commit ou qualquer identificador permitido pelo Git. - subfolder (
str, opcional, padrão"") — A localização da subpasta de um arquivo de modelo dentro de um repositório de modelo maior no Hub ou localmente. - mirror (
str, opcional) — Espelho de origem para resolver problemas de acessibilidade se você estiver baixando um modelo na China. Não garantimos a atualidade ou a segurança da origem, e você deve consultar o site do espelho para obter mais informações.
Carregue os embeddings de Textual Inversion no codificador de texto do StableDiffusionPipeline (os formatos 🤗 Diffusers e Automatic1111 são suportados).
Exemplo:
Para carregar um vetor de incorporação de Inversão Textual no formato 🤗 Diffusers:
from diffusers import StableDiffusionPipeline
import torch
model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")
pipe.load_textual_inversion("sd-concepts-library/cat-toy")
prompt = "A <cat-toy> backpack"
image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")Para carregar um vetor de incorporação de Inversão Textual no formato Automatic1111, certifique-se de baixar o vetor primeiro (por exemplo, do civitAI) e, em seguida, carregar o vetor
localmente:
from diffusers import StableDiffusionPipeline
import torch
model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")
pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")
prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."
image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")load_lora_weights
< source >( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )
Parâmetros
- pretrained_model_name_or_path_or_dict (
strouos.PathLikeoudict) — Veja lora_state_dict(). - adapter_name (
str, opcional) — Nome do adaptador a ser usado para referenciar o modelo de adaptador carregado. Se não for especificado, será usadodefault_{i}, onde i é o número total de adaptadores sendo carregados. - low_cpu_mem_usage (
bool, opcional) — Acelera o carregamento do modelo carregando apenas os pesos LoRA pré-treinados e não inicializando os pesos aleatórios. - hotswap (
bool, opcional) — Padrão éFalse. Se deve substituir um adaptador (LoRA) existente pelo adaptador recém-carregado no local. Isso significa que, em vez de carregar um adaptador adicional, isso pegará os pesos do adaptador existente e os substituirá pelos pesos do novo adaptador. Isso pode ser mais rápido e eficiente em termos de memória. No entanto, a principal vantagem do hotswap é que, quando o modelo é compilado com torch.compile, o carregamento do novo adaptador não requer a recompilação do modelo. Ao usar hotswap, oadapter_namedeve ser o nome de um adaptador já carregado.Se o novo adaptador e o antigo tiverem ranks e/ou alphas LoRA diferentes (ou seja, escalonamento), você precisa chamar um método adicional antes de carregar o adaptador:
Carrega os pesos LoRA especificados em pretrained_model_name_or_path_or_dict para self.unet e self.text_encoder.
Todos os kwargs são encaminhados para self.lora_state_dict.
Veja lora_state_dict() para mais detalhes sobre como o state dict é carregado.
Veja load_lora_into_unet() para mais detalhes sobre como o state dict é carregado em self.unet.
Veja load_lora_into_text_encoder() para mais detalhes sobre como o state dict é carregado em self.text_encoder.
save_lora_weights
< source >( save_directory: str | os.PathLikeunet_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Trueunet_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = None )
Parâmetros
- save_directory (
strouos.PathLike) — Diretório para salvar os parâmetros LoRA. Será criado se não existir. - unet_lora_layers (
dict[str, torch.nn.Module]oudict[str, torch.Tensor]) — Dicionário de estado das camadas LoRA correspondentes aounet. - text_encoder_lora_layers (
dict[str, torch.nn.Module]oudict[str, torch.Tensor]) — State dict das camadas LoRA correspondentes aotext_encoder. É necessário passar explicitamente o state dict das LoRA do text encoder, pois ele vem do 🤗 Transformers. - is_main_process (
bool, opcional, padrãoTrue) — Indica se o processo que está chamando esta função é o processo principal ou não. Útil durante o treinamento distribuído quando você precisa chamar esta função em todos os processos. Nesse caso, definais_main_process=Trueapenas no processo principal para evitar condições de corrida. - save_function (
Callable) — A função a ser usada para salvar o dicionário de estado. Útil durante o treinamento distribuído quando você precisa substituirtorch.savepor outro método. Pode ser configurado com a variável de ambienteDIFFUSERS_SAVE_MODE. - safe_serialization (
bool, opcional, padrãoTrue) — Se o modelo deve ser salvo usandosafetensorsou da maneira tradicional do PyTorch compickle. - unet_lora_adapter_metadata — Metadados do adaptador LoRA associados ao unet a serem serializados com o state dict.
- text_encoder_lora_adapter_metadata — Metadados do adaptador LoRA associados ao codificador de texto a serem serializados com o state dict.
Salve os parâmetros do LoRA correspondentes ao UNet e ao codificador de texto.
StableDiffusionXLInstructPix2PixPipeline
classe diffusers.StableDiffusionXLInstructPix2PixPipeline
< source >( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Noneis_cosxl_edit: bool | None = False )
Parâmetros
- vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.
- text_encoder (
CLIPTextModel) — Codificador de texto congelado. O Stable Diffusion XL usa a parte de texto do CLIP, especificamente a variante clip-vit-large-patch14. - text_encoder_2 (
CLIPTextModelWithProjection) — Segundo codificador de texto congelado. O Stable Diffusion XL usa a parte de texto e pool do CLIP, especificamente a variante laion/CLIP-ViT-bigG-14-laion2B-39B-b160k. - tokenizer (
CLIPTokenizer) — Tokenizer da classe CLIPTokenizer. - tokenizer_2 (
CLIPTokenizer) — Segundo Tokenizer da classe CLIPTokenizer. - unet (UNet2DConditionModel) — Arquitetura U-Net condicional para desruidar os latentes da imagem codificada.
- scheduler (SchedulerMixin) —
Um scheduler a ser usado em combinação com
unetpara desruidar os latentes da imagem codificada. Pode ser um de DDIMScheduler, LMSDiscreteScheduler ou PNDMScheduler. - requires_aesthetics_score (
bool, opcional, padrão"False") — Se ounetrequer que a condição aesthetic_score seja passada durante a inferência. Veja também a configuração destabilityai/stable-diffusion-xl-refiner-1-0. - force_zeros_for_empty_prompt (
bool, opcional, padrão"True") — Se os embeddings do prompt negativo devem ser forçados a serem sempre definidos como 0. Veja também a configuração destabilityai/stable-diffusion-xl-base-1-0. - add_watermarker (
bool, opcional) — Se deve usar a invisible_watermark library para marcar as imagens de saída. Se não definido, o padrão será True se o pacote estiver instalado; caso contrário, nenhum watermarker será usado. - is_cosxl_edit (
bool, opcional) — Quando definido, os latentes da imagem são escalados.
Pipeline para edição de imagens em nível de pixel seguindo instruções de texto. Baseado no Stable Diffusion XL.
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.)
O pipeline também herda os seguintes métodos de carregamento:
- load_textual_inversion() para carregar embeddings de inversão textual
- para carregar arquivos
.ckptcom from_single_file() - load_lora_weights() para carregar os pesos do LoRA
- save_lora_weights() para salvar os pesos do LoRA
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 100denoising_end: float | None = Noneguidance_scale: float = 5.0image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = None ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple
Parâmetros
- prompt (
stroulist[str], opcional) — O prompt ou os prompts para orientar a geração da imagem. Se não for definido, é necessário passarprompt_embedsem vez disso. - prompt_2 (
stroulist[str], opcional) — O prompt ou prompts a serem enviados para otokenizer_2e otext_encoder_2. Se não definido,prompté usado em ambos os text-encoders - image (
torch.TensorouPIL.Image.Imageounp.ndarrayoulist[torch.Tensor]oulist[PIL.Image.Image]oulist[np.ndarray]) — A(s) imagem(ns) a ser(em) modificada(s) pelo pipeline. - height (
int, opcional, padrão é self.unet.config.sample_size * self.vae_scale_factor) — A altura em pixels da imagem gerada. - width (
int, opcional, padrão é self.unet.config.sample_size * self.vae_scale_factor) — A largura em pixels da imagem gerada. - num_inference_steps (
int, opcional, padrão 50) — 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. - denoising_end (
float, opcional) — Quando especificado, determina a fração (entre 0.0 e 1.0) do processo total de remoção de ruído que deve ser concluída antes de ser encerrada prematuramente de forma intencional. Como resultado, a amostra retornada ainda manterá uma quantidade substancial de ruído, conforme determinado pelos timesteps discretos selecionados pelo scheduler. O parâmetro denoising_end deve ser utilizado idealmente quando este pipeline faz parte de uma configuração multi-pipeline de “Mixture of Denoisers”, conforme detalhado em Refinamento da Saída da Imagem - guidance_scale (
float, opcional, padrão 5.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. - image_guidance_scale (
float, optional, defaults to 1.5) — Image guidance scale is to push the generated image towards the initial imageimage. Image guidance scale is enabled by settingimage_guidance_scale > 1. Higher image guidance scale encourages to generate images that are closely linked to the source imageimage, usually at the expense of lower image quality. This pipeline requires a value of at least1. - negative_prompt (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passarnegative_prompt_embedsem vez disso. Ignorado quando não se usa orientação (ou seja, ignorado seguidance_scalefor menor que1). - negative_prompt_2 (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados paratokenizer_2etext_encoder_2. Se não definido,negative_prompté usado em ambos os text-encoders. - num_images_per_prompt (
int, opcional, padrão 1) — O número de imagens a serem geradas por prompt. - eta (
float, opcional, padrão 0.0) — Corresponde ao parâmetro eta (η) no paper do DDIM: https://huggingface.co/papers/2010.02502. Aplica-se apenas a schedulers.DDIMScheduler, será ignorado para os demais. - 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. - 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. - 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. - pooled_prompt_embeds (
torch.Tensor, opcional) — Embeddings de texto agrupados pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não fornecidos, os embeddings de texto agrupados serão gerados a partir do argumento de entradaprompt. - negative_pooled_prompt_embeds (
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, os pooled negative_prompt_embeds serão gerados a partir do argumento de entradanegative_prompt. - output_type (
str, opcional, padrão"pil") — O formato de saída da imagem gerada. Escolha entre PIL:PIL.Image.Imageounp.array. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputem vez de uma tupla simples. - callback (
Callable, opcional) — Uma função que será chamada a cadacallback_stepsetapas durante a inferência. A função será chamada com os seguintes argumentos:callback(step: int, timestep: int, latents: torch.Tensor). - callback_steps (
int, opcional, padrão 1) — A frequência com que a funçãocallbackserá chamada. Se não for especificada, o callback será chamado a cada etapa. - cross_attention_kwargs (
dict, opcional) — Um dicionário de kwargs que, se especificado, é passado para oAttentionProcessorconforme definido emself.processorem diffusers.models.attention_processor. - guidance_rescale (
float, opcional, padrão 0.0) — Fator de rescalonamento de orientação proposto por Common Diffusion Noise Schedules and Sample Steps are Flawedguidance_scaleé definido comoφna equação 16. de Common Diffusion Noise Schedules and Sample Steps are Flawed. O fator de rescalonamento de orientação deve corrigir a sobreexposição ao usar SNR terminal zero. - original_size (
tuple[int], opcional, padrão (1024, 1024)) — Seoriginal_sizenão for o mesmo quetarget_size, a imagem parecerá ter sido reduzida ou ampliada.original_sizetem como padrão(height, width)se não for especificado. Parte do micro-conditioning do SDXL, conforme explicado na seção 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], opcional, padrão (0, 0)) —crops_coords_top_leftpode ser usado para gerar uma imagem que pareça “recortada” a partir da posiçãocrops_coords_top_leftpara baixo. Imagens favoráveis e bem centralizadas são geralmente obtidas ao definircrops_coords_top_leftcomo (0, 0). Parte do micro-condicionamento do SDXL, conforme explicado na seção 2.2 de https://huggingface.co/papers/2307.01952. - target_size (
tuple[int], opcional, padrão (1024, 1024)) — Na maioria dos casos,target_sizedeve ser definido para a altura e largura desejadas da imagem gerada. Se não for especificado, o padrão será(height, width). Parte do micro-conditioning do SDXL, conforme explicado na seção 2.2 de https://huggingface.co/papers/2307.01952.
Retorna
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput ou tuple
~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput se return_dict for True, caso contrário, uma
tuple. Ao retornar uma tupla, o primeiro elemento é uma lista com as imagens geradas.
Função invocada ao chamar o pipeline para geração.
Exemplos:
>>> import torch
>>> from diffusers import StableDiffusionXLInstructPix2PixPipeline
>>> from diffusers.utils import load_image
>>> resolution = 768
>>> image = load_image(
... "https://hf.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
... ).resize((resolution, resolution))
>>> edit_instruction = "Turn sky into a cloudy one"
>>> pipe = StableDiffusionXLInstructPix2PixPipeline.from_pretrained(
... "diffusers/sdxl-instructpix2pix-768", torch_dtype=torch.float16
... ).to("cuda")
>>> edited_image = pipe(
... prompt=edit_instruction,
... image=image,
... height=resolution,
... width=resolution,
... guidance_scale=3.0,
... image_guidance_scale=1.5,
... num_inference_steps=30,
... ).images[0]
>>> edited_imageencode_prompt
< source >( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = None )
Parâmetros
- prompt (
stroulist[str], opcional) — prompt a ser codificado - prompt_2 (
stroulist[str], opcional) — O prompt ou prompts a serem enviados para otokenizer_2e otext_encoder_2. Se não definido,prompté usado em ambos os text-encoders - device — (
torch.device): dispositivo torch - num_images_per_prompt (
int) — número de imagens que devem ser geradas por prompt - do_classifier_free_guidance (
bool) — se deve usar classifier free guidance ou não - negative_prompt (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passarnegative_prompt_embedsem vez disso. Ignorado quando não se usa orientação (ou seja, ignorado seguidance_scalefor menor que1). - negative_prompt_2 (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem a serem enviados paratokenizer_2etext_encoder_2. Se não definido,negative_prompté usado em ambos os text-encoders - 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. - 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. - pooled_prompt_embeds (
torch.Tensor, opcional) — Embeddings de texto agrupados pré-gerados. Podem ser usados para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não fornecidos, os embeddings de texto agrupados serão gerados a partir do argumento de entradaprompt. - negative_pooled_prompt_embeds (
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, os pooled negative_prompt_embeds serão gerados a partir do argumento de entradanegative_prompt. - lora_scale (
float, opcional) — Uma escala LoRA que será aplicada a todas as camadas LoRA do codificador de texto, caso as camadas LoRA sejam carregadas.
Codifica o prompt em estados ocultos do codificador de texto.