Diffusers documentation

MiniMax-H3-Image

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

MiniMax-H3-Image

MiniMax-H3-Image es un modelo de imágenes de MiniMax basado en MiniMax-H3, para la generación de imágenes a partir de texto y la edición de imágenes de referencia. Puedes encontrar el punto de control en MiniMaxAI/MiniMax-H3-Image.

Al igual que MiniMax-H3, se integra únicamente como bloques de Modular Diffusers: MiniMaxH3ImageBlocks y su MiniMaxH3ImageModularPipeline constituyen toda la integración.

import torch
from diffusers import ComponentsManager, ModularPipeline

manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")

pipe = ModularPipeline.from_pretrained("MiniMaxAI/MiniMax-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)

El transformer y el codificador de texto ocupan unos 62 GB cada uno en bfloat16 y no caben juntos en una GPU de 80 GB, por lo que los ejemplos utilizan auto offloading: el ComponentsManager mueve cada componente al acelerador cuando un bloque lo necesita. Una imagen de 4736x3552 alcanza entonces un pico de unos 65 GB.

Texto a imagen:

prompt = (
    "An overhead photograph of a rustic farm-to-table spread on a weathered wooden table: a round loaf of sourdough "
    "on burlap, wedges of cheese on a dark board, a copper bowl of vegetables, vine tomatoes, olives and walnuts."
)
image = pipe(
    prompt=prompt, height=3552, width=4736, generator=torch.Generator().manual_seed(42), output="images"
)[0]

Edición de una imagen de referencia:

from diffusers.utils import load_image

reference = load_image("https://huggingface.co/MiniMaxAI/MiniMax-H3-Image/resolve/main/examples/reference1.png")
image = pipe(
    prompt="Keep everything in <Picture 1> as it is, but remove the headphones and have the two hosts fist bump.",
    image=reference,
    height=4096,
    width=4096,
    generator=torch.Generator().manual_seed(1234),
    output="images",
)[0]

Componentes

ComponenteClase
transformerMiniMaxH3ImageTransformer2DModel
text_encoderQwen3VLForConditionalGeneration
vaeAutoencoderKLMiniMaxH3Image
tokenizer, processorEl tokenizador del codificador de texto y un Qwen3VLProcessor
schedulerMiniMaxH3Scheduler

El codificador de texto es el mismo que utiliza MiniMax-H3. El checkpoint conserva su propia copia para que el repositorio sea autosuficiente; el Hub deduplica archivos idénticos entre repositorios, por lo que la copia no ocupa almacenamiento adicional allí.

Flujos de trabajo

El flujo de trabajo se selecciona en la entrada image:

  • text2image genera a partir de prompt.
  • image_conditioned genera a partir de prompt y una o más imágenes de referencia pasadas como image. El prompt se refiere a ellas en orden como <Picture 1>, <Picture 2>, y así sucesivamente. Las referencias conservan su propio tamaño: cada una se redimensiona solo cuando su lado corto está fuera del rango de 1024 a 2048 píxeles, y nunca al tamaño de la imagen generada.

El prompt se utiliza tal cual, sin plantilla de chat, y funcionan mejor las descripciones largas y completas. Un prompt de edición suele nombrar qué conservar, luego qué cambiar y, a continuación, describe la imagen objetivo por completo.

Mejora de prompts

MiniMax-H3-Image-PE es el modelo de expansión de prompts de MiniMax: reescribe una solicitud breve en el tipo de descripción detallada con la que el modelo de imágenes funciona mejor, y recomienda una relación de aspecto. Los bloques personalizados diffusers/minimax-h3-image-pe-blocks lo ejecutan como un pipeline propio. Requieren xgrammar y aproximadamente 18 GB de memoria de GPU.

import torch
from diffusers import ModularPipeline

enhancer = ModularPipeline.from_pretrained("diffusers/minimax-h3-image-pe-blocks", trust_remote_code=True)
enhancer.load_components(dtype=torch.bfloat16, device_map="cuda")

state = enhancer(prompt="a cozy cabin in the snow")
prompt, aspect_ratio = state.get("prompt"), state.get("aspect_ratio")

Pasa las imágenes de referencia como image para expandir una instrucción de edición. Luego, pasa prompt a la pipeline de imagen, con una height y un width que coincidan con aspect_ratio.

Tamaño de la imagen

height y width son el tamaño de la imagen devuelta y su valor predeterminado es 2048. El modelo genera a 4 megapíxeles o más: una solicitud más pequeña se genera en un lienzo más grande con la misma relación de aspecto y se redimensiona de nuevo, por lo que una solicitud de 1024x1024 cuesta lo mismo que una de 2048x2028. min_generation_area establece ese umbral en píxeles; pase 1024 para generar siempre en el tamaño solicitado. De cualquier manera, los lados del lienzo se redondean a múltiplos de 32.

MiniMax recomienda 4096x4096 para 1:1, 4736x3552 para 4:3, 5024x3360 para 3:2, 5472x3072 para 16:9 y 6272x2688 para 21:9, o los mismos tamaños con la altura y el ancho intercambiados para formatos verticales.

Muestreo

  • Los checkpoints muestrean en 6 pasos sobre sus sample_sigmas, y el transformer tiene una cabeza de salida por paso, por lo que no hay num_inference_steps.
  • El modelo está destilado con guía, por lo que no hay un guionista, negative_prompt ni guidance_scale.

MiniMaxH3ImageModularPipeline

clase diffusers.MiniMaxH3ImageModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

Un ModularPipeline para MiniMax-H3-Image: texto a imagen (text2image) y edición de imagen de referencia (image_conditioned).

MiniMax-H3-Image ejecuta el transformer MiniMax-H3 sin audio sobre una secuencia empaquetada de filas de texto, las filas de las imágenes de referencia y las filas de la imagen generada, que es un único marco latente. El checkpoint se destila dos veces: la guía está integrada en los pesos, por lo que no hay un guider, ni negative_prompt ni guidance_scale, y muestrea en una cuadrícula fija de seis pasos con una cabeza de salida del transformer por paso, por lo que tampoco hay num_inference_steps.

import torch
from diffusers import ModularPipeline

pipe = ModularPipeline.from_pretrained("MiniMaxAI/MiniMax-H3-Image")
pipe.load_components(dtype=torch.bfloat16)

MiniMaxH3ImageBlocks

clase diffusers.MiniMaxH3ImageBlocks

< >

( )

Bloques de pipeline modulares para MiniMax-H3-Image: text2image y edición con imagen de referencia (image_conditioned) cuando se pasa image.

Flujos de trabajo admitidos:

  • text2image: requiere prompt
  • image_conditioned: requiere prompt, image

Componentes: image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) tokenizer (Qwen2Tokenizer) processor (Qwen3VLProcessor) vae (AutoencoderKLMiniMaxH3Image) scheduler (MiniMaxH3Scheduler) transformer (MiniMaxH3ImageTransformer2DModel)

