Diffusers documentation
MiniMax-H3-Image
MiniMax-H3-Image
MiniMax-H3-Image, MiniMax tarafından MiniMax-H3 tabanlı olarak geliştirilen, metinden görüntüye üretim ve referans görüntü düzenleme için kullanılan bir görüntü modelidir. Kontrol noktasını MiniMaxAI/MiniMax-H3-Image adresinde bulabilirsiniz.
MiniMax-H3 gibi, yalnızca Modular Diffusers blokları olarak entegre edilir: MiniMaxH3ImageBlocks ve bunların MiniMaxH3ImageModularPipeline'ı tüm entegrasyonu oluşturur.
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 ve metin kodlayıcı, bfloat16'da yaklaşık 62 GB boyutundadır ve birlikte 80 GB'lık bir GPU'ya sığmaz; bu nedenle örnekler otomatik boşaltma (auto offloading) kullanır: ComponentsManager, bir bloğun bir bileşene ihtiyacı olduğunda o bileşeni hızlandırıcıya taşır. 4736x3552 boyutundaki bir görüntüde bellek kullanımı yaklaşık 65 GB'a ulaşır.
Metinden görüntüye:
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]Referans görüntüsünü düzenleme:
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]Bileşenler
| Bileşen | Sınıf |
|---|---|
transformer | MiniMaxH3ImageTransformer2DModel |
text_encoder | Qwen3VLForConditionalGeneration |
vae | AutoencoderKLMiniMaxH3Image |
tokenizer, processor | Metin kodlayıcısının belirteçleyicisi ve bir Qwen3VLProcessor |
scheduler | MiniMaxH3Scheduler |
Metin kodlayıcı, MiniMax-H3'ün kullandığıyla aynıdır. Kontrol noktası, repozitorinin kendi içinde tamamlanmış olması için kendi kopyasını saklar; Hub, repozitoriler arasında aynı dosyaları tekilleştirir, bu nedenle kopya orada ek depolama alanı işgal etmez.
İş Akışları
İş akışı, image girdisinde seçilir:
text2image,promptüzerinden üretir.image_conditioned,promptveimageolarak geçirilen bir veya daha fazla referans görüntüden üretim yapar. Prompt, bunlara sırasıyla<Picture 1>,<Picture 2>vb. şeklinde atıfta bulunur. Referanslar kendi boyutlarını korur: her biri yalnızca kısa kenarı 1024 ile 2048 piksel aralığının dışında olduğunda yeniden boyutlandırılır ve asla üretilen görüntünün boyutuna getirilmez.
İstem, sohbet şablonu olmadan olduğu gibi kullanılır ve uzun, eksiksiz açıklamalar en iyi sonucu verir. Bir düzenleme istemi genellikle korunacak öğeleri, ardından değiştirilecek öğeleri adlandırır ve ardından hedef görüntüyü eksiksiz olarak açıklar.
İstemci iyileştirme
MiniMax-H3-Image-PE, MiniMax’ın prompt genişletme modelidir: kısa bir isteği, görsel modelin en iyi çalıştığı türden ayrıntılı bir açıklamaya dönüştürür ve bir en-boy oranı önerir. diffusers/minimax-h3-image-pe-blocks özel blokları, bunu kendi bağımsız bir hattı olarak çalıştırır. Bunlar xgrammar gerektirir ve yaklaşık 18 GB GPU belleği kullanır.
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")Bunun yerine düzenleme talimatını genişletmek için referans görselleri image olarak iletin. Ardından prompt değerini görsel hattına iletin; height ve width değerleri aspect_ratio ile eşleşmelidir.
Görsel boyutu
height ve width, döndürülen görüntünün boyutunu belirtir ve varsayılan olarak 2048'dir. Model, 4 megapiksel veya daha yüksek çözünürlükte üretim yapar: daha küçük bir istek, aynı en-boy oranına sahip daha büyük bir tuval üzerinde üretilir ve ardından yeniden boyutlandırılır; bu nedenle 1024x1024'lik bir istek, 2048x2048'lik bir istekle aynı maliyete sahiptir. min_generation_area, bu eşiği piksel cinsinden belirler; istenen boyutta her zaman üretim yapmak için 1024 değerini iletin. Her durumda tuvalin kenarları 32'nin katlarına yuvarlanır.
MiniMax, 1:1 için 4096x4096, 4:3 için 4736x3552, 3:2 için 5024x3360, 16:9 için 5472x3072 ve 21:9 için 6272x2688 boyutlarını önermektedir; dikey formatlar için ise aynı boyutların yükseklik ve genişlik değerleri yer değiştirilerek kullanılması önerilir.
Örnekleme
- Kontrol noktası,
sample_sigmasüzerinde 6 adımda örnekler ve dönüştürücü (transformer) her adım için bir çıktı başlığına sahip olduğundan,num_inference_stepsparametresi yoktur. - Model rehberlik damıtılmıştır, bu nedenle bir rehber,
negative_promptveyaguidance_scaleyoktur.
MiniMaxH3ImageModularPipeline
sınıf 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 )
MiniMax-H3-Image için modüler bir ModularPipeline: metinden görüntüye (text2image) ve referans görüntü düzenleme (image_conditioned).
MiniMax-H3-Image, MiniMax-H3 dönüştürücüsünü ses olmadan, metin satırlarının, referans görüntülerin satırlarının ve üretilen görüntünün satırlarının (tek bir gizli çerçeve) tek bir paketlenmiş dizisi üzerinde çalıştırır. Kontrol noktası iki kez damıtılmıştır: yönlendirme ağırlıklara gömülmüştür, bu nedenle yönlendirici, negative_prompt ve guidance_scale yoktur; ayrıca, dönüştürücünün her adım için bir çıktı kafası olacak şekilde altı adımlık sabit bir ızgarada örneklemeler yaptığı için num_inference_steps de yoktur.
MiniMaxH3ImageBlocks
MiniMax-H3-Image için modüler pipeline blokları: text2image ve image geçirildiğinde referans görüntü düzenleme (image_conditioned).
Desteklenen iş akışları:
text2image:promptgerektiririmage_conditioned:promptveimagegerektirir
Bileşenler:
image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) tokenizer
(Qwen2Tokenizer) processor (Qwen3VLProcessor) vae (AutoencoderKLMiniMaxH3Image) scheduler
(MiniMaxH3Scheduler) transformer (MiniMaxH3ImageTransformer2DModel)
Yapılandırmalar: reference_min_short_edge (varsayılan: 1024) reference_max_short_edge (varsayılan: 2048) vision_min_short_edge (varsayılan: 1024) vision_max_short_edge (varsayılan: 1024) sample_sigmas (varsayılan: [1.0, 0.9675236940383911, 0.8875485062599182, 0.75, 0.5327739119529724, 0.23200887441635132, 0.0]): Kontrol noktasının adım başına çıktı başlıklarının damıtıldığı örneklemleme ızgarası.
Girdiler:
image (Image | list, isteğe bağlı):
Düzenlemenin referans görseli veya bunların bir listesi. İfade, bunlara sırasıyla <Picture 1>, <Picture 2>, … olarak atıfta bulunur.
prompt (str):
Üretimi yönlendirmek için tek bir dize olan ifade.
vision_images (list, isteğe bağlı):
Metin kodlayıcı için yeniden boyutlandırılmış referans görselleri.
reference_images (list, isteğe bağlı):
VAE için yeniden boyutlandırılmış referans görselleri.
generator (Generator, isteğe bağlı):
İsteğin üreteci. Her referans için bir posterior örnek bu üreteçten çekilir.
height (int):
Dönen görselin piksel cinsinden yüksekliği.
width (int):
Dönen görselin piksel cinsinden genişliği.
min_generation_area (int, isteğe bağlı, varsayılan 4194304):
Bir görselin oluşturulduğu en küçük alan, piksel cinsinden. Daha küçük bir height x width, bu alana ölçeklendirilen bir tuval üzerinde oluşturulur ve kodlama sonrası height x width boyutuna yeniden ölçeklenir. Her zaman istenen boyutta üretmek için 1024 geçin.
reference_latents (list, isteğe bağlı):
Referans görsellerin koşullama latentleri. Her referansın geometrisinin geldiği yer, onların şeklidir.
latents (Tensor):
Çekim yerine kullanılan, (1, latent_channels, latent_height, latent_width) şeklindeki önceden üretilmiş gürültü.
reference_noise (list, isteğe bağlı):
Referans görseller için önceden üretilmiş gürültü, reference_latents girdisinin her birinin şekline sahip bir tensör, çekimler yerine kullanılır.
*denoiser_input_fields (None,isteğe bağlı):
Dönüştürücünün adıyla okuduğu paketlenmiş dizinin yapısal tanımı: token_tags, position_ids ve iki satır-dizin tensörü.
output_type (str,isteğe bağlı*, varsayılan pil):
Çıktı biçimi: ‘pil’, ‘np’, ‘pt’.
Çıktılar:
images (list):
Oluşturulan görüntüler.