Diffusers documentation
CogView3Plus
CogView3Plus
CogView3: Generación de imágenes a partir de texto más detallada y rápida mediante difusión por relevos de la Universidad de Tsinghua y ZhipuAI, de Wendi Zheng, Jiayan Teng, Zhuoyi Yang, Weihan Wang, Jidong Chen, Xiaotao Gu, Yuxiao Dong, Ming Ding, Jie Tang.
El resumen del artículo es:
Los avances recientes en los sistemas generativos de texto a imagen han sido impulsados en gran medida por los modelos de difusión. Sin embargo, los modelos de difusión de texto a imagen de una sola etapa aún enfrentan desafíos en términos de eficiencia computacional y refinamiento de los detalles de la imagen. Para abordar este problema, proponemos CogView3, un marco en cascada innovador que mejora el rendimiento de la difusión de texto a imagen. CogView3 es el primer modelo que implementa la difusión por relevos en el ámbito de la generación de texto a imagen, ejecutando la tarea creando primero imágenes de baja resolución y aplicando posteriormente una superresolución basada en relevos. Esta metodología no solo produce salidas de texto a imagen competitivas, sino que también reduce significativamente tanto los costos de entrenamiento como los de inferencia. Nuestros resultados experimentales demuestran que CogView3 supera a SDXL, el modelo de difusión de texto a imagen de código abierto más avanzado actualmente, en un 77,0 % en evaluaciones humanas, todo ello requiriendo solo aproximadamente 1/2 del tiempo de inferencia. La variante destilada de CogView3 logra un rendimiento comparable utilizando solo 1/10 del tiempo de inferencia de SDXL.
Asegúrate de consultar la guía de Schedulers para aprender a explorar el equilibrio entre la velocidad y la calidad del scheduler, y consulta la sección reutilizar componentes entre pipelines para aprender a cargar eficientemente los mismos componentes en múltiples pipelines.
Este pipeline fue aportado por zRzRzRzRzRzRzR. El código original se puede encontrar aquí. Los pesos originales se pueden encontrar en hf.co/THUDM.
CogView3PlusPipeline
clase 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 y decodificar imágenes a partir de y hacia representaciones latentes.
- text_encoder (
T5EncoderModel) — Codificador de texto congelado. CogView3Plus utiliza T5; específicamente la variante t5-v1_1-xxl. - tokenizer (
T5Tokenizer) — Tokenizer de la clase T5Tokenizer. - transformer (CogView3PlusTransformer2DModel) —
Un
CogView3PlusTransformer2DModelcondicionado por texto para desruidar los latentes de imagen codificados. - scheduler (SchedulerMixin) —
Un scheduler para usar en combinación con
transformerpara desruidar los latentes de la imagen codificada.
Pipeline para la generación de imágenes a partir de texto usando CogView3Plus.
Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un 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[int, int] = (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[str] = ['latents']max_sequence_length: int = 224 ) → CogView3PipelineOutput or tuple
Parámetros
- prompt (
strolist[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasarprompt_embeds. - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora siguidance_scalees menor que1). - height (
int, opcional, por defecto self.transformer.config.sample_size * self.vae_scale_factor) — La altura en píxeles de la imagen generada. Si no se proporciona, se establece en 1024. - width (
int, opcional, por defecto self.transformer.config.sample_size * self.vae_scale_factor) — El ancho en píxeles de la imagen generada. Si no se proporciona, se establece en 1024. - num_inference_steps (
int, opcional, valor predeterminado50) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta. - timesteps (
list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumentotimestepsen su métodoset_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pasenum_inference_steps. Debe estar en orden descendente. - guidance_scale (
float, opcional, valor predeterminado5.0) — Escala de guía definida en Classifier-Free Diffusion Guidance.guidance_scalese define comowde la ecuación 2 de Imagen Paper. La escala de guía se habilita al establecerguidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al texto deprompt, generalmente a costa de una menor calidad de imagen. - num_images_per_prompt (
int, opcional, valor predeterminado1) — El número de imágenes que se generarán por indicación. - eta (
float, opcional, valor predeterminado 0.0) — Corresponde al parámetro eta (η) del artículo DDIM. Solo se aplica a DDIMScheduler y se ignora en otros programadores. - generator (
torch.Generatorolist[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista. - latents (
torch.FloatTensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando elgeneratoraleatorio suministrado. - prompt_embeds (
torch.FloatTensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - negative_prompt_embeds (
torch.FloatTensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - original_size (
tuple[int], opcional, valor predeterminado (1024, 1024)) — Sioriginal_sizeno es igual atarget_size, la imagen parecerá haber sido reescalada hacia abajo o hacia arriba.original_sizetiene como valor predeterminado(height, width)si no se especifica. Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. - crops_coords_top_left (
tuple[int], opcional, valor predeterminado (0, 0)) —crops_coords_top_leftse puede utilizar para generar una imagen que parezca “recortada” desde la posicióncrops_coords_top_lefthacia abajo. Generalmente se logran imágenes favorables y bien centradas estableciendocrops_coords_top_leften (0, 0). Forma parte del micro-condicionamiento de SDXL, tal como se explica en la sección 2.2 de https://huggingface.co/papers/2307.01952. - output_type (
str, opcional, valor predeterminado"pil") — El formato de salida de la imagen generada. Elija entre PIL:PIL.Image.Imageonp.array. - return_dict (
bool, opcional, valor predeterminadoTrue) — Indica si se debe devolver un~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputen lugar de una tupla simple. - callback_on_step_end (
Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsincluirá una lista de todos los tensores especificados porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opcional) — La lista de entradas de tensor para la funcióncallback_on_step_end. Los tensores especificados en la lista se pasarán como argumentocallback_kwargs. Solo podrás incluir variables listadas en el atributo._callback_tensor_inputsde tu clase de pipeline. - max_sequence_length (
int, por defecto224) — Longitud máxima de la secuencia en el prompt codificado. Se puede establecer en otros valores, pero puede dar lugar a peores resultados.
Devuelve
CogView3PipelineOutput o tuple
CogView3PipelineOutput si return_dict es True, de lo contrario una tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.
Función invocada al llamar a la pipeline para la generación.
Ejemplos:
>>> 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 (
strolist[str], opcional) — prompt a codificar - negative_prompt (
strolist[str], opcional) — El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se debe pasarnegative_prompt_embedsen su lugar. Se ignora cuando no se usa guía (es decir, se ignora siguidance_scalees menor que1). - do_classifier_free_guidance (
bool, opcional, valor predeterminadoTrue) — Si se debe usar classifier free guidance o no. - num_images_per_prompt (
int, opcional, valor predeterminado 1) — Número de imágenes que deben generarse por indicación. Dispositivo de torch en el que colocar las incrustaciones resultantes - prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entradaprompt. - negative_prompt_embeds (
torch.Tensor, opcional) — Incrustaciones de texto negativo pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporciona, negative_prompt_embeds se generará a partir del argumento de entradanegative_prompt. - max_sequence_length (
int, por defecto224) — Longitud máxima de la secuencia en el prompt codificado. Se puede establecer en otros valores, pero puede dar lugar a peores resultados. - device — (
torch.device, opcional): dispositivo de torch - dtype — (
torch.dtype, opcional): dtype de torch
Codifica el prompt en estados ocultos del codificador de texto.
CogView3PipelineOutput
clase diffusers.pipelines.cogview3.pipeline_output.CogView3PipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Clase de salida para las pipelines de CogView3.