Diffusers documentation
Ovis-Image
Ovis-Image

Ovis-Image, yüksek kaliteli metin işleme için özellikle optimize edilmiş, sıkı hesaplama kısıtlamaları altında verimli bir şekilde çalışacak şekilde tasarlanmış 7B metinden görüntüye modelidir.
Alibaba Group'tan Guo-Hua Wang, Liangfu Cao, Tianyu Cui, Minghao Fu, Xiaohao Chen, Pengxin Zhan, Jianshan Zhao, Lan Li, Bowen Fu, Jiaqi Liu, Qing-Guo Chen tarafından hazırlanan Ovis-Image Technical Report.
Makalenin özeti şudur:
Ovis-Image'ı tanıtıyoruz; yüksek kaliteli metin işleme için özellikle optimize edilmiş, sıkı hesaplama kısıtları altında verimli bir şekilde çalışacak şekilde tasarlanmış 7B metinden görüntüye model. Önceki Ovis-U1 çerçevemizin üzerine inşa edilen Ovis-Image, difüzyon tabanlı bir görsel çözücü ile daha güçlü Ovis 2.5 çok modlu omurgasını birleştiriyor; büyük ölçekli ön eğitimi, dikkatle ayarlanmış eğitim sonrası iyileştirmelerle birleştiren metin odaklı bir eğitim hattı kullanıyor. Kompakt mimarisine rağmen Ovis-Image, Qwen-Image gibi çok daha büyük açık modellerle eşdeğer metin işleme performansı elde ediyor ve Seedream ile GPT4o gibi kapalı kaynak sistemlere yaklaşıyor. Önemli olan, modelin orta düzey belleğe sahip tek bir üst düzey GPU üzerinde dağıtılabilir kalması ve bu sayede sınır düzey metin işleme ile pratik dağıtım arasındaki farkı kapatmasıdır. Sonuçlarımız, aşırı boyutlu veya mülkiyetli modellere başvurmadan güvenilir iki dilli metin işleme elde etmek için güçlü bir çok modlu omurganın, dikkatle tasarlanmış metin odaklı bir eğitim tarifiyle birleştirilmesinin yeterli olduğunu göstermektedir.
Vurgular:
- 7B ölçeğinde güçlü metin renderleme: Ovis-Image, metin renderleme kalitesi Qwen-Image gibi çok daha büyük 20B sınıfı sistemlerle karşılaştırılabilir ve metin ağırlıklı senaryolarda GPT4o gibi önde gelen kapalı kaynak modellerle rekabet edebilirken, yaygın olarak erişilebilir donanımlarda çalışacak kadar küçük olan 7B metinden görüntüye bir modeldir.
- Metin ağırlıklı, yerleşime duyarlı istemlerde yüksek sadakat: Model, dil içeriği ile oluşturulan tipografi arasında sıkı bir hizalama gerektiren istemlerde (ör. afişler, pankartlar, logolar, UI maketleri, infografikler) üstün performans gösterir; çeşitli yazı tipleri, boyutlar ve en-boy oranlarında okunabilir, doğru yazılmış ve anlamsal olarak tutarlı metinler üretirken genel görsel kaliteden ödün vermez.
- Etkinlik ve dağıtılabilirlik: 7B parametre bütçesi ve sadeleştirilmiş mimarisi sayesinde Ovis-Image, orta düzey belleğe sahip tek bir üst düzey GPU üzerinde çalışabilir, düşük gecikmeli etkileşimli kullanımı destekler ve toplu üretim sunumuna ölçeklenebilir; böylece on milyarlarca parametreli modellerin uygulanabilir olmadığı uygulamalarda neredeyse sınır düzeyinde metin işleme yeteneğini sunar.
Bu pipeline, Ovis-Image Team tarafından katkıda bulunmuştur. Orijinal kod tabanı burada bulunabilir.
Mevcut modeller:
| Model | Önerilen dtype |
|---|---|
AIDC-AI/Ovis-Image-7B | torch.bfloat16 |
Daha fazla bilgi için bu koleksiyona başvurun.
OvisImagePipeline
sınıf diffusers.OvisImagePipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: Qwen3Modeltokenizer: Qwen2Tokenizertransformer: OvisImageTransformer2DModel )
Parametreler
- transformer (OvisImageTransformer2DModel) — Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan Koşullu Transformer (MMDiT) mimarisi.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Kodlanmış görüntü latentlerini gürültüden arındırmak için
transformerile birlikte kullanılacak bir zamanlayıcı. - vae (AutoencoderKL) — Görselleri latent temsillere kodlamak ve bu temsillerden çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) Modeli.
- text_encoder (
Qwen3Model) — Qwen3Model sınıfının metin kodlayıcısı. - tokenizer (
Qwen2TokenizerFast) — Tokenizer of class Qwen2TokenizerFast.
Metinden görüntüye üretim için Ovis-Image hattı.
Referans: https://github.com/AIDC-AI/Ovis-Image
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = ''guidance_scale: float = 5.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Nonenum_images_per_prompt: int | None = 1generator: 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] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truejoint_attention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 256 ) → OvisImagePipelineOutput or tuple
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsgeçirilmelidir. - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerinenegative_prompt_embedsparametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında yok sayılır (yaniguidance_scale1'den büyük değilse yok sayılır). - guidance_scale (
float, isteğe bağlı, varsayılan 1.0) —guidance_scale> 1 olduğunda venegative_promptsağlandığında True classifier-free guidance (guidance scale) etkinleştirilir. - height (
int, isteğe bağlı, varsayılan: self.unet.config.sample_size * self.vae_scale_factor) — Oluşturulan görüntünün piksel cinsinden yüksekliği. En iyi sonuçlar için varsayılan olarak 1024 olarak ayarlanır. - width (
int, isteğe bağlı, varsayılan: self.unet.config.sample_size * self.vae_scale_factor) — Oluşturulan görüntünün piksel cinsinden genişliği. En iyi sonuçlar için varsayılan olarak 1024 olarak ayarlanır. - num_inference_steps (
int, isteğe bağlı, varsayılan 50) — Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar. - sigmas (
list[float], isteğe bağlı) —set_timestepsyöntemlerindesigmasargümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılır. - num_images_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı. - generator (
torch.Generatorveyalist[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya torch üreteci listesi. - latents (
torch.FloatTensor, isteğe bağlı) — Gaussian dağılımdan örneklenmiş, gürültülü ve önceden oluşturulmuş latents; görsel üretimi için girdi olarak kullanılabilir. Farklı istemlerle aynı üretimi ince ayar yapmak için kullanılabilir. Sağlanmazsa, sağlanan rastgelegeneratorkullanılarak örneklemeye dayalı bir latents tensörü oluşturulur. - prompt_embeds (
torch.FloatTensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.FloatTensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa, negative_prompt_embeds,negative_promptgirdi argümanından oluşturulur. - output_type (
str, isteğe bağlı, varsayılan"pil") — Görsel oluşturma çıktısının biçimi. Şunlardan birini seçin: PIL:PIL.Image.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine~pipelines.flux.FluxPipelineOutputdöndürülüp döndürülmemesi. - joint_attention_kwargs (
dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindekiself.processoraltında tanımlananAttentionProcessor'a iletilen bir kwargs sözlüğü. - callback_on_step_end (
Callable, isteğe bağlı) — Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargs,callback_on_step_end_tensor_inputstarafından belirtilen tüm tensörlerin listesini içerir. - callback_on_step_end_tensor_inputs (
List, optional) — The list of tensor inputs for thecallback_on_step_endfunction. The tensors specified in the list will be passed ascallback_kwargsargument. You will only be able to include variables listed in the._callback_tensor_inputsattribute of your pipeline class. - max_sequence_length (
int, varsayılan 512) —promptile kullanılacak maksimum dizi uzunluğu.
Dönüş değeri
OvisImagePipelineOutput veya tuple
return_dict True ise OvisImagePipelineOutput, aksi halde tuple. Bir tuple döndürüldüğünde, ilk öğe üretilen görüntülerin listesidir.
Üretim için pipeline çağrıldığında tetiklenen işlev.
Örnekler:
>>> import torch
>>> from diffusers import OvisImagePipeline
>>> pipe = OvisImagePipeline.from_pretrained("AIDC-AI/Ovis-Image-7B", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = 'A creative 3D artistic render where the text "OVIS-IMAGE" is written in a bold, expressive handwritten brush style using thick, wet oil paint. The paint is a mix of vibrant rainbow colors (red, blue, yellow) swirling together like toothpaste or impasto art. You can see the ridges of the brush bristles and the glossy, wet texture of the paint. The background is a clean artist's canvas. Dynamic lighting creates soft shadows behind the floating paint strokes. Colorful, expressive, tactile texture, 4k detail.'
>>> image = pipe(prompt, negative_prompt="", num_inference_steps=50, guidance_scale=5.0).images[0]
>>> image.save("ovis_image.png")encode_prompt
< source >( prompt: str | list[str]negative_prompt: str | list[str] | None = Nonedo_classifier_free_guidance: bool = Truedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1max_sequence_length: int = 256prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = None )
Parametreler
- prompt (
strveyalist[str], isteğe bağlı) — kodlanacak prompt - negative_prompt (
strveyalist[str], isteğe bağlı) — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Yalnızcado_classifier_free_guidanceTrueolduğunda kullanılır. Tanımlanmamışsa boş bir dize kullanılır. - do_classifier_free_guidance (
bool, isteğe bağlı, varsayılanTrue) — Sınıflandırıcı-ücretsiz yönlendirme içinnegative_prompt'ün de kodlanıp kodlanmayacağı. - device — (
torch.device): torch cihazı - num_images_per_prompt (
int) — her prompt için oluşturulacak görsel sayısı - max_sequence_length (
int, isteğe bağlı, varsayılan 256) —promptiçin kullanılacak maksimum dizi uzunluğu. - prompt_embeds (
torch.FloatTensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.FloatTensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Sağlanmazsa,negative_promptüzerinden üretilir.
OvisImagePipelineOutput
sınıf diffusers.pipelines.ovis_image.OvisImagePipelineOutput
< source >( images: list )
Parametreler
Ovis-Image pipeline'leri için çıktı sınıfı.