Buckets:

mishig's picture
|
download
raw
13.7 kB
# P-H3-Image
P-H3-Image, Pruna AI tarafından [MiniMax-H3](./minimax_h3) tabanlı olarak geliştirilmiş, metinden görüntüye üretim ve talimata dayalı görüntü düzenleme için kullanılan bir görüntü modelidir. Kontrol noktasını [PrunaAI/P-H3-Image](https://huggingface.co/PrunaAI/P-H3-Image) adresinde bulabilirsiniz.
```py
import torch
from diffusers import ComponentsManager, ModularPipeline
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu"
pipe = ModularPipeline.from_pretrained("PrunaAI/P-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
prompt = (
"A German Expressionist oil painting of a Berlin street at night in the manner of Ernst Ludwig Kirchner, "
"with gaunt figures hurrying past a glowing gas lamp."
)
image = pipe(prompt=prompt, height=3360, width=2496, generator=torch.Generator().manual_seed(3), output="images")[0]
edited = pipe(prompt="let it snow on the street", image=image, output="images")[0]
```
Her istek önce [prompt upsampler](#prompt-upsampling) üzerinden geçer. Hızlandırıcıdaki her bileşenle birlikte, hattın 8 megapikselde bfloat16 ile yaklaşık 101 GB'a ihtiyacı vardır; bu nedenle örnekler otomatik boşaltmayı kullanır: [ComponentsManager](/docs/diffusers/main/tr/api/modular_diffusers/pipeline_components#diffusers.ComponentsManager), bir blok gerektiğinde her bileşeni hızlandırıcıya taşır ve hat 80 GB'lık bir GPU üzerinde çalışır.
## Bileşenler
| Bileşen | Sınıf |
|---|---|
| `transformer` | [MiniMaxH3Transformer3DModel](/docs/diffusers/main/tr/api/models/minimax_h3_transformer3d#diffusers.MiniMaxH3Transformer3DModel) |
| `text_encoder` | `Qwen3VLForConditionalGeneration` (Qwen3-VL-4B) |
| `text_connector` | [PH3ImageTextConnector](/docs/diffusers/main/tr/api/pipelines/p_h3_image#diffusers.PH3ImageTextConnector) |
| `vae` | [AutoencoderKLPH3Image](/docs/diffusers/main/tr/api/models/autoencoderkl_p_h3_image#diffusers.AutoencoderKLPH3Image) |
| `tokenizer`, `processor` | Metin kodlayıcısının belirteçleyicisi ve MiniMax-H3'ün görüntü işleyicisine sahip bir `Qwen3VLProcessor` |
| `scheduler`, `audio_scheduler` | [MiniMaxH3Scheduler](/docs/diffusers/main/tr/api/schedulers/minimax_h3#diffusers.MiniMaxH3Scheduler) |
| `prompt_upsampler`, `prompt_upsampler_processor` | `Qwen3_5ForConditionalGeneration` (Qwen3.5-9B tabanlı) ve işlemcisi |
## İş Akışları
İş akışı, `image` girdisinde seçilir:
- **`text2image`**, `prompt` üzerinden üretim yapar. `height` ve `width` varsayılan olarak 2912'dir ve 32'nin katlarına yuvarlanır. Model, 8 megapikselde en iyi sonucu verir; örneğin 2912x2912, 3872x2176 veya 2176x3872.
- **`image_conditioned`**, `image` öğesini `prompt` içindeki talimata göre düzenler ve 4 veya 8 megapiksel çözünürlükte en iyi sonucu verir. Görsel, metin kodlayıcı için yaklaşık `vision_pixels` (bir megapiksel) çözünürlükte, VAE için ise kendi boyutunda kodlanır; bu aralığın dışında kalması durumunda `reference_min_pixels` (bir megapiksel) değerine yükseltilir veya `reference_max_pixels` (sekiz megapiksel) değerine düşürülür. `height` ve `width` belirtilmediğinde, düzenleme ilk görselin boyutunda oluşturulur; bu boyut daha küçükse `canvas_min_pixels` (dört megapiksel) değerine yükseltilir. 32'nin katlarına yuvarlanarak geçirilen `height` ve `width` değerleri tuvali değiştirir ancak görselleri değiştirmez. `image` ayrıca en fazla 8 görselden oluşan bir liste de olabilir: ilk görsel düzenlenir, diğerleri ise `<Picture 2>`, `<Picture 3>` vb. şeklinde referans olarak kullanılır.
## Prompt örnekleme
P-H3-Image, kısa istekler yerine tam istekleri işlemek üzere tasarlandığından, pipeline her istekte önce prompt upsampler'ı çalıştırır. İsteği değerlendirir ve ardından prompt'u yazar: `height` ve `width` en-boy oranına uygun ayrıntılı bir metinden-görsele prompt veya düzenleme sırasında görsellerde nelerin korunup nelerin değiştirileceğine dair bir özet. Yazdığı prompt, `prompt` çıktısı olarak geri döner.
```py
out = pipe(prompt=prompt, height=3360, width=2496, output=["images", "prompt"])
print(out["prompt"])
```
`max_new_tokens`, akıl yürütme ve istemi birlikte sınırlar; varsayılan olarak metinden görüntüye için 1024, düzenlemeler için 1536 token'dur. Upsampler kullanılabilir bir istem döndürmezse, pipeline bunu render etmek yerine bir hata fırlatır.
`prompt` değerini olduğu gibi görüntülemek için bloklardan adımı çıkarın. Çıkarılan blok ayrıca kendi başına da çalışır; örneğin prompt'u görüntülemesinden önce kullanıcıya göstermek için:
```py
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")
blocks = ModularPipeline.from_pretrained("PrunaAI/P-H3-Image").blocks
upsampler_block = blocks.sub_blocks.pop("prompt_upsampler")
upsampler = upsampler_block.init_pipeline("PrunaAI/P-H3-Image", components_manager=manager)
upsampler.load_components(dtype=torch.bfloat16)
upsampled = upsampler(prompt=prompt, height=3360, width=2496, output="prompt")
pipe = blocks.init_pipeline("PrunaAI/P-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
image = pipe(prompt=upsampled, height=3360, width=2496, output="images")[0]
```
Adım olmadan, upsampler'ın yazdığı her iki biçimdeki düzenleme komutu, altı bölümlük özet veya `Edit <Picture 1>.` ile başlayan bir paragraf, olduğu gibi kodlanır; diğer tüm talimatlar bu önekle eklenir.
## Örnekleme
- 8 adım, kontrol noktasının `sample_sigmas` üzerinde çalışır. Başka bir ızgara kullanmak için `sigmas` parametresini iletin.
- Model rehberlik damıtılmıştır, bu nedenle bir rehber, `negative_prompt` veya `guidance_scale` yoktur.
## PH3ImageModularPipeline[[diffusers.PH3ImageModularPipeline]]
#### diffusers.PH3ImageModularPipeline[[diffusers.PH3ImageModularPipeline]]
```python
diffusers.PH3ImageModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/p_h3_image/modular_pipeline.py#L22)
MiniMax-H3 tabanlı bir görüntü modeli olan P-H3-Image için metinden görüntüye (`text2image`) ve talimata dayalı düzenleme (`image_conditioned`) için bir ModularPipeline.
Görsel, iki adet atılan ses latentini içeren tek bir paketlenmiş dizide gürültüden arındırılmış tek bir latent karedir.
```py
import torch
from diffusers import ComponentsManager, ModularPipeline
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")
pipe = ModularPipeline.from_pretrained("PrunaAI/P-H3-Image", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
prompt = (
"A German Expressionist oil painting of a Berlin street at night in the manner of Ernst Ludwig Kirchner, "
"with gaunt figures hurrying past a glowing gas lamp."
)
image = pipe(prompt=prompt, height=3360, width=2496, output="images")[0]
```
## PH3ImageBlocks[[diffusers.PH3ImageBlocks]]
#### diffusers.PH3ImageBlocks[[diffusers.PH3ImageBlocks]]
```python
diffusers.PH3ImageBlocks()
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/p_h3_image/modular_blocks_p_h3_image.py#L376)
P-H3-Image için modüler pipeline blokları: `text2image` ve `image` geçirildiğinde talimata dayalı düzenleme (`image_conditioned`). `prompt` önce prompt upsampler'dan geçer; verilen haliyle render etmek için `prompt_upsampler` adımını kaldırın.
Desteklenen iş akışları:
- `text2image`: `prompt` gerektirir
- `image_conditioned`: `prompt` ve `image` gerektirir
Bileşenler: image_processor (`VaeImageProcessor`) prompt_upsampler (`Qwen3_5ForConditionalGeneration`): İstem yükseltici. prompt_upsampler_processor (`AutoProcessor`): İşlemcisi. text_encoder (`Qwen3VLForConditionalGeneration`) text_connector (`PH3ImageTextConnector`) tokenizer (`Qwen2Tokenizer`) processor (`Qwen3VLProcessor`) vae (`AutoencoderKLPH3Image`) scheduler (`MiniMaxH3Scheduler`) audio_scheduler (`MiniMaxH3Scheduler`) transformer (`MiniMaxH3Transformer3DModel`)
Yapılandırmalar: reference_min_pixels (varsayılan: 1048576) reference_max_pixels (varsayılan: 8388608) canvas_min_pixels (varsayılan:
4194304) vision_pixels (varsayılan: 1000000) sample_sigmas (varsayılan: [1.0, 0.984753, 0.967905, 0.951688,
0.925372, 0.881923, 0.810083, 0.528718, 0.0]): `sigmas` geçirilmediğinde kullanılan checkpoint'in örneklem ızgarası.
Girdiler: image (`Image | list`, *isteğe bağlı*): Düzenlenecek görüntü veya en fazla 8 görüntünün listesi: ilki düzenlenir, diğerleri referans olarak kullanılır. height (`int`, *isteğe bağlı*): Üretilen görüntünün piksel cinsinden yüksekliği, 32'nin katına yuvarlanır. `text2image` için varsayılan değer 2912'dir ve 8 megapikselde en iyi sonucu verir. Bir düzenleme, en az `canvas_min_pixels` olmak üzere ilk görüntünün boyutuna ayarlanır ve 4 veya 8 megapikselde en iyi sonucu verir. width (`int`, *isteğe bağlı*): Üretilen görüntünün piksel cinsinden genişliği, 32'nin katına yuvarlanır. `text2image` için varsayılan değer 2912'dir ve 8 megapikselde en iyi sonucu verir. Bir düzenleme, en az `canvas_min_pixels` olmak üzere ilk görüntünün boyutuna ayarlanır ve 4 veya 8 megapikselde en iyi sonucu verir. prompt (`str`): İstem veya `image` geçirildiğinde düzenleme talimatı. Tek bir dize. max_new_tokens (`int`, *isteğe bağlı*, iş akışına bağlı olarak varsayılan 1536 veya 1024): Upsampler'ın akıl yürütmesi dahil olmak üzere üretebileceği en fazla token sayısı. vision_images (`list`, *isteğe bağlı*): Metin kodlayıcı için yeniden boyutlandırılmış düzenleme görüntüleri, düzenlenecek görüntü ilk sırada. reference_images (`list`, *isteğe bağlı*): VAE için yeniden boyutlandırılmış düzenleme görüntüleri, düzenlenecek görüntü ilk sırada. condition_latents (`list`, *isteğe bağlı*): Düzenleme görüntülerinin koşullandırma latentleri. Biçimleri, referans bloklarının geometrisini verir. generator (`Generator`, *isteğe bağlı*): İsteğin üreteci. Koşullandırma gürültüsü, üretilen satırların gürültüsünden önce, her koşul için bir çekim olacak şekilde buradan çekilir. latents (`Tensor`): `(1, latent_channels, 1, latent_height, latent_width)` biçiminde önceden üretilmiş görüntü gürültüsü, çekim yerine kullanılır. sigmas (`list`, *isteğe bağlı*): Sıkı şekilde azalan ve 0 ile biten özel bir örneklem ızgarası. Varsayılan olarak kontrol noktasının `sample_sigmas` değerini kullanır. **denoiser_input_fields (`None`, *isteğe bağlı*): Transformer'ın adla okuduğu paketlenmiş dizinin yapısal açıklaması: `token_tags`, `position_ids` ve üç satır-dizin tensörü. attention_kwargs (`dict`, *isteğe bağlı*): Dikkat işleyicileri için ek kwargs. output_type (`str`, *isteğe bağlı*, varsayılan pil): Çıktı biçimi: 'pil', 'np', 'pt'.
Çıktılar: görüntüler (`list`): Oluşturulan görüntüler.
## PH3ImageTextConnector[[diffusers.PH3ImageTextConnector]]
#### diffusers.PH3ImageTextConnector[[diffusers.PH3ImageTextConnector]]
```python
diffusers.PH3ImageTextConnector(hidden_state_indices: tuple = (13, 19, 25, 31, 36), text_hidden_size: int = 2560, out_channels: int = 5120)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/condition_embedders/condition_embedder_p_h3_image.py#L22)
**Parametreler:**
hidden_state_indices (`tuple[int, ...]`, varsayılan `(13, 19, 25, 31, 36)`) : Metin kodlayıcısının `hidden_states` alanındaki hangi girdilerin okunacağı, `output_hidden_states` numaralandırmasına göre (`0` gömme çıktısı, `i` `i`. çözücü katmanının çıktısı ve sonuncu ise son normalize edilmiş gizli durum).
text_hidden_size (`int`, varsayılan `2560`) : Metin kodlayıcısının gizli boyutu.
out_channels (`int`, varsayılan `5120`) : MiniMax-H3'ün transformer'ının okuduğu koşullandırma kanal sayısı.
P-H3-Image'ın Qwen3-VL metin kodlayıcısının gizli durumlarını, dönüştürücüsünün okuduğu metin koşullamasına eşler.
`hidden_state_indices` içinde listelenen gizli durumlar birleştirilir, standartlaştırılır, doğrusal olarak projekte edilir ve standartlaştırma işlemi geri alınır. İlk token, her istem için aynı koşullandırmaya sahip bir dikkat yutucusudur (attention sink) bu nedenle `sink_embedding` ile değiştirilir.
#### forward[[diffusers.PH3ImageTextConnector.forward]]
```python
forward(hidden_states: tuple)
```
[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/condition_embedders/condition_embedder_p_h3_image.py#L61)
**Parametreler:**
hidden_states (`tuple[torch.Tensor, ...]`) : Metin kodlayıcısının gizli durumları, `output_hidden_states=True` ile döndürüldüğü gibi: her giriş için `(batch_size, num_tokens, text_hidden_size)` biçiminde bir tensör.
**Dönüş:** `torch.Tensor`
bağlantıcının parametrelerinin veri türünde, `(batch_size, num_tokens, out_channels)` biçimindeki koşullandırma.

Xet Storage Details

Size:
13.7 kB
·
Xet hash:
40125f1e8343222b1464ab3b9cf8c28665631828659bf7d03df15c9b105d360f

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.