Diffusers documentation

VisualCloze

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

VisualCloze

VisualCloze: A Universal Image Generation Framework via Visual In-Context Learning adalah kerangka kerja generasi gambar universal yang inovatif dan berbasis pembelajaran dalam konteks, yang menawarkan kemampuan utama:

  1. Dukungan untuk berbagai tugas dalam domain
  2. Generalisasi ke tugas yang belum pernah dilihat melalui pembelajaran dalam konteks
  3. Satukan beberapa tugas menjadi satu langkah dan hasilkan gambar target serta hasil perantara
  4. Mendukung rekayasa balik kondisi dari gambar target

Ikhtisar

Abstrak dari makalah tersebut adalah:

Progres terbaru dalam model difusi secara signifikan mendorong berbagai tugas generasi gambar. Namun, pendekatan arus utama saat ini masih berfokus pada pembangunan model yang spesifik untuk tugas tertentu, yang memiliki efisiensi terbatas saat mendukung berbagai kebutuhan yang berbeda. Meskipun model universal berupaya mengatasi keterbatasan ini, mereka menghadapi tantangan kritis, termasuk instruksi tugas yang dapat digeneralisasi, distribusi tugas yang tepat, dan desain arsitektur yang terpadu. Untuk mengatasi tantangan ini, kami mengusulkan VisualCloze, sebuah kerangka kerja generasi gambar universal, yang mendukung berbagai tugas dalam domain, generalisasi ke tugas yang belum pernah dilihat, unifikasi beberapa tugas yang belum pernah dilihat, dan generasi terbalik. Berbeda dengan metode yang ada yang mengandalkan instruksi tugas berbasis bahasa, yang menyebabkan ambiguitas tugas dan generalisasi yang lemah, kami mengintegrasikan pembelajaran in-konteks visual, yang memungkinkan model untuk mengidentifikasi tugas dari demonstrasi visual. Sementara itu, sparsity inheren dari distribusi tugas visual menghambat pembelajaran pengetahuan yang dapat ditransfer antar tugas. Untuk tujuan ini, kami memperkenalkan Graph200K, sebuah dataset berstruktur graf yang menetapkan berbagai tugas yang saling terkait, meningkatkan kepadatan tugas dan pengetahuan yang dapat ditransfer. Selain itu, kami menemukan bahwa formulasi generasi gambar terpadu kami berbagi tujuan yang konsisten dengan pengisian gambar, yang memungkinkan kami memanfaatkan prior generatif yang kuat dari model pengisian yang telah dilatih sebelumnya tanpa memodifikasi arsitekturnya. Kode, dataset, dan model tersedia di https://visualcloze.github.io.

Inferensi

Memuat model

VisualCloze adalah pipeline kaskade dua tahap, yang berisi VisualClozeGenerationPipeline dan VisualClozeUpsamplingPipeline.

  • Di VisualClozeGenerationPipeline, setiap gambar di-downsample sebelum gambar digabungkan ke dalam tata letak grid, menghindari resolusi yang terlalu tinggi. VisualCloze merilis dua model yang cocok untuk diffusers, yaitu VisualClozePipeline-384 dan VisualClozePipeline-512, yang masing-masing menurunkan resolusi gambar menjadi 384 dan 512.
  • VisualClozeUpsamplingPipeline menggunakan SDEdit untuk memungkinkan sintesis gambar resolusi tinggi.

VisualClozePipeline mengintegrasikan kedua tahap untuk mendukung pengambilan sampel end-to-end yang praktis, sekaligus memungkinkan pengguna untuk memanfaatkan setiap pipeline secara independen sesuai kebutuhan.

Spesifikasi Input

Prompt Tugas dan Konten

  • Prompt tugas: Wajib untuk menjelaskan maksud tugas generasi
  • Prompt konten: Deskripsi atau keterangan opsional untuk gambar target
  • Ketika prompt konten tidak diperlukan, lewati None
  • Untuk inferensi batch, lewati List[str|None]

