Buckets:

mishig's picture
|
download
raw
25.8 kB

Bria Fibo 2.0

Fibo 2.0 là một transformer flow-matching có 8,1 tỷ tham số từ Bria, tạo ra hình ảnh từ các chú thích JSON có cấu trúc. Bộ mã hóa văn bản của nó là Qwen3-VL: một Perceiver nén các trạng thái ẩn của Qwen3-VL thành các gist token, sau đó chúng được ghép vào cùng một luồng với các image token, và năm khối trong transformer cũng đọc trực tiếp Qwen3-VL thông qua gated cross-attention.

Có hai checkpoint:

  • briaai/Fibo-2.0-dev, mô hình đầy đủ cho text-to-image và chỉnh sửa, với classifier-free guidance. Các giá trị mặc định của pipeline, 30 bước với guidance 5, là dành cho checkpoint này.
  • briaai/Fibo-2.0-edit-turbo, được chưng cất để chỉnh sửa trong 4 bước mà không cần hướng dẫn (guidance_scale=1.0).

Khi bật hướng dẫn, prompt âm mặc định là chú thích rỗng mà mô hình được huấn luyện với: chú thích có cấu trúc với mọi giá trị để trống.

Tạo

Fibo 2.0 được huấn luyện trên các chú thích JSON có cấu trúc và sẽ không hoạt động tốt với văn bản tự do. Truyền chú thích dưới dạng chuỗi JSON:

import json

import torch
from diffusers import BriaFibo2Pipeline

pipe = BriaFibo2Pipeline.from_pretrained("briaai/Fibo-2.0-dev", dtype=torch.bfloat16).to("cuda")

caption = {
    "short_description": "A red vintage bicycle leaning against a whitewashed wall on a narrow Mediterranean street.",
    "objects": [
        {
            "description": "A red vintage bicycle with a wicker basket of lemons on its handlebars.",
            "location": "center",
            "relative_size": "large within frame",
        }
    ],
    "background_setting": "A whitewashed wall with a blue wooden door and potted red geraniums.",
    "lighting": {"conditions": "bright morning sun", "direction": "from the right", "shadows": "long and crisp"},
    "aesthetics": {"composition": "centered", "color_scheme": "red, white and blue", "mood_atmosphere": "calm"},
    "photographic_characteristics": {"depth_of_field": "deep", "focus": "sharp on the bicycle", "camera_angle": "eye level"},
    "style_medium": "photograph",
    "context": "A travel photograph.",
    "artistic_style": "realistic",
}
image = pipe(json.dumps(caption)).images[0]
image.save("bicycle.png")

Pipeline làm sạch caption theo cách mà quá trình huấn luyện đã thực hiện: nó loại bỏ các giá trị rỗng cùng các trường aesthetic_score và preference_score (không có trong bất kỳ caption huấn luyện nào) và chuỗi hóa caption một cách gọn gàng. Hai dạng ngắn cũng đã được huấn luyện và được giữ nguyên như sau:

# The caption's short description alone, as plain text
image = pipe("A red vintage bicycle leaning against a whitewashed wall on a narrow Mediterranean street.").images[0]

# Exactly a "short_description" and a "text_render" list. The list is kept even when it's empty, to say the image
# has no text
caption = {"short_description": "A bakery storefront at dawn with a painted sign.", "text_render": [{"text": "FRESH BREAD"}]}
image = pipe(json.dumps(caption)).images[0]

Để chuyển đổi văn bản tự do thành chú thích có cấu trúc, hãy xem các mô hình prompt-to-JSON trên trang Bria Fibo.

Chỉnh sửa

Cùng một pipeline chỉnh sửa hình ảnh. Truyền hình ảnh dưới dạng image và chỉ thị chỉnh sửa dưới dạng prompt:

import torch
from diffusers import BriaFibo2Pipeline
from diffusers.utils import load_image

pipe = BriaFibo2Pipeline.from_pretrained("briaai/Fibo-2.0-dev", dtype=torch.bfloat16).to("cuda")
image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
)
edited = pipe("Make the background a snowy forest", image=image).images[0]
edited.save("pikachu_snow.png")

