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は、高品質なテキストレンダリングに特化して最適化された7Bのテキストから画像を生成するモデルであり、厳格な計算リソースの制約下でも効率的に動作するように設計されています。

Alibaba GroupのGuo-Hua Wang、Liangfu Cao、Tianyu Cui、Minghao Fu、Xiaohao Chen、Pengxin Zhan、Jianshan Zhao、Lan Li、Bowen Fu、Jiaqi Liu、Qing-Guo ChenによるOvis-Image Technical Report

論文の抄録は以下の通りです:

当社は、厳格な計算リソース制約下で効率的に動作するよう、高品質なテキストレンダリングに特化して最適化された7Bパラメータのテキストから画像生成モデル、Ovis-Image を紹介します。Ovis-Image は、以前の Ovis-U1 フレームワークを基盤として構築されており、拡散ベースのビジュアルデコーダーと、より強力な Ovis 2.5 マルチモーダルバックボーンを統合しています。さらに、大規模な事前学習と、慎重に調整された事後学習による微調整を組み合わせた、テキスト中心の学習パイプラインを活用しています。コンパクトなアーキテクチャにもかかわらず、Ovis-Image は Qwen-Image といったはるかに大規模なオープンモデルと同等のテキストレンダリング性能を達成し、Seedream や GPT4o といったクローズドソースのシステムに迫る性能を示しています。特に重要なのは、このモデルが中程度のメモリを備えた単一のハイエンド GPU 上でデプロイ可能であり、フロンティアレベルのテキストレンダリングと実用的なデプロイメントの間のギャップを縮小している点です。当社の結果は、強力なマルチモーダルバックボーンと、慎重に設計されたテキストに焦点を当てた学習レシピを組み合わせることで、過大規模なモデルやプロプライエタリモデルに頼らずとも、信頼性の高いバイリンガルテキストレンダリングを達成できることを示しています。

ハイライト:

  • コンパクトな7B規模での強力なテキストレンダリング: Ovis-Imageは7Bのテキストto画像モデルであり、Qwen-Imageのようなはるかに大きな20Bクラスのシステムと同等のテキストレンダリング品質を提供し、テキスト中心のシナリオではGPT4oなどの主要なクローズドソースモデルと競合できるレベルにありながら、広く利用可能なハードウェア上で実行できるほど小型です。
  • テキストが多く、レイアウトに敏感なプロンプトにおける高忠実度: 言語的な内容とレンダリングされたタイポグラフィの間の密接な整合性を要求するプロンプト(ポスター、バナー、ロゴ、UIモックアップ、インフォグラフィックなど)において、このモデルは優れた性能を発揮します。多様なフォント、サイズ、アスペクト比にわたって、視認性があり、スペルが正しく、意味的に一貫性のあるテキストを生成し、全体の視覚的品質を損なうことなく実現します。
  • 効率性とデプロイ可能性: 7Bパラメータの予算とスリムなアーキテクチャにより、Ovis-Imageは中程度のメモリを持つ単一のハイエンドGPUに収まり、低レイテンシの対話的利用をサポートするとともに、バッチ生成サービングへのスケーリングにも対応します。これにより、数百億パラメータのモデルが現実的でないアプリケーションにおいて、フロンティア級に迫るテキストレンダリングを実現します。

このパイプラインは Ovis-Image Team によって提供されました。元のコードベースはこちらで確認できます。

利用可能なモデル:

モデル推奨されるdtype
AIDC-AI/Ovis-Image-7Btorch.bfloat16

詳細については、こちらのコレクションを参照してください。

OvisImagePipeline

クラス diffusers.OvisImagePipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: Qwen3Modeltokenizer: Qwen2Tokenizertransformer: OvisImageTransformer2DModel )

パラメータ

  • transformer (OvisImageTransformer2DModel) — エンコードされた画像潜在変数をデノイズするための条件付き Transformer (MMDiT) アーキテクチャ。
  • scheduler (FlowMatchEulerDiscreteScheduler) — transformer と組み合わせて、エンコードされた画像の潜在変数からノイズを除去するために使用するスケジューラ。
  • vae (AutoencoderKL) — 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ (VAE) モデル。
  • text_encoder (Qwen3Model) — クラス Qwen3Model のテキストエンコーダー。
  • tokenizer (Qwen2TokenizerFast) — クラス Qwen2TokenizerFast のトークナイザー。

テキストから画像を生成するためのOvis-Imageパイプライン。

参照: 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