Format Input Gambar

  • Format: List[List[Image|None]]
  • Struktur:
    • Semua baris kecuali baris terakhir mewakili contoh dalam konteks
    • Baris terakhir mewakili query saat ini (target image diset ke None)
  • Untuk inferensi batch, lewati List[List[List[Image|None]]]

Kontrol Resolusi

  • Perilaku bawaan:
    • Generasi awal pada tahap pertama: area pipe.resolution2{pipe.resolution}^2
    • Upsampling pada tahap kedua: faktor 3x
  • Resolusi kustom: Sesuaikan menggunakan parameter upsampling_height dan upsampling_width

Contoh

Untuk contoh komprehensif yang mencakup berbagai tugas, silakan merujuk ke Demo Online dan Repositori GitHub. Berikut adalah contoh sederhana untuk tiga kasus: konversi mask-to-image, deteksi tepi, dan generasi yang dipandu subjek.

Contoh untuk mask2image

import torch
from diffusers import VisualClozePipeline
from diffusers.utils import load_image

pipe = VisualClozePipeline.from_pretrained("VisualCloze/VisualClozePipeline-384", resolution=384, dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

# Load in-context images (make sure the paths are correct and accessible)
image_paths = [
    # in-context examples
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_mask.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_image.jpg'),
    ],
    # query with the target image
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_query_mask.jpg'),
        None, # No image needed for the target image
    ],
]

# Task and content prompt
task_prompt = "In each row, a logical task is demonstrated to achieve [IMAGE2] an aesthetically pleasing photograph based on [IMAGE1] sam 2-generated masks with rich color coding."
content_prompt = """Majestic photo of a golden eagle perched on a rocky outcrop in a mountainous landscape. 
The eagle is positioned in the right foreground, facing left, with its sharp beak and keen eyes prominently visible. 
Its plumage is a mix of dark brown and golden hues, with intricate feather details. 
The background features a soft-focus view of snow-capped mountains under a cloudy sky, creating a serene and grandiose atmosphere. 
The foreground includes rugged rocks and patches of green moss. Photorealistic, medium depth of field, 
soft natural lighting, cool color palette, high contrast, sharp focus on the eagle, blurred background, 
tranquil, majestic, wildlife photography."""

# Run the pipeline
image_result = pipe(
    task_prompt=task_prompt,
    content_prompt=content_prompt,
    image=image_paths,
    upsampling_width=1344,
    upsampling_height=768,
    upsampling_strength=0.4,
    guidance_scale=30,
    num_inference_steps=30,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0)
).images[0][0]

# Save the resulting image
image_result.save("visualcloze.png")

Contoh untuk deteksi tepi

import torch
from diffusers import VisualClozePipeline
from diffusers.utils import load_image

pipe = VisualClozePipeline.from_pretrained("VisualCloze/VisualClozePipeline-384", resolution=384, dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

# Load in-context images (make sure the paths are correct and accessible)
image_paths = [
    # in-context examples
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_edgedetection_incontext-example-1_image.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_edgedetection_incontext-example-1_edge.jpg'),
    ],
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_edgedetection_incontext-example-2_image.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_edgedetection_incontext-example-2_edge.jpg'),
    ],
    # query with the target image
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_edgedetection_query_image.jpg'),
        None, # No image needed for the target image
    ],
]

# Task and content prompt
task_prompt = "Each row illustrates a pathway from [IMAGE1] a sharp and beautifully composed photograph to [IMAGE2] edge map with natural well-connected outlines using a clear logical task."
content_prompt = ""

# Run the pipeline
image_result = pipe(
    task_prompt=task_prompt,
    content_prompt=content_prompt,
    image=image_paths,
    upsampling_width=864,
    upsampling_height=1152,
    upsampling_strength=0.4,
    guidance_scale=30,
    num_inference_steps=30,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0)
).images[0][0]

# Save the resulting image
image_result.save("visualcloze.png")

Contoh untuk generasi yang didorong oleh subjek

import torch
from diffusers import VisualClozePipeline
from diffusers.utils import load_image

