Diffusers documentation
Ovis-Image
Ovis-Image

Ovis-Image adalah model teks-ke-gambar 7B yang dioptimalkan secara khusus untuk rendering teks berkualitas tinggi, dirancang untuk beroperasi secara efisien di bawah batasan komputasi yang ketat.
Laporan Teknis Ovis-Image dari Alibaba Group, oleh Guo-Hua Wang, Liangfu Cao, Tianyu Cui, Minghao Fu, Xiaohao Chen, Pengxin Zhan, Jianshan Zhao, Lan Li, Bowen Fu, Jiaqi Liu, Qing-Guo Chen.
Abstrak dari makalah tersebut adalah:
Kami memperkenalkan Ovis-Image, model teks-ke-gambar 7B yang dioptimalkan secara khusus untuk render teks berkualitas tinggi, dirancang agar beroperasi secara efisien di bawah kendala komputasi yang ketat. Dibangun di atas kerangka kerja Ovis-U1 kami sebelumnya, Ovis-Image mengintegrasikan dekode visual berbasis difusi dengan backbone multimodal Ovis 2.5 yang lebih kuat, memanfaatkan pipeline pelatihan berpusat pada teks yang menggabungkan pra-pelatihan skala besar dengan penyempurnaan pasca-pelatihan yang dirancang dengan cermat. Meskipun arsitekturnya kompak, Ovis-Image mencapai kinerja render teks yang setara dengan model terbuka yang jauh lebih besar seperti Qwen-Image dan mendekati sistem sumber-tertutup seperti Seedream dan GPT4o. Yang penting, model ini tetap dapat di-deploy pada satu GPU kelas atas dengan memori moderat, sehingga memperkecil kesenjangan antara render teks tingkat frontier dan implementasi praktis. Hasil kami menunjukkan bahwa penggabungan backbone multimodal yang kuat dengan resep pelatihan berfokus-teks yang dirancang dengan cermat sudah cukup untuk mencapai render teks dwibahasa yang andal tanpa harus mengandalkan model berukuran besar atau milik pihak ketiga.
Highlight:
- Render teks yang kuat pada skala 7B yang ringkas: Ovis-Image adalah model teks-ke-gambar 7B yang memberikan kualitas render teks yang setara dengan sistem 20B kelas yang jauh lebih besar seperti Qwen-Image dan kompetitif dengan model sumber-tertutup terkemuka seperti GPT4o dalam skenario yang berpusat pada teks, sambil tetap cukup kecil untuk dijalankan pada perangkat keras yang mudah diakses.
- Fidelitas tinggi pada prompt yang padat teks dan sensitif terhadap tata letak: Model ini unggul pada prompt yang menuntut keselarasan ketat antara konten linguistik dan tipografi yang dirender (misalnya, poster, spanduk, logo, mockup UI, infografis), menghasilkan teks yang mudah dibaca, dieja dengan benar, dan konsisten secara semantik di berbagai jenis huruf, ukuran, dan rasio aspek tanpa mengorbankan kualitas visual keseluruhan.
- Efisiensi dan kemampuan penerapan: Dengan anggaran 7B parameter dan arsitektur yang ramping, Ovis-Image dapat berjalan di satu GPU kelas atas dengan memori moderat, mendukung penggunaan interaktif berlatensi rendah, dan dapat diskalakan untuk penyajian produksi berbasis batch, sehingga menghadirkan kemampuan render teks yang mendekati model frontier ke dalam aplikasi di mana model dengan puluhan miliar parameter tidak praktis.
Pipeline ini disumbangkan oleh Ovis-Image Team. Basis kode aslinya dapat ditemukan di sini.
Model yang tersedia:
| Model | dtype yang direkomendasikan |
|---|---|
AIDC-AI/Ovis-Image-7B | torch.bfloat16 |
Lihat koleksi ini untuk informasi lebih lanjut.
OvisImagePipeline
kelas diffusers.OvisImagePipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: Qwen3Modeltokenizer: Qwen2Tokenizertransformer: OvisImageTransformer2DModel )
Parameter
- transformer (OvisImageTransformer2DModel) — Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan.
- scheduler (FlowMatchEulerDiscreteScheduler) —
Scheduler yang digunakan bersama
transformeruntuk menghilangkan noise pada latens gambar yang telah dikodekan. - vae (AutoencoderKL) — Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.
- text_encoder (
Qwen3Model) — Text encoder dari kelas Qwen3Model. - tokenizer (
Qwen2TokenizerFast) — Tokenizer dari kelas Qwen2TokenizerFast.
Pipeline Ovis-Image untuk generasi teks-ke-gambar.
Referensi: 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
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jikaguidance_scaletidak lebih besar dari1). - guidance_scale (
float, opsional, default 1.0) — True classifier-free guidance (guidance scale) diaktifkan ketikaguidance_scale> 1 dannegative_promptdisediakan. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - num_inference_steps (
int, opsional, default 50) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - sigmas (
list[float], opsional) — Sigmas kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumensigmasdalam metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsditeruskan akan digunakan. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.FloatTensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pemberatan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antara PIL:PIL.Image.Imageataunp.array. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.flux.FluxPipelineOutputalih-alih tuple biasa. - joint_attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
List, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda. - max_sequence_length (
intdefaultnya 512) — Panjang maksimum urutan yang digunakan denganprompt.
Mengembalikan
OvisImagePipelineOutput atau tuple
OvisImagePipelineOutput jika return_dict bernilai True, selain itu berupa tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> 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 )
Parameter
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Hanya digunakan ketikado_classifier_free_guidanceadalahTrue. Jika tidak didefinisikan, string kosong akan digunakan. - do_classifier_free_guidance (
bool, opsional, defaultTrue) — Apakahnegative_promptjuga akan di-encode untuk classifier-free guidance. - device — (
torch.device): perangkat torch - num_images_per_prompt (
int) — jumlah gambar yang harus dihasilkan per prompt - max_sequence_length (
int, opsional, default 256) — Panjang maksimum urutan yang digunakan untukprompt. - prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pemberatan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Jika tidak disediakan, embedding ini akan dibuat darinegative_prompt.
OvisImagePipelineOutput
kelas diffusers.pipelines.ovis_image.OvisImagePipelineOutput
< source >( images: list )
Kelas output untuk pipeline Ovis-Image.