Để chỉnh sửa nhanh hơn, hãy tải checkpoint turbo và tắt guidance:

import torch
from diffusers import BriaFibo2Pipeline
from diffusers.utils import load_image

pipe = BriaFibo2Pipeline.from_pretrained("briaai/Fibo-2.0-edit-turbo", dtype=torch.bfloat16).to("cuda")
image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
)
edited = pipe("Make the background a snowy forest", image=image, num_inference_steps=4, guidance_scale=1.0).images[0]
edited.save("pikachu_snow.png")

Các ví dụ dưới đây tiếp tục từ một trong hai, với pipe và image. Với checkpoint turbo, hãy truyền num_inference_steps=4 và guidance_scale=1.0 cho mỗi lần gọi.

Lời nhắc chỉnh sửa

Prompt cũng có thể là một đối tượng JSON với khóa "edit_instruction" và chú thích của kết quả, theo bất kỳ dạng nào mà Fibo 2.0 được huấn luyện để chỉnh sửa. Pipeline sẽ chuyển đổi nó thành prompt mà Fibo 2.0 được huấn luyện để chỉnh sửa.

Một chú thích đầy đủ: các khóa của chú thích bên cạnh "edit_instruction", như các mô hình prompt-to-JSON của Bria viết cho các chỉnh sửa. Pipeline loại bỏ các giá trị rỗng và các trường aesthetic_score và preference_score, vốn đã bị loại bỏ khỏi mọi chú thích trong quá trình huấn luyện.

import json

prompt = {
    "short_description": "A crocheted yellow Pikachu doll sitting in a snowy pine forest.",
    "objects": [{"description": "A crocheted yellow Pikachu doll with red cheeks.", "location": "center"}],
    "background_setting": "A snowy pine forest with falling snow.",
    "edit_instruction": "Make the background a snowy forest",
}
edited = pipe(json.dumps(prompt), image=image).images[0]

Mô tả ngắn: một chuỗi trong khóa "structured_caption".

prompt = {
    "structured_caption": "A crocheted yellow Pikachu doll sitting in a snowy pine forest.",
    "edit_instruction": "Make the background a snowy forest",
}
edited = pipe(json.dumps(prompt), image=image).images[0]

Mô tả ngắn và văn bản của nó: chính xác là một "short_description" và một danh sách "text_render". Danh sách được giữ lại ngay cả khi trống, điều này cho Fibo 2.0 biết rằng kết quả không có văn bản. Một khóa "structured_caption" có thể chứa dạng này, hoặc một chú thích đầy đủ.

prompt = {
    "short_description": "A crocheted yellow Pikachu doll holding a small wooden sign.",
    "text_render": [{"text": "HELLO"}],
    "edit_instruction": "Give the doll a small wooden sign that reads HELLO",
}
edited = pipe(json.dumps(prompt), image=image).images[0]

Một số hình ảnh

Có thể chỉnh sửa cùng lúc tối đa 5 hình ảnh, ví dụ như đặt một đối tượng từ hình này sang hình khác. Lệnh tham chiếu đến chúng theo thứ tự là <image_1>, <image_2> và tiếp tục như vậy.

cat = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")
edited = pipe("Put the cat from <image_2> next to the doll in <image_1>", image=[image, cat]).images[0]

Kích thước đầu ra

Trừ khi height và width được cung cấp, kết quả sẽ có kích thước mà Fibo 2.0 được huấn luyện cho tỷ lệ khung hình của hình ảnh đầu tiên, khoảng một megapixel. Một hình ảnh đơn lẻ sẽ được cắt xén theo kích thước của kết quả. Nhiều hình ảnh sẽ mỗi hình được cắt xén theo kích thước đã huấn luyện cho tỷ lệ khung hình riêng của chúng.

edited = pipe("Make the background a snowy forest", image=image, width=1424, height=800).images[0]

Chỉnh sửa có mặt nạ