pipe = VisualClozePipeline.from_pretrained("VisualCloze/VisualClozePipeline-384", resolution=384, dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

# Load in-context images (make sure the paths are correct and accessible)
image_paths = [
    # in-context examples
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_incontext-example-1_reference.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_incontext-example-1_depth.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_incontext-example-1_image.jpg'),
    ],
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_incontext-example-2_reference.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_incontext-example-2_depth.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_incontext-example-2_image.jpg'),
    ],
    # query with the target image
    [
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_query_reference.jpg'),
        load_image('https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_subjectdriven_query_depth.jpg'),
        None, # No image needed for the target image
    ],
]

# Task and content prompt
task_prompt = """Each row describes a process that begins with [IMAGE1] an image containing the key object, 
[IMAGE2] depth map revealing gray-toned spatial layers and results in 
[IMAGE3] an image with artistic qualitya high-quality image with exceptional detail."""
content_prompt = """A vintage porcelain collector's item. Beneath a blossoming cherry tree in early spring, 
this treasure is photographed up close, with soft pink petals drifting through the air and vibrant blossoms framing the scene."""

# Run the pipeline
image_result = pipe(
    task_prompt=task_prompt,
    content_prompt=content_prompt,
    image=image_paths,
    upsampling_width=1024,
    upsampling_height=1024,
    upsampling_strength=0.2,
    guidance_scale=30,
    num_inference_steps=30,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0)
).images[0][0]

# Save the resulting image
image_result.save("visualcloze.png")

Gunakan setiap pipeline secara independen

import torch
from diffusers import VisualClozeGenerationPipeline, FluxFillPipeline as VisualClozeUpsamplingPipeline
from diffusers.utils import load_image
from PIL import Image

pipe = VisualClozeGenerationPipeline.from_pretrained(
    "VisualCloze/VisualClozePipeline-384", resolution=384, dtype=torch.bfloat16
)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image_paths = [
    # in-context examples
    [
        load_image(
            "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_mask.jpg"
        ),
        load_image(
            "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_image.jpg"
        ),
    ],
    # query with the target image
    [
        load_image(
            "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_query_mask.jpg"
        ),
        None,  # No image needed for the target image
    ],
]
task_prompt = "In each row, a logical task is demonstrated to achieve [IMAGE2] an aesthetically pleasing photograph based on [IMAGE1] sam 2-generated masks with rich color coding."
content_prompt = "Majestic photo of a golden eagle perched on a rocky outcrop in a mountainous landscape. The eagle is positioned in the right foreground, facing left, with its sharp beak and keen eyes prominently visible. Its plumage is a mix of dark brown and golden hues, with intricate feather details. The background features a soft-focus view of snow-capped mountains under a cloudy sky, creating a serene and grandiose atmosphere. The foreground includes rugged rocks and patches of green moss. Photorealistic, medium depth of field, soft natural lighting, cool color palette, high contrast, sharp focus on the eagle, blurred background, tranquil, majestic, wildlife photography."

# Stage 1: Generate initial image
image = pipe(
    task_prompt=task_prompt,
    content_prompt=content_prompt,
    image=image_paths,
    guidance_scale=30,
    num_inference_steps=30,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0),
).images[0][0]

# Stage 2 (optional): Upsample the generated image
pipe_upsample = VisualClozeUpsamplingPipeline.from_pipe(pipe)
pipe_upsample.to("cuda")

mask_image = Image.new("RGB", image.size, (255, 255, 255))

image = pipe_upsample(
    image=image,
    mask_image=mask_image,
    prompt=content_prompt,
    width=1344,
    height=768,
    strength=0.4,
    guidance_scale=30,
    num_inference_steps=30,
    max_sequence_length=512,
    generator=torch.Generator("cpu").manual_seed(0),
).images[0]

image.save("visualcloze.png")

VisualClozePipeline

kelas diffusers.VisualClozePipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelresolution: int = 384 )

Parameter

  • transformer (FluxTransformer2DModel) — Arsitektur Conditional Transformer (MMDiT) untuk menghilangkan noise pada latens gambar yang telah dikodekan.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Scheduler yang digunakan bersama transformer untuk 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 (CLIPTextModel) — CLIP, khususnya varian clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, khususnya varian google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — Tokenizer dari kelas CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Tokenizer kedua dari kelas T5TokenizerFast.
  • resolution (int, opsional, defaultnya 384) — Resolusi setiap gambar saat menggabungkan gambar dari query dan contoh in-context.