パラメータ

  • prompt (str または list[str]、省略可) — 画像生成をガイドするためのプロンプトです。未定義の場合、代わりに prompt_embeds を渡す必要があります。
  • negative_prompt (str または list[str]、省略可) — 画像生成をガイドしないプロンプトです。未定義の場合、代わりに negative_prompt_embeds を渡す必要があります。ガイダンスを使用していない場合は無視されます(guidance_scale が 1 以下の場合に無視されます)。
  • guidance_scale (float、任意、デフォルト値は 1.0) — guidance_scale > 1 かつ negative_prompt が指定されている場合、True classifier-free guidance (guidance scale) が有効になります。
  • height (int、任意、デフォルトは self.unet.config.sample_size * self.vae_scale_factor) — 生成される画像のピクセル単位の縦幅です。最適な結果を得るため、デフォルトでは 1024 に設定されています。
  • width (int、任意、デフォルトは self.unet.config.sample_size * self.vae_scale_factor) — 生成される画像の幅(ピクセル単位)です。最適な結果を得るため、デフォルトでは 1024 に設定されています。
  • num_inference_steps (int、任意、デフォルト値は 50)— デノイジングのステップ数です。デノイジングのステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。
  • sigmas (list[float]、任意) — set_timesteps メソッドで sigmas 引数を受け付けるスケジューラーにおいて、デノイジングプロセスに使用するカスタムのシグマです。定義されていない場合、num_inference_steps が渡された際のデフォルトの動作が使用されます。
  • num_images_per_prompt (int、任意、デフォルトは 1) — プロンプトごとに生成する画像の数。
  • generator (torch.Generator または list[torch.Generator]、省略可) — 生成を決定論的にするためのtorch ジェネレーター1つまたはリスト。
  • latents (torch.FloatTensor, 任意) — 画像生成の入力として使用する、ガウス分布からサンプリングされた事前生成されたノイジーな潜在変数です。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムgeneratorを使用してサンプリングを行い、潜在変数テンソルが生成されます。
  • prompt_embeds (torch.FloatTensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
  • negative_prompt_embeds (torch.FloatTensor, 任意) — 事前に生成されたネガティブなテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
  • output_type (str、任意、デフォルトは "pil") — 画像生成の出力形式です。PIL: PIL.Image.Image または np.array から選択します。
  • return_dict (bool、省略可、デフォルトはTrue) — ~pipelines.flux.FluxPipelineOutputを返すか、プレーンなタプルを返すかを指定します。
  • joint_attention_kwargs (dict、省略可) — 指定された場合、diffusers.models.attention_processor で定義されている self.processor 配下の AttentionProcessor に渡される kwargs の辞書です。
  • callback_on_step_end (Callable, 省略可) — 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)。 callback_kwargs には、callback_on_step_end_tensor_inputs で指定されたすべてのテンソルのリストが含まれます。
  • callback_on_step_end_tensor_inputs (List, 任意) — callback_on_step_end 関数へのテンソル入力の一覧です。リストで指定されたテンソルは、callback_kwargs 引数として渡されます。パイプラインクラスの ._callback_tensor_inputs 属性にリストされている変数のみを含めることができます。
  • max_sequence_length (int、デフォルト値は 512) — prompt に使用する最大シーケンス長。

戻り値

OvisImagePipelineOutput または tuple

return_dict が True の場合は OvisImagePipelineOutput、それ以外の場合は tuple を返します。 タプルを返す場合、最初の要素は生成された画像のリストです。

生成用のパイプラインを呼び出したときに実行される関数。

例:

>>> 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 )

パラメータ

  • prompt (str または list[str]、省略可能) — エンコードするプロンプト
  • negative_prompt (str または list[str]、任意) — 画像生成をガイドしないプロンプトです。do_classifier_free_guidance が True の場合のみ使用されます。定義されていない場合、空の文字列が使用されます。
  • do_classifier_free_guidance (bool、任意、デフォルトは True) — classifier-free guidance 用に negative_prompt もエンコードするかどうか。
  • device — (torch.device): torch デバイス
  • num_images_per_prompt (int) — 1つのプロンプトに対して生成する画像の数
  • max_sequence_length (int、任意、デフォルトは 256) — prompt に使用する最大シーケンス長。
  • prompt_embeds (torch.FloatTensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
  • negative_prompt_embeds (torch.FloatTensor、任意) — 事前に生成されたネガティブテキストの埋め込みです。指定されない場合、negative_promptから生成されます。

OvisImagePipelineOutput

class diffusers.pipelines.ovis_image.OvisImagePipelineOutput

< >

( images: list )

パラメータ

  • images (list[PIL.Image.Image] または np.ndarray) — batch_size 個のノイズ除去済み PIL 画像のリスト、または形状が (batch_size, height, width, num_channels) の numpy 配列。PIL 画像または numpy 配列は、拡散パイプラインによってノイズ除去された画像を表します。

Ovis-Image パイプライン用の出力クラスです。

Update on GitHub