Diffusers documentation
CogView3Plus
CogView3Plus
CogView3: Geração de texto para imagem mais detalhada e rápida via difusão em sequência da Universidade de Tsinghua e da ZhipuAI, por Wendi Zheng, Jiayan Teng, Zhuoyi Yang, Weihan Wang, Jidong Chen, Xiaotao Gu, Yuxiao Dong, Ming Ding, Jie Tang.
O resumo do artigo é:
Os avanços recentes em sistemas generativos de texto para imagem foram impulsionados em grande parte por modelos de difusão. No entanto, os modelos de difusão de texto para imagem de estágio único ainda enfrentam desafios em termos de eficiência computacional e refinamento dos detalhes da imagem. Para abordar esse problema, propomos o CogView3, um framework em cascata inovador que melhora o desempenho da difusão de texto para imagem. O CogView3 é o primeiro modelo a implementar difusão por retransmissão no campo da geração de texto para imagem, executando a tarefa primeiro criando imagens de baixa resolução e, em seguida, aplicando super-resolução baseada em retransmissão. Essa metodologia não apenas resulta em saídas competitivas de texto para imagem, mas também reduz significativamente os custos de treinamento e inferência. Nossos resultados experimentais demonstram que o CogView3 supera o SDXL, o modelo de difusão de texto para imagem open-source atual com estado da arte, em 77,0% nas avaliações humanas, tudo isso exigindo apenas cerca de 1/2 do tempo de inferência. A variante destilada do CogView3 atinge desempenho comparável utilizando apenas 1/10 do tempo de inferência do SDXL.
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.
Este pipeline foi contribuído por zRzRzRzRzRzRzR. A base de código original pode ser encontrada aqui. Os pesos originais podem ser encontrados em hf.co/THUDM.
CogView3PlusPipeline
classe diffusers.CogView3PlusPipeline
< source >( tokenizer: T5Tokenizertext_encoder: T5EncoderModelvae: AutoencoderKLtransformer: CogView3PlusTransformer2DModelscheduler: diffusers.schedulers.scheduling_ddim_cogvideox.CogVideoXDDIMScheduler | diffusers.schedulers.scheduling_dpm_cogvideox.CogVideoXDPMScheduler )
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 (
T5EncoderModel) — Codificador de texto congelado. O CogView3Plus usa T5; especificamente a variante t5-v1_1-xxl. - tokenizer (
T5Tokenizer) — Tokenizer da classe T5Tokenizer. - transformer (CogView3PlusTransformer2DModel) —
Um
CogView3PlusTransformer2DModelcondicionado por texto para desruidar os latentes da imagem codificada. - scheduler (SchedulerMixin) —
Um scheduler a ser usado em combinação com
transformerpara desruidar os latentes da imagem codificada.
Pipeline para geração de texto para imagem usando CogView3Plus.
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 = Nonenegative_prompt: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50timesteps: list[int] | None = Noneguidance_scale: float = 5.0num_images_per_prompt: int = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoriginal_size: tuple[int, int] | None = Nonecrops_coords_top_left: tuple = (0, 0)output_type: str = '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']max_sequence_length: int = 224 ) → CogView3PipelineOutput 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_embeds. - 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). - height (
int, opcional, padrão é self.transformer.config.sample_size * self.vae_scale_factor) — A altura em pixels da imagem gerada. Se não for fornecida, será definida como 1024. - width (
int, opcional, padrão é self.transformer.config.sample_size * self.vae_scale_factor) — A largura em pixels da imagem gerada. Se não for fornecida, será definida como 1024. - num_inference_steps (
int, opcional, padrão50) — O número de etapas de desruido. Mais etapas de desruido geralmente resultam em uma imagem de maior qualidade, às custas de uma inferência mais lenta. - timesteps (
list[int], 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ão5.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. - num_images_per_prompt (
int, opcional, padrão1) — 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.Generatoroulist[torch.Generator], opcional) — Um ou uma lista de geradores do torch para tornar a geração determinística. - latents (
torch.FloatTensor, 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.FloatTensor, 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.FloatTensor, 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. - 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. - 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_xl.StableDiffusionXLPipelineOutputem 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. - max_sequence_length (
int, padrão224) — Comprimento máximo da sequência no prompt codificado. Pode ser definido para outros valores, mas isso pode levar a resultados piores.
Retorna
CogView3PipelineOutput ou tuple
CogView3PipelineOutput 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 CogView3PlusPipeline
>>> pipe = CogView3PlusPipeline.from_pretrained("THUDM/CogView3-Plus-3B", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
>>> image.save("output.png")encode_prompt
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 224device: typing.Optional[torch.device] = Nonedtype: typing.Optional[torch.dtype] = None )
Parâmetros
- prompt (
stroulist[str], opcional) — prompt a ser codificado - 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). - do_classifier_free_guidance (
bool, opcional, padrãoTrue) — Se deve ou não usar classifier free guidance. - num_images_per_prompt (
int, opcional, padrão 1) — Número de imagens que devem ser geradas por prompt. Dispositivo torch para colocar os embeddings resultantes - 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. - max_sequence_length (
int, padrão224) — Comprimento máximo da sequência no prompt codificado. Pode ser definido para outros valores, mas isso pode levar a resultados piores. - device — (
torch.device, opcional): dispositivo torch - dtype — (
torch.dtype, opcional): dtype do torch
Codifica o prompt em estados ocultos do codificador de texto.
CogView3PipelineOutput
classe diffusers.pipelines.cogview3.pipeline_output.CogView3PipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Classe de saída para os pipelines do CogView3.