Diffusers documentation
Ovis-Image
Ovis-Image

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:
| Model | dtype recomendado |
|---|---|
AIDC-AI/Ovis-Image-7B | torch.bfloat16 |
Consulte esta coleção para mais informações.
OvisImagePipeline
classe diffusers.OvisImagePipeline
< source >( 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
transformerpara 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__
< 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
Parâmetros
- prompt (
stroulist[str], opcional) — O prompt ou os prompts para orientar a geração da imagem. Se não for definido, é necessário passarprompt_embedsem vez disso. - negative_prompt (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Se não for definido, é necessário passarnegative_prompt_embedsem vez disso. Ignorado quando não se usa orientação (ou seja, ignorado seguidance_scalenão for maior que1). - guidance_scale (
float, opcional, padrão 1.0) — A orientação livre de classificador verdadeira (escala de orientação) é ativada quandoguidance_scale> 1 enegative_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 argumentosigmasem seu métodoset_timesteps. Se não definido, o comportamento padrão quandonum_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.Generatoroulist[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 ogeneratoraleató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 entradaprompt. - 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 entradanegative_prompt. - output_type (
str, opcional, padrão"pil") — O formato de saída da imagem gerada. Escolha entre PIL:PIL.Image.Imageounp.array. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um~pipelines.flux.FluxPipelineOutputem vez de uma tupla simples. - joint_attention_kwargs (
dict, opcional) — Um dicionário de kwargs que, se especificado, é passado aoAttentionProcessorconforme definido emself.processorem 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_kwargsincluirá uma lista de todos os tensores, conforme especificado porcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
List, opcional) — A lista de entradas de tensor para a funçãocallback_on_step_end. Os tensores especificados na lista serão passados como argumentocallback_kwargs. Você só poderá incluir variáveis listadas no atributo._callback_tensor_inputsda sua classe de pipeline. - max_sequence_length (
intpadrão 512) — Comprimento máximo da sequência a ser usado com oprompt.
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
< 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 )
Parâmetros
- prompt (
stroulist[str], opcional) — prompt a ser codificado - negative_prompt (
stroulist[str], opcional) — O prompt ou os prompts que não devem orientar a geração da imagem. Usado apenas quandodo_classifier_free_guidanceéTrue. Se não definido, uma string vazia é usada. - do_classifier_free_guidance (
bool, opcional, padrãoTrue) — Se também deve codificar onegative_promptpara 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 oprompt. - 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 entradaprompt. - negative_prompt_embeds (
torch.FloatTensor, opcional) — Incorporações de texto negativo pré-geradas. Se não forem fornecidas, elas são geradas a partir denegative_prompt.
OvisImagePipelineOutput
classe diffusers.pipelines.ovis_image.OvisImagePipelineOutput
< source >( images: list )
Classe de saída para os pipelines do Ovis-Image.