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 é um modelo de texto para imagem de 7B otimizado especificamente para renderização de texto de alta qualidade, projetado para operar de forma eficiente sob restrições computacionais rigorosas.

Ovis-Image Technical Report do Alibaba Group, por Guo-Hua Wang, Liangfu Cao, Tianyu Cui, Minghao Fu, Xiaohao Chen, Pengxin Zhan, Jianshan Zhao, Lan Li, Bowen Fu, Jiaqi Liu, Qing-Guo Chen.

O resumo do artigo é:

Apresentamos o Ovis-Image, um modelo de texto para imagem de 7B otimizado especificamente para renderização de texto de alta qualidade, projetado para operar de forma eficiente sob restrições computacionais rigorosas. Construído sobre nosso framework anterior Ovis-U1, o Ovis-Image integra um decodificador visual baseado em difusão com o backbone multimodal mais robusto Ovis 2.5, aproveitando um pipeline de treinamento centrado em texto que combina pré-treinamento em larga escala com refinamentos de pós-treinamento cuidadosamente ajustados. Apesar de sua arquitetura compacta, o Ovis-Image atinge um desempenho de renderização de texto comparável ao de modelos abertos significativamente maiores, como o Qwen-Image, e se aproxima de sistemas proprietários como Seedream e GPT4o. Crucialmente, o modelo permanece implantável em uma única GPU de alto desempenho com memória moderada, reduzindo a lacuna entre a renderização de texto de nível de fronteira e a implantação prática. Nossos resultados indicam que combinar um backbone multimodal robusto com uma receita de treinamento focada em texto e cuidadosamente projetada é suficiente para alcançar uma renderização de texto bilíngue confiável sem recorrer a modelos excessivamente grandes ou proprietários.

Destaques:

  • Renderização de texto robusta em uma escala compacta de 7B: Ovis-Image é um modelo de texto para imagem de 7B que oferece qualidade de renderização de texto comparável a sistemas muito maiores da classe de 20B, como Qwen-Image, e competitivo com modelos fechados de ponta, como GPT4o, em cenários centrados em texto, mantendo-se pequeno o suficiente para rodar em hardware amplamente acessível.
  • Alta fidelidade em prompts com muito texto e sensíveis ao layout: O modelo se destaca em prompts que exigem alinhamento preciso entre o conteúdo linguístico e a tipografia renderizada (por exemplo, pôsteres, banners, logotipos, mockups de interface, infográficos), produzindo texto legível, corretamente grafado e semanticamente consistente em diversas fontes, tamanhos e proporções de aspecto, sem comprometer a qualidade visual geral.
  • Eficiência e capacidade de implantação: Com seu orçamento de 7B parâmetros e arquitetura otimizada, o Ovis-Image cabe em uma única GPU de alto desempenho com memória moderada, suporta uso interativo de baixa latência e escala para produção em lote, trazendo renderização de texto próxima ao estado da arte para aplicações em que modelos com dezenas de bilhões de parâmetros são impraticáveis.

Este pipeline foi contribuído pela equipe Ovis-Image. A base de código original pode ser encontrada aqui.

Modelos disponíveis:

Modeldtype recomendado
AIDC-AI/Ovis-Image-7Btorch.bfloat16

Consulte esta coleção para mais informações.

OvisImagePipeline

classe diffusers.OvisImagePipeline

< >

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

Parâmetros

  • transformer (OvisImageTransformer2DModel) — Arquitetura Conditional Transformer (MMDiT) para desruidar os latentes da imagem codificada.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Um scheduler a ser usado em combinação com transformer para desruidar os latentes da imagem codificada.
  • vae (AutoencoderKL) — Modelo de Variational Auto-Encoder (VAE) para codificar e decodificar imagens para e a partir de representações latentes.
  • text_encoder (Qwen3Model) — Codificador de texto da classe Qwen3Model.
  • tokenizer (Qwen2TokenizerFast) — Tokenizer da classe Qwen2TokenizerFast.

O pipeline Ovis-Image para geração de imagens a partir de texto.

Referência: 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

