Diffusers documentation
VisualCloze
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:
- Dukungan untuk berbagai tugas dalam domain
- Generalisasi ke tugas yang belum pernah dilihat melalui pembelajaran dalam konteks
- Satukan beberapa tugas menjadi satu langkah dan hasilkan gambar target serta hasil perantara
- 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. VisualClozeUpsamplingPipelinemenggunakan 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
- Upsampling pada tahap kedua: faktor 3x
- Resolusi kustom: Sesuaikan menggunakan parameter
upsampling_heightdanupsampling_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
< source >( 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
transformeruntuk 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__
< source >( 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 (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan niat tugas. - content_prompt (
strataulist[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], ataulist[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 dariupsampling_heightatauupsampling_widthyang 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 dariupsampling_heightatauupsampling_widthyang 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 argumensigmasdalam metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsditeruskan akan digunakan. - guidance_scale (
float, opsional, default 30.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.guidance_scaledidefinisikan sebagaiwdari persamaan 2. dari Imagen Paper. Skala panduan diaktifkan dengan mengaturguidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan teksprompt, 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.Generatorataulist[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 menggunakangeneratoracak 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 inputprompt. - 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 inputprompt. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antara PIL:PIL.Image.Imageataunp.array. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.flux.FluxPipelineOutputalih-alih tuple biasa. - joint_attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam 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_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda. - max_sequence_length (
intdefaultnya 512) — Panjang maksimum urutan yang digunakan denganprompt. - upsampling_strength (
float, opsional, bernilai default 1.0) — Menunjukkan sejauh mana mengubah referensiimagesaat melakukan upsampling pada hasil. Nilai ini harus berada di antara 0 dan- 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. Ketikaupsampling_strengthbernilai 1, noise yang ditambahkan berada pada maksimum dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 0 melewati langkah upsampling dan menghasilkan hasil pada resolusiself.resolution.
- Gambar yang dihasilkan digunakan sebagai titik awal dan semakin tinggi nilai
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
< source >( 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
transformeruntuk 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__
< source >( 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 (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan niat tugas. - content_prompt (
strataulist[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], ataulist[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 argumensigmasdalam metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsditeruskan akan digunakan. - guidance_scale (
float, opsional, default 30.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.guidance_scaledidefinisikan sebagaiwdari persamaan 2. dari Imagen Paper. Skala panduan diaktifkan dengan mengaturguidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan teksprompt, 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.Generatorataulist[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 menggunakangeneratoracak 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 inputprompt. - 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 inputprompt. - 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, defaultTrue) — Apakah akan mengembalikan~pipelines.flux.FluxPipelineOutputalih-alih tuple biasa. - joint_attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam 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_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda. - max_sequence_length (
intdefaultnya 512) — Panjang maksimum urutan yang digunakan denganprompt.
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
< source >( 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 (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk menentukan jumlah contoh in-context dan jumlah gambar yang terlibat dalam tugas. - task_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mendefinisikan niat tugas. - content_prompt (
strataulist[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 inputprompt. - 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 inputprompt. - lora_scale (
float, opsional) — Skala LoRA yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.