Diffusers documentation
MiniMax-H3-Image
MiniMax-H3-Image
MiniMax-H3-Image là một mô hình ảnh của MiniMax dựa trên MiniMax-H3, dùng để tạo ảnh từ văn bản và chỉnh sửa ảnh tham chiếu. Bạn có thể tìm thấy checkpoint tại MiniMaxAI/MiniMax-H3-Image.
Tương tự như MiniMax-H3, nó được tích hợp dưới dạng các khối Modular Diffusers duy nhất: MiniMaxH3ImageBlocks và MiniMaxH3ImageModularPipeline của chúng là toàn bộ phần tích hợp.
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)Transformer và text encoder mỗi cái nặng khoảng 62 GB ở bfloat16 và không thể cùng chạy trên một GPU 80 GB, vì vậy các ví dụ sử dụng auto offloading: ComponentsManager sẽ di chuyển từng thành phần lên accelerator khi một block cần đến nó. Một ảnh 4736x3552 sau đó đạt đỉnh khoảng 65 GB.
Văn bản sang hình ảnh:
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]Chỉnh sửa hình ảnh tham chiếu:
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]Các thành phần
| Thành phần | Lớp |
|---|---|
transformer | MiniMaxH3ImageTransformer2DModel |
text_encoder | Qwen3VLForConditionalGeneration |
vae | AutoencoderKLMiniMaxH3Image |
tokenizer, processor | Tokenizer của text encoder và một Qwen3VLProcessor |
scheduler | MiniMaxH3Scheduler |
Bộ mã hóa văn bản là cùng một bộ mà MiniMax-H3 sử dụng. Điểm kiểm tra giữ một bản sao riêng để kho lưu trữ tự chứa; Hub khử trùng lặp các tệp giống nhau giữa các kho lưu trữ, nên bản sao không chiếm thêm dung lượng lưu trữ ở đó.
Quy trình làm việc
Quy trình làm việc được chọn trên đầu vào image:
text2imagetạo ra từprompt.image_conditionedtạo ra nội dung từpromptvà một hoặc nhiều hình ảnh tham chiếu được truyền dưới dạngimage. Prompt đề cập đến chúng theo thứ tự là<Picture 1>,<Picture 2>, và tiếp tục như vậy. Các hình ảnh tham chiếu giữ nguyên kích thước của chúng: mỗi hình chỉ được thay đổi kích thước khi cạnh ngắn nằm ngoài khoảng từ 1024 đến 2048 pixel, và không bao giờ được điều chỉnh theo kích thước của hình ảnh được tạo ra.
Prompt được sử dụng nguyên văn, không có chat template, và các mô tả dài, đầy đủ sẽ cho kết quả tốt nhất. Một prompt chỉnh sửa thường nêu rõ những gì cần giữ lại, sau đó là những gì cần thay đổi, rồi mô tả đầy đủ hình ảnh đích.
Tăng cường prompt
MiniMax-H3-Image-PE là mô hình mở rộng prompt của MiniMax: nó viết lại một yêu cầu ngắn thành dạng mô tả chi tiết mà mô hình hình ảnh hoạt động tốt nhất, và đề xuất một tỷ lệ khung hình. Các khối tùy chỉnh diffusers/minimax-h3-image-pe-blocks chạy nó như một pipeline riêng. Chúng cần xgrammar và khoảng 18 GB bộ nhớ 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")Truyền các hình ảnh tham chiếu dưới dạng image để mở rộng một chỉ thị chỉnh sửa. Sau đó, truyền prompt vào pipeline hình ảnh, với height và width khớp với aspect_ratio.
Kích thước ảnh
height và width là kích thước của hình ảnh được trả về, mặc định là 2048. Mô hình tạo ảnh ở độ phân giải 4 megapixel trở lên: yêu cầu nhỏ hơn sẽ được tạo trên một canvas lớn hơn có cùng tỷ lệ khung hình rồi được thu nhỏ lại, do đó yêu cầu 1024x1024 có chi phí tương đương với yêu cầu 2048x2048. min_generation_area đặt ngưỡng đó tính bằng pixel; truyền 1024 để luôn tạo ảnh ở kích thước được yêu cầu. Trong mọi trường hợp, các cạnh của canvas sẽ được làm tròn đến bội số của 32.
MiniMax khuyến nghị kích thước 4096x4096 cho tỷ lệ 1:1, 4736x3552 cho 4:3, 5024x3360 cho 3:2, 5472x3072 cho 16:9 và 6272x2688 cho 21:9, hoặc cùng các kích thước đó với chiều cao và chiều rộng hoán đổi cho nhau đối với định dạng dọc.
Mẫu
- Checkpoint lấy mẫu trong 6 bước trên
sample_sigmascủa nó, và transformer có một đầu ra cho mỗi bước, vì vậy không cónum_inference_steps. - Mô hình được chưng cất theo hướng dẫn, do đó không có guider,
negative_prompthayguidance_scale.
MiniMaxH3ImageModularPipeline
lớp diffusers.MiniMaxH3ImageModularPipeline
< source >( 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 )
Một ModularPipeline cho MiniMax-H3-Image: tạo ảnh từ văn bản (text2image) và chỉnh sửa ảnh tham chiếu
(image_conditioned).
MiniMax-H3-Image chạy transformer MiniMax-H3 không có audio trên một chuỗi đóng gói gồm các hàng văn bản, các hàng của hình ảnh tham chiếu và các hàng của hình ảnh được tạo ra, vốn là một khung tiềm ẩn duy nhất. Điểm kiểm tra được chưng cất hai lần: hướng dẫn được nhúng vào trọng số, nên không có bộ hướng dẫn, không có negative_prompt và không có guidance_scale, và nó lấy mẫu trên một lưới cố định gồm sáu bước với một đầu ra của transformer cho mỗi bước, nên cũng không có num_inference_steps.
MiniMaxH3ImageBlocks
Các khối pipeline mô-đun cho MiniMax-H3-Image: text2image, và chỉnh sửa ảnh tham chiếu (image_conditioned) khi truyền image.
Các quy trình làm việc được hỗ trợ:
text2image: yêu cầupromptimage_conditioned: yêu cầuprompt,image
Các thành phần:
image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) tokenizer
(Qwen2Tokenizer) processor (Qwen3VLProcessor) vae (AutoencoderKLMiniMaxH3Image) scheduler
(MiniMaxH3Scheduler) transformer (MiniMaxH3ImageTransformer2DModel)
Configs: reference_min_short_edge (mặc định: 1024) reference_max_short_edge (mặc định: 2048) vision_min_short_edge (mặc định: 1024) vision_max_short_edge (mặc định: 1024) sample_sigmas (mặc định: [1.0, 0.9675236940383911, 0.8875485062599182, 0.75, 0.5327739119529724, 0.23200887441635132, 0.0]): Lưới lấy mẫu mà các đầu ra theo từng bước của checkpoint đã được chưng cất trên đó.
Inputs:
image (Image | list, tùy chọn):
Hình ảnh tham chiếu của bản chỉnh sửa, hoặc một danh sách các hình ảnh đó. Prompt đề cập đến chúng theo thứ tự là <Picture 1>, <Picture 2>, …
prompt (str):
Prompt để hướng dẫn quá trình tạo, một chuỗi duy nhất.
vision_images (list, tùy chọn):
Các hình ảnh tham chiếu đã được thay đổi kích thước cho text encoder.
reference_images (list, tùy chọn):
Các hình ảnh tham chiếu đã được thay đổi kích thước cho VAE.
generator (Generator, tùy chọn):
Trình tạo của yêu cầu. Một mẫu hậu nghiệm cho mỗi hình tham chiếu được rút ra từ nó.
height (int):
Chiều cao của hình ảnh trả về, tính bằng pixel.
width (int):
Chiều rộng của hình ảnh trả về, tính bằng pixel.
min_generation_area (int, tùy chọn, mặc định là 4194304):
Diện tích nhỏ nhất, tính bằng pixel, mà một hình ảnh được tạo ra. Một height x width nhỏ hơn sẽ được tạo trên một
bảng vẽ được phóng to lên diện tích này và được thu nhỏ lại về height x width sau khi giải mã. Truyền 1024 để luôn
tạo ra ở kích thước được yêu cầu.
reference_latents (list, tùy chọn):
Các latents điều kiện của các hình ảnh tham chiếu. Hình dạng của chúng là nơi mọi hình học của mỗi hình tham chiếu bắt
nguồn.
latents (Tensor):
Nhiễu được tạo trước có hình dạng (1, latent_channels, latent_height, latent_width), được sử dụng thay cho
việc rút mẫu.
reference_noise (list, tùy chọn):
Nhiễu được tạo trước cho các hình ảnh tham chiếu, một tensor có hình dạng của mỗi phần tử trong reference_latents, được sử dụng thay cho các lần rút mẫu.
*denoiser_input_fields (None,tùy chọn):
Mô tả cấu trúc của chuỗi đóng gói mà transformer đọc theo tên: token_tags, position_ids và hai tensor chỉ số hàng.
output_type (str,tùy chọn*, mặc định là pil):
Định dạng đầu ra: ‘pil’, ‘np’, ‘pt’.
Đầu ra:
images (list):
Các hình ảnh được tạo.