Parâmetros

  • prompt (str ou list[str], opcional) — O prompt ou os prompts para orientar a geração da imagem. Se não for definido, é necessário passar prompt_embeds em vez disso.
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passar negative_prompt_embeds em vez disso. Ignorado quando não se usa orientação (ou seja, ignorado se guidance_scale não for maior que 1).
  • guidance_scale (float, opcional, padrão 1.0) — A orientação livre de classificador verdadeira (escala de orientação) é ativada quando guidance_scale > 1 e negative_prompt é fornecido.
  • height (int, opcional, padrão é self.unet.config.sample_size * self.vae_scale_factor) — A altura em pixels da imagem gerada. Isso é definido como 1024 por padrão para os melhores resultados.
  • width (int, opcional, padrão é self.unet.config.sample_size * self.vae_scale_factor) — A largura em pixels da imagem gerada. O padrão é 1024 para os melhores resultados.
  • num_inference_steps (int, opcional, padrão 50) — O número de etapas de desruidamento. Mais etapas de desruidamento geralmente resultam em uma imagem de maior qualidade, à custa de uma inferência mais lenta.
  • sigmas (list[float], opcional) — Sigmas personalizados para usar no processo de desruidamento com agendadores que suportam um argumento sigmas em seu método set_timesteps. Se não definido, o comportamento padrão quando num_inference_steps é passado será usado.
  • num_images_per_prompt (int, opcional, padrão 1) — O número de imagens a serem geradas por prompt.
  • generator (torch.Generator ou list[torch.Generator], opcional) — Um ou uma lista de geradores do torch para tornar a geração determinística.
  • latents (torch.FloatTensor, opcional) — Latentes ruidosos pré-gerados, amostrados de uma distribuição gaussiana, a serem usados como entradas para a geração de imagens. Pode ser usado para ajustar a mesma geração com diferentes prompts. Se não for fornecido, um tensor de latentes será gerado por amostragem usando o generator aleatório fornecido.
  • prompt_embeds (torch.FloatTensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, opcional) — Incorporações de texto negativas pré-geradas. Pode ser usado para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não for fornecido, negative_prompt_embeds será gerado a partir do argumento de entrada negative_prompt.
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre PIL: PIL.Image.Image ou np.array.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ~pipelines.flux.FluxPipelineOutput em vez de uma tupla simples.
  • joint_attention_kwargs (dict, opcional) — Um dicionário de kwargs que, se especificado, é passado ao AttentionProcessor conforme definido em self.processor em diffusers.models.attention_processor.
  • callback_on_step_end (Callable, opcional) — Uma função que é chamada no final de cada etapa de desruidamento durante a inferência. A função é chamada com os seguintes argumentos: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs incluirá uma lista de todos os tensores, conforme especificado por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (List, opcional) — A lista de entradas de tensor para a função callback_on_step_end. Os tensores especificados na lista serão passados como argumento callback_kwargs. Você só poderá incluir variáveis listadas no atributo ._callback_tensor_inputs da sua classe de pipeline.
  • max_sequence_length (int padrão 512) — Comprimento máximo da sequência a ser usado com o prompt.

Retorna

OvisImagePipelineOutput ou tuple

OvisImagePipelineOutput se return_dict for True, caso contrário, uma tuple. Ao retornar uma tupla, o primeiro elemento é uma lista com as imagens geradas.

Função invocada ao chamar o pipeline para geração.

Exemplos:

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

Parâmetros

  • prompt (str ou list[str], opcional) — prompt a ser codificado
  • negative_prompt (str ou list[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Usado apenas quando do_classifier_free_guidance é True. Se não definido, uma string vazia é usada.
  • do_classifier_free_guidance (bool, opcional, padrão True) — Se também deve codificar o negative_prompt para o classifier-free guidance.
  • device — (torch.device): dispositivo torch
  • num_images_per_prompt (int) — número de imagens que devem ser geradas por prompt
  • max_sequence_length (int, opcional, padrão 256) — Comprimento máximo da sequência a ser usado para o prompt.
  • prompt_embeds (torch.FloatTensor, opcional) — Incorporações de texto pré-geradas. Podem ser usadas para ajustar facilmente as entradas de texto, por exemplo, ponderação de prompts. Se não forem fornecidas, as incorporações de texto serão geradas a partir do argumento de entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, opcional) — Incorporações de texto negativo pré-geradas. Se não forem fornecidas, elas são geradas a partir de negative_prompt.

OvisImagePipelineOutput

classe diffusers.pipelines.ovis_image.OvisImagePipelineOutput

< >

( images: list )

Parâmetros

  • images (list[PIL.Image.Image] ou np.ndarray) — Lista de imagens PIL desruidas de comprimento batch_size ou array numpy de forma (batch_size, height, width, num_channels). As imagens PIL ou o array numpy apresentam as imagens desruidas do pipeline de difusão.

Classe de saída para os pipelines do Ovis-Image.

Update on GitHub