Diffusers documentation

Ovis-Image

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

and get access to the augmented documentation experience

to get started

Ovis-Image

concepts

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-7Btorch.bfloat16

Daha fazla bilgi için bu koleksiyona başvurun.

OvisImagePipeline

sınıf diffusers.OvisImagePipeline

< >

( 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 transformer ile 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__

< >

( 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 (str veya list[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds geçirilmelidir.
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemek için kullanılan istem veya istemler. Tanımlanmazsa, bunun yerine negative_prompt_embeds parametresinin geçirilmesi gerekir. Yönlendirme kullanılmadığında yok sayılır (yani guidance_scale 1'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 ve negative_prompt sağ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_timesteps yöntemlerinde sigmas argümanını destekleyen zamanlayıcılarla gürültü azaltma sürecinde kullanılacak özel sigmalar. Tanımlanmamışsa, num_inference_steps geç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.Generator veya list[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 rastgele generator kullanı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ğerleri prompt girdi 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_prompt girdi 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.Image veya np.array.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine ~pipelines.flux.FluxPipelineOutput döndürülüp döndürülmemesi.
  • joint_attention_kwargs (dict, isteğe bağlı) — Belirtilirse, diffusers.models.attention_processor içindeki self.processor altında tanımlanan AttentionProcessor'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_inputs tarafından belirtilen tüm tensörlerin listesini içerir.
  • callback_on_step_end_tensor_inputs (List, optional) — The list of tensor inputs for the callback_on_step_end function. The tensors specified in the list will be passed as callback_kwargs argument. You will only be able to include variables listed in the ._callback_tensor_inputs attribute of your pipeline class.
  • max_sequence_length (int, varsayılan 512) — prompt ile 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

< >

( 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 (str veya list[str], isteğe bağlı) — kodlanacak prompt
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Yalnızca do_classifier_free_guidance True olduğunda kullanılır. Tanımlanmamışsa boş bir dize kullanılır.
  • do_classifier_free_guidance (bool, isteğe bağlı, varsayılan True) — Sınıflandırıcı-ücretsiz yönlendirme için negative_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) — prompt iç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ğerleri prompt girdi 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

< >

( images: list )

Parametreler

  • images (list[PIL.Image.Image] veya np.ndarray) — Uzunluğu batch_size olan gürültüsü azaltılmış PIL görüntülerinin listesi veya (batch_size, height, width, num_channels) biçiminde bir numpy dizisi. PIL görüntüleri veya numpy dizisi, difüzyon hattının gürültüsü azaltılmış görüntülerini temsil eder.

Ovis-Image pipeline'leri için çıktı sınıfı.

Update on GitHub