Pipeline VisualCloze untuk generasi gambar dengan konteks visual. Referensi: https://github.com/lzyhha/VisualCloze/tree/main. Pipeline ini dirancang untuk menghasilkan gambar berdasarkan contoh in-context visual.

__call__

< >

( task_prompt: str | list[str] = Nonecontent_prompt: str | list[str] = Noneimage: typing.Optional[torch.FloatTensor] = Noneupsampling_height: int | None = Noneupsampling_width: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float = 30.0num_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] = Nonepooled_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 = 512upsampling_strength: float = 1.0 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Parameter

  • task_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan niat tugas.
  • content_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan konten atau caption dari gambar target yang akan dihasilkan.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], atau list[np.ndarray]) — Image, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara [0, 1]. Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah (B, C, H, W) atau (C, H, W). Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah (B, H, W, C) atau (H, W, C).
  • upsampling_height (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan (yaitu gambar output) dalam piksel setelah upsampling via SDEdit. Secara default, gambar di-upsample dengan faktor tiga, dan resolusi dasar ditentukan oleh parameter resolusi dari pipeline. Ketika hanya salah satu dari upsampling_height atau upsampling_width yang dinyatakan, yang lainnya akan diatur secara otomatis berdasarkan rasio aspek.
  • upsampling_width (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar dalam piksel dari gambar yang dihasilkan (yaitu gambar keluaran) setelah upsampling via SDEdit. Secara default, gambar di-upsample dengan faktor tiga, dan resolusi dasar ditentukan oleh parameter resolusi dari pipeline. Jika hanya salah satu dari upsampling_height atau upsampling_width yang dinyatakan, yang lainnya akan diatur secara otomatis berdasarkan rasio aspek.
  • 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 argumen sigmas dalam metode set_timesteps mereka. Jika tidak didefinisikan, perilaku default saat num_inference_steps diteruskan akan digunakan.
  • guidance_scale (float, opsional, default 30.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. guidance_scale didefinisikan sebagai w dari persamaan 2. dari Imagen Paper. Skala panduan diaktifkan dengan mengatur guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan teks prompt, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.
  • num_images_per_prompt (int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt.
  • generator (torch.Generator atau list[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 menggunakan generator acak 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 input prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opsional) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. pembobotan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen input prompt.
  • output_type (str, opsional, defaultnya "pil") — Format output dari generate image. Pilih antara PIL: PIL.Image.Image atau np.array.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan ~pipelines.flux.FluxPipelineOutput alih-alih tuple biasa.
  • joint_attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam 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_kwargs akan berisi daftar semua tensor sesuai yang ditentukan oleh callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opsional) — Daftar input tensor untuk fungsi callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen callback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut ._callback_tensor_inputs dari kelas pipeline Anda.
  • max_sequence_length (int defaultnya 512) — Panjang maksimum urutan yang digunakan dengan prompt.
  • upsampling_strength (float, opsional, bernilai default 1.0) — Menunjukkan sejauh mana mengubah referensi image saat melakukan upsampling pada hasil. Nilai ini harus berada di antara 0 dan
    1. Gambar yang dihasilkan digunakan sebagai titik awal dan semakin tinggi nilai upsampling_strength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang awalnya ditambahkan. Ketika upsampling_strength bernilai 1, noise yang ditambahkan berada pada maksimum dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalam num_inference_steps. Nilai 0 melewati langkah upsampling dan menghasilkan hasil pada resolusi self.resolution.

Mengembalikan

~pipelines.flux.FluxPipelineOutput atau tuple

~pipelines.flux.FluxPipelineOutput jika return_dict adalah True, selain itu berupa tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline VisualCloze untuk generasi.

Contoh:

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

>>> image_paths = [
...     # in-context examples
...     [
...         load_image(
...             "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_mask.jpg"
...         ),
...         load_image(
...             "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_image.jpg"
...         ),
...     ],
...     # query with the target image
...     [
...         load_image(
...             "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_query_mask.jpg"
...         ),
...         None,  # No image needed for the target image
...     ],
... ]
>>> task_prompt = "In each row, a logical task is demonstrated to achieve [IMAGE2] an aesthetically pleasing photograph based on [IMAGE1] sam 2-generated masks with rich color coding."
>>> content_prompt = "Majestic photo of a golden eagle perched on a rocky outcrop in a mountainous landscape. The eagle is positioned in the right foreground, facing left, with its sharp beak and keen eyes prominently visible. Its plumage is a mix of dark brown and golden hues, with intricate feather details. The background features a soft-focus view of snow-capped mountains under a cloudy sky, creating a serene and grandiose atmosphere. The foreground includes rugged rocks and patches of green moss. Photorealistic, medium depth of field, soft natural lighting, cool color palette, high contrast, sharp focus on the eagle, blurred background, tranquil, majestic, wildlife photography."
>>> pipe = VisualClozePipeline.from_pretrained(
...     "VisualCloze/VisualClozePipeline-384", resolution=384, torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> image = pipe(
...     task_prompt=task_prompt,
...     content_prompt=content_prompt,
...     image=image_paths,
...     upsampling_width=1344,
...     upsampling_height=768,
...     upsampling_strength=0.4,
...     guidance_scale=30,
...     num_inference_steps=30,
...     max_sequence_length=512,
...     generator=torch.Generator("cpu").manual_seed(0),
... ).images[0][0]
>>> image.save("visualcloze.png")

VisualClozeGenerationPipeline

kelas diffusers.VisualClozeGenerationPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelresolution: int = 384 )

Parameter

  • transformer (FluxTransformer2DModel) — Arsitektur Conditional Transformer (MMDiT) untuk menghilangkan noise pada latens gambar yang telah dikodekan.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Scheduler yang digunakan bersama transformer untuk 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 (CLIPTextModel) — CLIP, khususnya varian clip-vit-large-patch14.
  • text_encoder_2 (T5EncoderModel) — T5, khususnya varian google/t5-v1_1-xxl.
  • tokenizer (CLIPTokenizer) — Tokenizer dari kelas CLIPTokenizer.
  • tokenizer_2 (T5TokenizerFast) — Tokenizer kedua dari kelas T5TokenizerFast.
  • resolution (int, opsional, defaultnya 384) — Resolusi setiap gambar saat menggabungkan gambar dari query dan contoh in-context.

Pipeline VisualCloze untuk generasi gambar dengan konteks visual. Referensi: https://github.com/lzyhha/VisualCloze/tree/main Pipeline ini dirancang untuk menghasilkan gambar berdasarkan contoh in-context visual.

__call__

< >

( task_prompt: str | list[str] = Nonecontent_prompt: str | list[str] = Noneimage: typing.Optional[torch.FloatTensor] = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float = 30.0num_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] = Nonepooled_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 = 512 ) → ~pipelines.flux.FluxPipelineOutput or tuple

Parameter

  • task_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan niat tugas.
  • content_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan konten atau caption dari gambar target yang akan dihasilkan.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], atau list[np.ndarray]) — Image, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara [0, 1]. Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah (B, C, H, W) atau (C, H, W). Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah (B, H, W, C) atau (H, W, C).
  • 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 argumen sigmas dalam metode set_timesteps mereka. Jika tidak didefinisikan, perilaku default saat num_inference_steps diteruskan akan digunakan.
  • guidance_scale (float, opsional, default 30.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. guidance_scale didefinisikan sebagai w dari persamaan 2. dari Imagen Paper. Skala panduan diaktifkan dengan mengatur guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan teks prompt, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.
  • num_images_per_prompt (int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt.
  • generator (torch.Generator atau list[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 menggunakan generator acak 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 input prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opsional) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. pembobotan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen input prompt.
  • output_type (str, opsional, default "pil") — Format output dari generate image. Pilih antara "pil" (PIL: PIL.Image.Image), "np" (np.array) atau "pt" (torch.Tensor).
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan ~pipelines.flux.FluxPipelineOutput alih-alih tuple biasa.
  • joint_attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam 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_kwargs akan berisi daftar semua tensor sesuai yang ditentukan oleh callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opsional) — Daftar input tensor untuk fungsi callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen callback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut ._callback_tensor_inputs dari kelas pipeline Anda.
  • max_sequence_length (int defaultnya 512) — Panjang maksimum urutan yang digunakan dengan prompt.

Mengembalikan

~pipelines.flux.FluxPipelineOutput atau tuple

~pipelines.flux.FluxPipelineOutput jika return_dict adalah True, selain itu berupa tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline VisualCloze untuk generasi.

Contoh:

>>> import torch
>>> from diffusers import VisualClozeGenerationPipeline, FluxFillPipeline as VisualClozeUpsamplingPipeline
>>> from diffusers.utils import load_image
>>> from PIL import Image

>>> image_paths = [
...     # in-context examples
...     [
...         load_image(
...             "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_mask.jpg"
...         ),
...         load_image(
...             "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_incontext-example-1_image.jpg"
...         ),
...     ],
...     # query with the target image
...     [
...         load_image(
...             "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/visualcloze/visualcloze_mask2image_query_mask.jpg"
...         ),
...         None,  # No image needed for the target image
...     ],
... ]
>>> task_prompt = "In each row, a logical task is demonstrated to achieve [IMAGE2] an aesthetically pleasing photograph based on [IMAGE1] sam 2-generated masks with rich color coding."
>>> content_prompt = "Majestic photo of a golden eagle perched on a rocky outcrop in a mountainous landscape. The eagle is positioned in the right foreground, facing left, with its sharp beak and keen eyes prominently visible. Its plumage is a mix of dark brown and golden hues, with intricate feather details. The background features a soft-focus view of snow-capped mountains under a cloudy sky, creating a serene and grandiose atmosphere. The foreground includes rugged rocks and patches of green moss. Photorealistic, medium depth of field, soft natural lighting, cool color palette, high contrast, sharp focus on the eagle, blurred background, tranquil, majestic, wildlife photography."
>>> pipe = VisualClozeGenerationPipeline.from_pretrained(
...     "VisualCloze/VisualClozePipeline-384", resolution=384, torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> image = pipe(
...     task_prompt=task_prompt,
...     content_prompt=content_prompt,
...     image=image_paths,
...     guidance_scale=30,
...     num_inference_steps=30,
...     max_sequence_length=512,
...     generator=torch.Generator("cpu").manual_seed(0),
... ).images[0][0]

>>> # optional, upsampling the generated image
>>> pipe_upsample = VisualClozeUpsamplingPipeline.from_pipe(pipe)
>>> pipe_upsample.to("cuda")

>>> mask_image = Image.new("RGB", image.size, (255, 255, 255))

>>> image = pipe_upsample(
...     image=image,
...     mask_image=mask_image,
...     prompt=content_prompt,
...     width=1344,
...     height=768,
...     strength=0.4,
...     guidance_scale=30,
...     num_inference_steps=30,
...     max_sequence_length=512,
...     generator=torch.Generator("cpu").manual_seed(0),
... ).images[0]

>>> image.save("visualcloze.png")

encode_prompt

< >

( layout_prompt: str | list[str]task_prompt: str | list[str]content_prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonemax_sequence_length: int = 512lora_scale: float | None = None )

Parameter

  • layout_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk menentukan jumlah contoh in-context dan jumlah gambar yang terlibat dalam tugas.
  • task_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan niat tugas.
  • content_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan konten atau caption dari gambar target yang akan dihasilkan.
  • device — (torch.device): perangkat torch
  • num_images_per_prompt (int) — jumlah gambar yang harus dihasilkan per prompt
  • 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 input prompt.
  • pooled_prompt_embeds (torch.FloatTensor, opsional) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. pembobotan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen input prompt.
  • lora_scale (float, opsional) — Skala LoRA yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.
Update on GitHub