Configuraciones: reference_min_short_edge (predeterminado: 1024) reference_max_short_edge (predeterminado: 2048) vision_min_short_edge (predeterminado: 1024) vision_max_short_edge (predeterminado: 1024) sample_sigmas (predeterminado: [1.0, 0.9675236940383911, 0.8875485062599182, 0.75, 0.5327739119529724, 0.23200887441635132, 0.0]): La cuadrícula de muestreo en la que se destilaron las cabezas de salida por paso del punto de control.

Entradas: image (Image | list, opcional): La imagen de referencia de la edición, o una lista de ellas. El prompt se refiere a ellas en orden como <Picture 1>, <Picture 2>, … prompt (str): El prompt para guiar la generación, una sola cadena de texto. vision_images (list, opcional): Las imágenes de referencia redimensionadas para el codificador de texto. reference_images (list, opcional): Las imágenes de referencia redimensionadas para el VAE. generator (Generator, opcional): El generador de la solicitud. Se extrae una muestra posterior por referencia de él. height (int): Altura de la imagen devuelta en píxeles. width (int): Ancho de la imagen devuelta en píxeles. min_generation_area (int, opcional, predeterminado a 4194304): El área más pequeña, en píxeles, a la que se genera una imagen. Un height x width más pequeño se genera en un lienzo escalado a este área y se redimensiona de vuelta a height x width después de la decodificación. Pasa 1024 para generar siempre en el tamaño solicitado. reference_latents (list, opcional): Los latentes de condicionamiento de las imágenes de referencia. Su forma es de donde proviene la geometría de cada referencia. latents (Tensor): Ruido pregenerado de forma (1, latent_channels, latent_height, latent_width), usado en lugar de la extracción. reference_noise (list, opcional): Ruido pregenerado para las imágenes de referencia, un tensor de la forma de cada entrada de reference_latents, usado en lugar de las extracciones. *denoiser_input_fields (None,opcional): La descripción estructural de la secuencia empaquetada que el transformer lee por nombre: token_tags, position_ids y los dos tensores de índices de fila. output_type (str,opcional*, predeterminado a pil): Formato de salida: ‘pil’, ‘np’, ‘pt’.

Salidas: images (list): Imágenes generadas.

Update on GitHub