mask đánh dấu vùng của một hình ảnh đơn lẻ cần tạo lại, màu trắng trên nền đen, có kích thước bằng hình ảnh. Fibo 2.0 được huấn luyện trên các chỉnh sửa mà trong đó hình ảnh có vùng đó bị làm mờ, và pipeline cũng làm mờ nó theo cách tương tự trước khi hình ảnh được mã hóa: màu xám phẳng (128, 128, 128), thông qua mask được nhị phân hóa tại ngưỡng 128.

from PIL import Image, ImageDraw

mask = Image.new("L", image.size, 0)
ImageDraw.Draw(mask).rectangle((image.width // 2, 0, image.width, image.height // 2), fill=255)
edited = pipe("Add a red balloon floating in the sky", image=image, mask=mask).images[0]

Văn bản trong hình ảnh

Khi caption yêu cầu văn bản, trong các mục text_render của nó, Fibo 2.0 có xu hướng hiển thị tốt hơn nếu Qwen3-VL cũng nhìn thấy từng đoạn văn bản được vẽ riêng lẻ. Pipeline vẽ các hình ảnh này theo mặc định, giống như trong quá trình huấn luyện, và chúng có thể được tắt. Đối với một caption có chứa văn bản, chẳng hạn như của tiệm bánh ở trên:

prompt = json.dumps(caption)
image = pipe(prompt, render_text_images=False).images[0]

Quá trình huấn luyện đã cho Fibo 2.0 xem các hình ảnh này cho một số chú thích có chữ và không cho các chú thích khác, vì vậy nó hoạt động trong cả hai trường hợp.

  • Mỗi mục text_render có text sẽ nhận được một hình ảnh: văn bản trên một dòng, màu đen trên nền trắng, dùng phông chữ tích hợp sẵn của Pillow với kích thước 20. Văn bản dài hơn 256 ký tự sẽ được tách thành các dòng 256 ký tự.
  • Các ký tự mà font thiếu sẽ được vẽ bằng font đầu tiên trong fonts có chứa chúng. Quá trình huấn luyện đã sử dụng Aileron, sau đó là DejaVu Sans, nằm trong thư mục fonts của briaai/Fibo-2.0-dev. Nếu không có fonts, các ký tự như vậy sẽ được vẽ theo cách font tích hợp của Pillow vẽ chúng, và pipeline sẽ đưa ra cảnh báo.
  • Pipeline đánh dấu mỗi mục bằng trường image_tokens cho hình ảnh của nó, và Qwen3-VL nhìn thấy các hình ảnh sau bất kỳ hình ảnh nào cần chỉnh sửa.
  • Một lần sinh thực hiện các bước đầu tiên, trong khi mức nhiễu cao hơn pipe.text_images_max_noise_level (0.9), trên chú thích không có hình ảnh. Một lần chỉnh sửa sử dụng chúng ở mỗi bước.
  • Một chú thích không có văn bản sẽ không nhận được hình ảnh nào, cũng như một mô tả ngắn, giống như trong quá trình huấn luyện.

Để vẽ chúng bằng các font đã dùng trong quá trình huấn luyện:

from huggingface_hub import hf_hub_download

fonts = [
    hf_hub_download("briaai/Fibo-2.0-dev", name, subfolder="fonts")
    for name in ("Aileron-Regular.otf", "DejaVuSans.ttf")
]
image = pipe(prompt, fonts=fonts).images[0]

Để tự vẽ các hình ảnh, hãy truyền chúng dưới dạng text_images, mỗi hình tương ứng với một mục text_render có chứa text, theo thứ tự, cho một prompt duy nhất. Chúng có độ ưu tiên cao hơn so với hình ảnh do pipeline tự tạo. Các hình ảnh được vẽ khác với quá trình huấn luyện sẽ nằm ngoài phân phối.

Các backend chú ý

Transformer chạy trên bất kỳ backend attention nào của diffusers, ví dụ như FlashAttention-3 trên các GPU Hopper như H100:

pipe.transformer.set_attention_backend("_flash_3_varlen_hub")

_flash_3_hub cũng hoạt động với một prompt đơn, nhưng nó không nhận mask, vì vậy không thể chạy một batch gồm các prompt có độ dài khác nhau (xem bên dưới).

Batching

Có thể tạo nhiều prompt trong một lần gọi. Các prompt có độ dài khác nhau sẽ được đệm (padding), và phần đệm này sẽ bị che (mask) khỏi mọi lớp attention, do đó một batch như vậy cần một backend attention có hỗ trợ mask: backend mặc định, hoặc một backend varlen như flash_varlen. Ở float32, một batch sẽ tái tạo chính xác các hình ảnh từ các lần gọi riêng lẻ; ở bfloat16, các kernel attention khác nhau giữa đầu vào có đệm và không có đệm, nên các hình ảnh trong batch có thể khác với các lần gọi đơn lẻ ở những chi tiết nhỏ.

BriaFibo2Pipeline[[diffusers.BriaFibo2Pipeline]]

diffusers.BriaFibo2Pipeline[[diffusers.BriaFibo2Pipeline]]

diffusers.BriaFibo2Pipeline(transformer: BriaFibo2Transformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLFlux2, text_encoder: Qwen3VLForConditionalGeneration, processor: Qwen3VLProcessor)

Nguồn

Tham số:

transformer (BriaFibo2Transformer2DModel) : Transformer khử nhiễu các latents của ảnh.

scheduler (FlowMatchEulerDiscreteScheduler) : Trình lập lịch được sử dụng cùng với transformer để khử nhiễu các biến tiềm ẩn.

vae (AutoencoderKLFlux2) : Auto-encoder biến phân ánh xạ hình ảnh sang latents và ngược lại.

text_encoder (Qwen3VLForConditionalGeneration) : Qwen3-VL. Trạng thái ẩn của nó điều kiện hóa transformer.

processor (Qwen3VLProcessor) : Chuyển đổi prompt và các hình ảnh cần chỉnh sửa thành đầu vào cho Qwen3-VL.

Pipeline để tạo ảnh từ văn bản và chỉnh sửa ảnh với Fibo 2.0.

call[[diffusers.BriaFibo2Pipeline.call]]

__call__(prompt: str | list[str] | None = None, image: PIL.Image.Image | list[PIL.Image.Image] | None = None, mask: PIL.Image.Image | None = None, text_images: list[PIL.Image.Image] | None = None, render_text_images: bool = True, fonts: list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 30, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str = 'pil', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])

Nguồn

Tham số:

prompt (str hoặc list[str], tùy chọn) : Prompt để hướng dẫn tạo ảnh, thường là một prompt JSON có cấu trúc, được làm sạch theo cách các chú thích huấn luyện của Fibo 2.0 được làm sạch: các giá trị rỗng và các trường aesthetic_score và preference_score sẽ bị loại bỏ, và nó được chuỗi hóa một cách gọn gàng. Với image, đây là hướng dẫn chỉnh sửa, hoặc một đối tượng JSON có khóa "edit_instruction" và chú thích của kết quả: các khóa khác của nó, hoặc một khóa "structured_caption" chứa chú thích hoặc một mô tả ngắn.

image (PIL.Image.Image hoặc list[PIL.Image.Image], tùy chọn) : Hình ảnh cần chỉnh sửa, hoặc tối đa 5 hình ảnh để chỉnh sửa cùng nhau, trong đó hướng dẫn có thể tham chiếu đến chúng là <image_1>, <image_2> và tương tự. Nếu không có image, pipeline sẽ tạo hình ảnh từ prompt.

mask (PIL.Image.Image, optional) : Vùng của image cần tái tạo, màu trắng trên nền đen, khi chỉnh sửa một hình ảnh đơn lẻ. Giống như trong quá trình huấn luyện, vùng này sẽ được làm mờ trước khi hình ảnh được mã hóa, thông qua mask được nhị phân hóa tại ngưỡng 128.

text_images (list[PIL.Image.Image], tùy chọn) : Ảnh của văn bản mà chú thích yêu cầu, một ảnh cho mỗi mục text_render có text, theo thứ tự: văn bản của từng mục được vẽ riêng, giống như cách render_text_images vẽ chúng. Qwen3-VL nhìn thấy chúng cùng với prompt, mỗi ảnh được đánh dấu trong mục chú thích tương ứng, điều này giúp Fibo 2.0 render văn bản. Cần prompt dưới dạng một chú thích JSON duy nhất và có ưu tiên cao hơn render_text_images. Một quá trình sinh sẽ chạy các bước đầu tiên, trong khi mức nhiễu cao hơn text_images_max_noise_level (0.9), mà không có chúng; một chỉnh sửa sẽ sử dụng chúng ở mọi bước.

render_text_images (bool, tuỳ chọn, mặc định là True) : Có nên vẽ text_images của mỗi caption hay không, theo cách mà quá trình huấn luyện của Fibo 2.0 đã thực hiện: mỗi dòng văn bản nằm trên một dòng riêng, màu đen trên nền trắng, sử dụng phông chữ tích hợp sẵn của Pillow với kích thước 20, và các ký tự mà phông chữ đó không có sẽ được lấy từ phông chữ đầu tiên trong fonts có chứa chúng. Một caption không có văn bản, và một prompt không có caption dạng JSON, chẳng hạn như một mô tả ngắn, sẽ không nhận được hình ảnh nào, giống như trong quá trình huấn luyện.

fonts (list[str], tùy chọn) : Đường dẫn của các font để vẽ các ký tự của text_images mà font tích hợp sẵn của Pillow không có, theo thứ tự. Quá trình huấn luyện đã vẽ chúng bằng Aileron, sau đó là DejaVu Sans, nằm trong thư mục fonts của briaai/Fibo-2.0-dev. Nếu không có chúng, các ký tự như vậy sẽ được vẽ theo cách mà font tích hợp sẵn của Pillow thực hiện.

height (int, optional) : Chiều cao của hình ảnh được tạo ra, tính bằng pixel. Phải chia hết cho 16. Mặc định là 1024, hoặc khi chỉnh sửa, là kích thước mà Fibo 2.0 được huấn luyện cho tỷ lệ khung hình của hình ảnh đầu tiên, khoảng một megapixel.

width (int, optional) : Độ rộng của hình ảnh được tạo ra, tính bằng pixel. Phải chia hết cho 16. Mặc định giống height.

num_inference_steps (int, tuỳ chọn, mặc định là 30) : Số bước khử nhiễu.

guidance_scale (float, optional, mặc định là 5.0) : Thang độ hướng dẫn không có điều kiện (classifier-free guidance). Các giá trị lớn hơn 1 sẽ chạy prompt âm như một lượt thứ hai ở mỗi bước, và 1.0 sẽ tắt hướng dẫn.

negative_prompt (str hoặc list[str], tùy chọn) : Prompt để hướng dẫn tránh xa khi guidance đang bật. Mặc định là caption null mà Fibo 2.0 được huấn luyện với: caption có cấu trúc với mọi giá trị đều trống.

num_images_per_prompt (int, tuỳ chọn, mặc định là 1) : Số lượng hình ảnh cần tạo cho mỗi prompt.

generator (torch.Generator hoặc list[torch.Generator], tùy chọn) : Bộ tạo (Generator) được dùng để lấy nhiễu ban đầu, cho phép tạo ra kết quả xác định.

latents (torch.Tensor, tùy chọn) : Nhiễu khởi đầu đã tạo trước có hình dạng (batch_size, 32, height // 8, width // 8).

prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã tính trước từ encode_prompt, được sử dụng thay cho prompt.

prompt_embeds_mask (torch.Tensor, tùy chọn) : Mặt nạ mà encode_prompt trả về cùng với prompt_embeds. Cần thiết khi chúng được đệm (padded).

negative_prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã tính trước của prompt tiêu cực, được sử dụng thay cho negative_prompt.

negative_prompt_embeds_mask (torch.Tensor, tùy chọn) : Mặt nạ mà encode_prompt trả về cùng với negative_prompt_embeds. Cần thiết khi chúng được đệm (padded).

output_type (str, tùy chọn, mặc định là "pil") : Định dạng đầu ra: "pil", "np", "pt" hoặc "latent".

return_dict (bool, tùy chọn, mặc định là True) : Có nên trả về một BriaFibo2PipelineOutput thay vì một tuple thông thường hay không.

callback_on_step_end (Callable, tùy chọn) : Một hàm được gọi vào cuối mỗi bước khử nhiễu dưới dạng callback_on_step_end(self, step, timestep, callback_kwargs).

callback_on_step_end_tensor_inputs (list[str], tùy chọn, mặc định là ["latents"]) : Các tensor được truyền vào callback_on_step_end trong callback_kwargs.

Trả về: BriaFibo2PipelineOutput hoặc tuple

các hình ảnh được tạo ra.

Hàm được gọi khi gọi pipeline cho việc sinh.

Ví dụ:

>>> import json

>>> import torch
>>> from diffusers import BriaFibo2Pipeline
>>> from diffusers.utils import load_image

>>> # Fibo 2.0 reads structured JSON captions, serialized compactly the way it was trained
>>> caption = {
...     "short_description": "A red bicycle leaning against a white brick wall on a sunny morning.",
...     "objects": [{"description": "a red city bicycle with a wicker basket", "location": "center"}],
...     "background_setting": "a white brick wall with a green door",
...     "lighting": {"conditions": "bright morning sun", "direction": "from the right"},
...     "style_medium": "photograph",
... }
>>> prompt = json.dumps(caption, separators=(",", ":"), ensure_ascii=False)

>>> # 30 steps with guidance 5, the defaults
>>> pipe = BriaFibo2Pipeline.from_pretrained("briaai/Fibo-2.0-dev", dtype=torch.bfloat16).to("cuda")
>>> image = pipe(prompt).images[0]
>>> image.save("fibo2.png")

>>> # editing: pass the image, and the instruction as the prompt
>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... )
>>> edited = pipe("Make the background a snowy forest", image=image).images[0]
>>> edited.save("fibo2_edit.png")

encode_prompt[[diffusers.BriaFibo2Pipeline.encode_prompt]]

encode_prompt(prompt: str | list[str], image: list[PIL.Image.Image] | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, text_images: list[PIL.Image.Image] | list[list[PIL.Image.Image]] | None = None)

Nguồn

Tham số:

prompt (str hoặc list[str]) : Prompt hoặc các prompt cần mã hóa. Khi dùng image, mỗi prompt là một chỉ thị chỉnh sửa, hoặc một đối tượng JSON có khóa "edit_instruction" và chú thích của kết quả: các khóa khác của nó, hoặc khóa "structured_caption" chứa chú thích hoặc mô tả ngắn. Prompt sinh được mã hóa theo đúng cách đã cho: __call__ trước tiên đặt một chú thích JSON theo dạng mà Fibo 2.0 được huấn luyện.

image (list[PIL.Image.Image], tùy chọn) : Các hình ảnh cần chỉnh sửa, theo cách Qwen3-VL nhìn thấy chúng. Mỗi prompt sẽ chỉnh sửa tất cả các hình ảnh đó.

device (torch.device, tùy chọn) : Thiết bị để đặt các embeddings lên.

num_images_per_prompt (int, mặc định là 1) : Số lượng hình ảnh cần tạo cho mỗi prompt.

prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã tính trước có hình dạng (batch_size, 6, text_len, 7680), được sử dụng thay cho prompt.

prompt_embeds_mask (torch.Tensor, tùy chọn) : Mặt nạ Bool của các token thực trong prompt_embeds, có hình dạng (batch_size, text_len).

text_images (list[PIL.Image.Image] hoặc list[list[PIL.Image.Image]], tùy chọn) : Ảnh của văn bản chú thích, một ảnh cho mỗi mục text_render có text, theo thứ tự, hoặc một danh sách các ảnh cho mỗi prompt. Mỗi mục nhận dấu hiệu thị giác của ảnh tương ứng, và Qwen3-VL nhìn thấy các ảnh này sau bất kỳ ảnh nào cần chỉnh sửa.

Trả về:

Các vector nhúng văn bản, cùng với mặt nạ của chúng, hoặc None khi không có prompt nào được đệm.

Xet Storage Details

Size:
25.8 kB
·
Xet hash:
09c10646739cba682b86e44de34c50a013e93bf93ab3e8f2fea13be86d79fb5b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.