Diffusers documentation
Flux
Flux
Flux adalah serangkaian model generasi teks-ke-gambar yang didasarkan pada diffusion transformers. Untuk mengetahui lebih lanjut tentang Flux, lihat artikel blog asli oleh para pencipta Flux, Black Forest Labs.
Checkpoint model asli untuk Flux dapat ditemukan di sini. Kode inferensi asli dapat ditemukan di sini.
Flux dapat cukup mahal untuk dijalankan pada perangkat keras konsumen. Namun, Anda dapat melakukan serangkaian optimasi untuk menjalankannya lebih cepat dan dengan cara yang lebih hemat memori. Lihat bagian ini untuk detail lebih lanjut. Selain itu, Flux dapat diuntungkan dari kuantisasi untuk efisiensi memori dengan trade-off pada latensi inferensi. Rujuk artikel blog ini untuk mempelajari lebih lanjut. Untuk daftar sumber daya yang komprehensif, lihat gist ini.
Caching juga dapat mempercepat inferensi dengan menyimpan dan menggunakan kembali output antara.
Flux hadir dalam varian berikut:
| tipe model | id model |
|---|---|
| Timestep-distilled | black-forest-labs/FLUX.1-schnell |
| Guidance-distilled | black-forest-labs/FLUX.1-dev |
| Isi Inpainting/Outpainting (Guidance-distilled) | black-forest-labs/FLUX.1-Fill-dev |
| Canny Control (Guidance-distilled) | black-forest-labs/FLUX.1-Canny-dev |
| Kontrol Kedalaman (Guidance-distilled) | black-forest-labs/FLUX.1-Depth-dev |
| Canny Control (LoRA) | black-forest-labs/FLUX.1-Canny-dev-lora |
| Kontrol Kedalaman (LoRA) | black-forest-labs/FLUX.1-Depth-dev-lora |
| Redux (Adapter) | black-forest-labs/FLUX.1-Redux-dev |
| Konteks | black-forest-labs/FLUX.1-kontext |
Semua checkpoint memiliki penggunaan yang berbeda, yang kami rinci di bawah ini.
Timestep-distilled
max_sequence_lengthtidak boleh lebih dari 256.guidance_scaleharus 0.- Karena ini adalah model yang telah melalui distilasi timestep, model ini mendapat manfaat dari jumlah langkah sampling yang lebih sedikit.
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()
prompt = "A cat holding a sign that says hello world"
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=768,
width=1360,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
out.save("image.png")Guidance-distilled
- Varian guidance-distilled membutuhkan sekitar 50 langkah sampling untuk menghasilkan generasi berkualitas baik.
- Tidak ada batasan terkait
max_sequence_length.
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()
prompt = "a tiny astronaut hatching from an egg on the moon"
out = pipe(
prompt=prompt,
guidance_scale=3.5,
height=768,
width=1360,
num_inference_steps=50,
).images[0]
out.save("image.png")Isi Inpainting/Outpainting
- Pipeline Flux Fill tidak memerlukan
strengthsebagai input seperti pipeline inpainting biasa. - Itu mendukung inpainting dan outpainting.
import torch
from diffusers import FluxFillPipeline
from diffusers.utils import load_image
image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup.png")
mask = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup_mask.png")
repo_id = "black-forest-labs/FLUX.1-Fill-dev"
pipe = FluxFillPipeline.from_pretrained(repo_id, dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
image = pipe(
prompt="a white paper cup",
image=image,
mask_image=mask,
height=1632,
width=1232,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save(f"output.png")Canny Control
Catatan: black-forest-labs/Flux.1-Canny-dev bukan model ControlNetModel. Model ControlNet adalah komponen terpisah dari UNet/Transformer, di mana residualnya ditambahkan ke model dasar yang sebenarnya. Canny Control adalah arsitektur alternatif yang mencapai hasil yang secara efektif sama dengan model ControlNet, dengan menggunakan concatenation per channel dengan kondisi kontrol input dan memastikan transformer mempelajari kontrol struktur dengan mengikuti kondisi tersebut sedekat mungkin.
# !pip install -U controlnet-aux
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-Canny-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = CannyDetector()
control_image = processor(control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024)
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=50,
guidance_scale=30.0,
).images[0]
image.save("output.png")Canny Control juga memungkinkan dengan varian LoRA dari kondisi ini. Pemakaiannya adalah sebagai berikut:
# !pip install -U controlnet-aux
import torch
from controlnet_aux import CannyDetector
from diffusers import FluxControlPipeline
from diffusers.utils import load_image
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
pipe.load_lora_weights("black-forest-labs/FLUX.1-Canny-dev-lora")
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = CannyDetector()
control_image = processor(control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024)
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=50,
guidance_scale=30.0,
).images[0]
image.save("output.png")Kontrol Kedalaman
Catatan: black-forest-labs/Flux.1-Depth-dev bukan model ControlNet. Model ControlNetModel adalah komponen terpisah dari UNet/Transformer, di mana residualnya ditambahkan ke model dasar yang sebenarnya. Depth Control adalah arsitektur alternatif yang mencapai hasil yang secara efektif sama dengan model ControlNet, dengan menggunakan concatenation per channel dengan kondisi kontrol input dan memastikan transformer mempelajari kontrol struktur dengan mengikuti kondisi tersebut sedekat mungkin.
# !pip install git+https://github.com/huggingface/image_gen_aux
import torch
from diffusers import FluxControlPipeline, FluxTransformer2DModel
from diffusers.utils import load_image
from image_gen_aux import DepthPreprocessor
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-Depth-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=30,
guidance_scale=10.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")Kontrol Kedalaman juga dimungkinkan dengan varian LoRA dari kondisi ini. Pemakaiannya adalah sebagai berikut:
# !pip install git+https://github.com/huggingface/image_gen_aux
import torch
from diffusers import FluxControlPipeline, FluxTransformer2DModel
from diffusers.utils import load_image
from image_gen_aux import DepthPreprocessor
pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu"
pipe.load_lora_weights("black-forest-labs/FLUX.1-Depth-dev-lora")
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")
image = pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=30,
guidance_scale=10.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")Redux
- Pipeline Flux Redux adalah adapter untuk model dasar FLUX.1. Pipeline ini dapat digunakan dengan flux-dev dan flux-schnell, untuk generasi gambar-ke-gambar.
- Anda dapat terlebih dahulu menggunakan
FluxPriorReduxPipelineuntuk mendapatkanprompt_embedsdanpooled_prompt_embeds, lalu memasukkannya ke dalamFluxPipelineuntuk generasi gambar-ke-gambar. - Saat menggunakan
FluxPriorReduxPipelinedengan pipeline dasar, Anda dapat mengaturtext_encoder=Nonedantext_encoder_2=Nonedi pipeline dasar untuk menghemat VRAM.
import torch
from diffusers import FluxPriorReduxPipeline, FluxPipeline
from diffusers.utils import load_image
device = "cuda" # or "mps", "xpu", "cpu"
dtype = torch.bfloat16
repo_redux = "black-forest-labs/FLUX.1-Redux-dev"
repo_base = "black-forest-labs/FLUX.1-dev"
pipe_prior_redux = FluxPriorReduxPipeline.from_pretrained(repo_redux, dtype=dtype).to(device)
pipe = FluxPipeline.from_pretrained(
repo_base,
text_encoder=None,
text_encoder_2=None,
dtype=torch.bfloat16
).to(device)
image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy/img5.png")
pipe_prior_output = pipe_prior_redux(image)
images = pipe(
guidance_scale=2.5,
num_inference_steps=50,
generator=torch.Generator("cpu").manual_seed(0),
**pipe_prior_output,
).images
images[0].save("flux-redux.png")Konteks
Flux Kontext adalah model yang memungkinkan kontrol in-context pada proses pembuatan gambar, sehingga memungkinkan pengeditan, penyempurnaan, pencahayaan ulang, transfer gaya, kustomisasi karakter, dan lainnya.
import torch
from diffusers import FluxKontextPipeline
from diffusers.utils import load_image
pipe = FluxKontextPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png").convert("RGB")
prompt = "Make Pikachu hold a sign that says 'Black Forest Labs is awesome', yarn art style, detailed, vibrant colors"
image = pipe(
image=image,
prompt=prompt,
guidance_scale=2.5,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("flux-kontext.png")Flux Kontext dilengkapi dengan pemeriksa keselamatan integritas, yang harus dijalankan setelah langkah pembuatan gambar. Untuk menjalankan pemeriksa keselamatan, instal repositori resmi dari black-forest-labs/flux dan tambahkan kode berikut:
from flux.content_filters import PixtralContentFilter
# ... pipeline invocation to generate images
integrity_checker = PixtralContentFilter(torch.device("cuda"))
image_ = np.array(image) / 255.0
image_ = 2 * image_ - 1
image_ = torch.from_numpy(image_).to("cuda", dtype=torch.float32).unsqueeze(0).permute(0, 3, 1, 2)
if integrity_checker.test_image(image_):
raise ValueError("Your image has been flagged. Choose another prompt/image or try again.")Kontext Inpainting
FluxKontextInpaintPipeline memungkinkan modifikasi gambar di dalam area mask yang tetap. Saat ini, pipeline ini mendukung kondisioning berbasis teks dan kondisioning berbasis referensi gambar.
import torch
from diffusers import FluxKontextInpaintPipeline
from diffusers.utils import load_image
prompt = "Change the yellow dinosaur to green one"
img_url = (
"https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_input.jpeg?raw=true"
)
mask_url = (
"https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_mask.png?raw=true"
)
source = load_image(img_url)
mask = load_image(mask_url)
pipe = FluxKontextInpaintPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(prompt=prompt, image=source, mask_image=mask, strength=1.0).images[0]
image.save("kontext_inpainting_normal.png")import torch
from diffusers import FluxKontextInpaintPipeline
from diffusers.utils import load_image
pipe = FluxKontextInpaintPipeline.from_pretrained(
"black-forest-labs/FLUX.1-Kontext-dev", dtype=torch.bfloat16
)
pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "Replace this ball"
img_url = "https://images.pexels.com/photos/39362/the-ball-stadion-football-the-pitch-39362.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
mask_url = "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/ball_mask.png?raw=true"
image_reference_url = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTah3x6OL_ECMBaZ5ZlJJhNsyC-OSMLWAI-xw&s"
source = load_image(img_url)
mask = load_image(mask_url)
image_reference = load_image(image_reference_url)
mask = pipe.mask_processor.blur(mask, blur_factor=12)
image = pipe(
prompt=prompt, image=source, mask_image=mask, image_reference=image_reference, strength=1.0
).images[0]
image.save("kontext_inpainting_ref.png")Menggabungkan Flux Turbo LoRAs dengan Flux Control, Fill, dan Redux
Kita dapat menggabungkan Flux Turbo LoRAs dengan Flux Control dan pipeline lain seperti Fill dan Redux untuk memungkinkan inferensi dalam beberapa langkah. Contoh di bawah ini menunjukkan cara melakukannya untuk Flux Control LoRA untuk kedalaman dan turbo LoRA dari ByteDance/Hyper-SD.
from diffusers import FluxControlPipeline
from image_gen_aux import DepthPreprocessor
from diffusers.utils import load_image
from huggingface_hub import hf_hub_download
import torch
control_pipe = FluxControlPipeline.from_pretrained("black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16)
control_pipe.load_lora_weights("black-forest-labs/FLUX.1-Depth-dev-lora", adapter_name="depth")
control_pipe.load_lora_weights(
hf_hub_download("ByteDance/Hyper-SD", "Hyper-FLUX.1-dev-8steps-lora.safetensors"), adapter_name="hyper-sd"
)
control_pipe.set_adapters(["depth", "hyper-sd"], adapter_weights=[0.85, 0.125])
control_pipe.enable_model_cpu_offload()
prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
control_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png")
processor = DepthPreprocessor.from_pretrained("LiheYoung/depth-anything-large-hf")
control_image = processor(control_image)[0].convert("RGB")
image = control_pipe(
prompt=prompt,
control_image=control_image,
height=1024,
width=1024,
num_inference_steps=8,
guidance_scale=10.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("output.png")Catatan tentang unload_lora_weights() saat menggunakan Flux LoRAs
Saat memuat ulang bobot Control LoRA, panggil pipe.unload_lora_weights(reset_to_overwritten_params=True) untuk mengatur ulang pipe.transformer sepenuhnya ke bentuk aslinya. Pipeline yang dihasilkan kemudian dapat digunakan dengan metode seperti DiffusionPipeline.from_pipe(). Detail lebih lanjut tentang argumen ini tersedia di PR ini.
IP-Adapter
Lihat IP-Adapter untuk mempelajari lebih lanjut tentang cara kerja IP-Adapter.
IP-Adapter memungkinkan Anda memberikan prompt ke Flux menggunakan gambar, di samping prompt teks. Hal ini sangat berguna ketika Anda perlu menggambarkan konsep kompleks yang sulit diungkapkan hanya melalui teks dan Anda memiliki gambar referensi.
import torch
from diffusers import FluxPipeline
from diffusers.utils import load_image
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/flux_ip_adapter_input.jpg").resize((1024, 1024))
pipe.load_ip_adapter(
"XLabs-AI/flux-ip-adapter",
weight_name="ip_adapter.safetensors",
image_encoder_pretrained_model_name_or_path="openai/clip-vit-large-patch14"
)
pipe.set_ip_adapter_scale(1.0)
image = pipe(
width=1024,
height=1024,
prompt="wearing sunglasses",
negative_prompt="",
true_cfg_scale=4.0,
generator=torch.Generator().manual_seed(4444),
ip_adapter_image=image,
).images[0]
image.save('flux_ip_adapter_output.jpg')
Optimalkan
Flux adalah model yang sangat besar dan membutuhkan sekitar 50GB RAM/VRAM untuk memuat semua komponen pemodelan. Aktifkan beberapa optimasi di bawah ini untuk menurunkan kebutuhan memori.
Offloading grup
Group offloading menurunkan penggunaan VRAM dengan meng-offload kelompok lapisan internal, bukan seluruh model atau bobot. Anda perlu menggunakan apply_group_offloading() pada semua komponen model dari sebuah pipeline. Parameter offload_type memungkinkan Anda untuk beralih antara offloading tingkat blok dan tingkat daun. Mengaturnya ke leaf_level akan meng-offload parameter tingkat daun terendah ke CPU, bukan meng-offload pada tingkat modul.
Pada perangkat CUDA yang mendukung streaming data asinkron, atur use_stream=True untuk menumpuk transfer data dan komputasi guna mempercepat inferensi.
Dimungkinkan untuk mencampurkan offloading tingkat blok dan tingkat daun untuk komponen yang berbeda dalam sebuah pipeline.
import torch
from diffusers import FluxPipeline
from diffusers.hooks import apply_group_offloading
model_id = "black-forest-labs/FLUX.1-dev"
dtype = torch.bfloat16
pipe = FluxPipeline.from_pretrained(
model_id,
dtype=dtype,
)
apply_group_offloading(
pipe.transformer,
offload_type="leaf_level",
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
use_stream=True,
)
apply_group_offloading(
pipe.text_encoder,
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
offload_type="leaf_level",
use_stream=True,
)
apply_group_offloading(
pipe.text_encoder_2,
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
offload_type="leaf_level",
use_stream=True,
)
apply_group_offloading(
pipe.vae,
offload_device=torch.device("cpu"),
onload_device=torch.device("cuda"),
offload_type="leaf_level",
use_stream=True,
)
prompt="A cat wearing sunglasses and working as a lifeguard at pool."
generator = torch.Generator().manual_seed(181201)
image = pipe(
prompt,
width=576,
height=1024,
num_inference_steps=30,
generator=generator
).images[0]
imageMenjalankan inferensi FP16
Flux dapat menghasilkan gambar berkualitas tinggi dengan FP16 (yaitu untuk mempercepat inferensi pada GPU Turing/Volta) tetapi menghasilkan output yang berbeda dibandingkan dengan FP32/BF16. Masalahnya adalah beberapa aktivasi di text encoder harus dipangkas (clipped) saat dijalankan dalam FP16, yang memengaruhi keseluruhan gambar. Memaksa text encoder untuk berjalan dengan inferensi FP32 sehingga menghilangkan perbedaan output ini. Lihat di sini untuk detailnya.
Kode inferensi FP16:
import torch
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", dtype=torch.bfloat16) # can replace schnell with dev
# to run on low vram GPUs (i.e. between 4 and 32 GB VRAM)
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
pipe.to(torch.float16) # casting here instead of in the pipeline constructor because doing so in the constructor loads all models into CPU memory at once
prompt = "A cat holding a sign that says hello world"
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=768,
width=1360,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
out.save("image.png")Kuantisasi
Quantization membantu mengurangi kebutuhan memori untuk model yang sangat besar dengan menyimpan bobot model dalam tipe data presisi yang lebih rendah. Namun, quantization dapat memiliki dampak yang bervariasi terhadap kualitas video tergantung pada model video yang digunakan.
Lihat ringkasan Quantization untuk mempelajari lebih lanjut tentang backend kuantisasi yang didukung dan memilih backend kuantisasi yang mendukung kasus penggunaan Anda. Contoh di bawah ini menunjukkan cara memuat FluxPipeline yang dikuantisasi untuk inferensi dengan bitsandbytes.
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, FluxTransformer2DModel, FluxPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, T5EncoderModel
quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = T5EncoderModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="text_encoder_2",
quantization_config=quant_config,
dtype=torch.float16,
)
quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = FluxTransformer2DModel.from_pretrained(
"black-forest-labs/FLUX.1-dev",
subfolder="transformer",
quantization_config=quant_config,
dtype=torch.float16,
)
pipeline = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
text_encoder_2=text_encoder_8bit,
transformer=transformer_8bit,
dtype=torch.float16,
device_map="balanced",
)
prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt, guidance_scale=3.5, height=768, width=1360, num_inference_steps=50).images[0]
image.save("flux.png")Memuat File Tunggal untuk FluxTransformer2DModel
FluxTransformer2DModel mendukung pemuatan checkpoint dalam format asli yang dirilis oleh Black Forest Labs. Hal ini juga berguna saat mencoba memuat finetune atau versi kuantisasi dari model yang telah dipublikasikan oleh komunitas.
Inferensi
FP8dapat menjadi tidak stabil tergantung pada jenis GPU, versi CUDA, dan versitorchyang Anda gunakan. Disarankan untuk menggunakan pustakaoptimum-quantoagar dapat menjalankan inferensi FP8 di mesin Anda.
Contoh berikut menunjukkan cara menjalankan Flux dengan VRAM kurang dari 16GB.
Pertama, instal optimum-quanto
pip install optimum-quanto
Lalu jalankan contoh berikut
import torch
from diffusers import FluxTransformer2DModel, FluxPipeline
from transformers import T5EncoderModel, CLIPTextModel
from optimum.quanto import freeze, qfloat8, quantize
bfl_repo = "black-forest-labs/FLUX.1-dev"
dtype = torch.bfloat16
transformer = FluxTransformer2DModel.from_single_file("https://huggingface.co/Kijai/flux-fp8/blob/main/flux1-dev-fp8.safetensors", dtype=dtype)
quantize(transformer, weights=qfloat8)
freeze(transformer)
text_encoder_2 = T5EncoderModel.from_pretrained(bfl_repo, subfolder="text_encoder_2", dtype=dtype)
quantize(text_encoder_2, weights=qfloat8)
freeze(text_encoder_2)
pipe = FluxPipeline.from_pretrained(bfl_repo, transformer=None, text_encoder_2=None, dtype=dtype)
pipe.transformer = transformer
pipe.text_encoder_2 = text_encoder_2
pipe.enable_model_cpu_offload()
prompt = "A cat holding a sign that says hello world"
image = pipe(
prompt,
guidance_scale=3.5,
output_type="pil",
num_inference_steps=20,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save("flux-fp8-dev.png")FluxPipeline
kelas diffusers.FluxPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
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.
Pipeline Flux untuk generasi teks-ke-gambar.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_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] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jikatrue_cfg_scaletidak lebih besar dari1). - negative_prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar, yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,negative_promptdigunakan di semua text-encoder. - true_cfg_scale (
float, opsional, default 1.0) — True classifier-free guidance (guidance scale) diaktifkan ketikatrue_cfg_scale> 1 dannegative_promptdisediakan. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - 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, bernilai default 3,5) — Skala panduan tertanam diaktifkan dengan mengaturguidance_scale> 1. Nilaiguidance_scaleyang lebih tinggi mendorong model untuk menghasilkan gambar yang lebih selaras denganpromptdengan mengorbankan kualitas gambar yang lebih rendah.Model yang telah melalui distilasi panduan (guidance-distilled) mengaproksimasi true classifer-free guidance untuk
guidance_scale> 1. Lihat makalah untuk mempelajari lebih lanjut. - 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. - ip_adapter_image — (
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_ip_adapter_image —
(
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - negative_ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate dari argumen inputnegative_prompt. - 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.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxPipeline
>>> pipe = FluxPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> # Depending on the variant being used, the pipeline call will slightly vary.
>>> # Refer to the pipeline documentation for more details.
>>> image = pipe(prompt, num_inference_steps=4, guidance_scale=0.0).images[0]
>>> image.save("flux.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxImg2ImgPipeline
kelas diffusers.FluxImg2ImgPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
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.
Pipeline Flux untuk inpainting gambar.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.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] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jikatrue_cfg_scaletidak lebih besar dari1). - negative_prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar, yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,negative_promptdigunakan di semua text-encoder. - true_cfg_scale (
float, opsional, default 1.0) — True classifier-free guidance (guidance scale) diaktifkan ketikatrue_cfg_scale> 1 dannegative_promptdisediakan. - 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)Parameter ini juga dapat menerima latens gambar sebagaiimage, namun jika latens diberikan secara langsung, latens tersebut tidak akan di-encode ulang. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - strength (
float, opsional, default 1.0) — Menunjukkan sejauh mana transformasi dilakukan padaimagereferensi. Nilainya harus antara 0 dan 1.imagedigunakan sebagai titik awal, dan semakin tinggistrength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketikastrengthbernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 1 pada dasarnya mengabaikanimage. - 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 7.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 denganpromptteks, 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. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate dari argumen inputnegative_prompt. - ip_adapter_image — (
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_ip_adapter_image —
(
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - negative_ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - 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.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> device = "cuda"
>>> pipe = FluxImg2ImgPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe = pipe.to(device)
>>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
>>> init_image = load_image(url).resize((1024, 1024))
>>> prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney, 8k"
>>> images = pipe(
... prompt=prompt, image=init_image, num_inference_steps=4, strength=0.95, guidance_scale=0.0
... ).images[0]encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxInpaintPipeline
kelas diffusers.FluxInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
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.
Pipeline Flux untuk inpainting gambar.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonepadding_mask_crop: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.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] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jikatrue_cfg_scaletidak lebih besar dari1). - negative_prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar, yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,negative_promptdigunakan di semua text-encoder. - true_cfg_scale (
float, opsional, default 1.0) — True classifier-free guidance (guidance scale) diaktifkan ketikatrue_cfg_scale> 1 dannegative_promptdisediakan. - 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)Parameter ini juga dapat menerima latens gambar sebagaiimage, namun jika latens diberikan secara langsung, latens tersebut tidak akan di-encode ulang. - mask_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 di-mask padaimage. Piksel putih pada mask akan di-repaint, sedangkan piksel hitam dipertahankan. Jikamask_imageadalah gambar PIL, gambar tersebut dikonversi menjadi satu channel (luminance) sebelum digunakan. Jika berupa array numpy atau tensor pytorch, array/tensor tersebut harus berisi satu channel warna (L) alih-alih 3, sehingga bentuk yang diharapkan untuk tensor pytorch adalah(B, 1, H, W),(B, H, W),(1, H, W), atau(H, W). Dan untuk array numpy, bentuknya adalah(B, H, W, 1),(B, H, W),(H, W, 1), atau(H, W). - masked_image_latents (
torch.Tensor,list[torch.Tensor]) —Tensoryang mewakili batch gambar untuk memaskerimageyang dihasilkan oleh VAE. Jika tidak disediakan, tensor latens mask akan dihasilkan olehmask_image. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - padding_mask_crop (
int, opsional, defaultNone) — Ukuran margin pada crop yang akan diterapkan ke gambar dan masking. JikaNone, tidak ada crop yang diterapkan ke image dan mask_image. Jikapadding_mask_cropbukanNone, proses akan terlebih dahulu menemukan area persegi panjang dengan rasio aspek yang sama dengan gambar dan mencakup semua area yang di-mask, kemudian memperluas area tersebut berdasarkanpadding_mask_crop. Gambar dan mask_image kemudian akan di-crop berdasarkan area yang telah diperluas sebelum di-resize ke ukuran gambar asli untuk inpainting. Hal ini berguna ketika area yang di-mask kecil sementara gambar besar dan mengandung informasi yang tidak relevan untuk inpainting, seperti latar belakang. - strength (
float, opsional, default 1.0) — Menunjukkan sejauh mana transformasi dilakukan padaimagereferensi. Nilainya harus antara 0 dan 1.imagedigunakan sebagai titik awal, dan semakin tinggistrength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketikastrengthbernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 1 pada dasarnya mengabaikanimage. - 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 7.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 denganpromptteks, 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. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate dari argumen inputnegative_prompt. - ip_adapter_image — (
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_ip_adapter_image —
(
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - negative_ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - 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.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxInpaintPipeline.from_pretrained("black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench"
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image = pipe(prompt=prompt, image=source, mask_image=mask).images[0]
>>> image.save("flux_inpainting.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxControlNetInpaintPipeline
kelas diffusers.FluxControlNetInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelcontrolnet: diffusers.models.controlnets.controlnet_flux.FluxControlNetModel | list[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | tuple[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | diffusers.models.controlnets.controlnet_flux.FluxMultiControlNetModel )
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.
Pipeline controlnet Flux untuk inpainting.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonemasked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6padding_mask_crop: int | None = Nonesigmas: list[float] | None = Nonenum_inference_steps: int = 28guidance_scale: float = 7.0control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. - image (
PIL.Image.Imageataulist[PIL.Image.Image]atautorch.FloatTensor) — Gambar yang akan di-inpaint. - mask_image (
PIL.Image.Imageataulist[PIL.Image.Image]atautorch.FloatTensor) — Gambar mask yang akan digunakan untuk inpainting. Piksel putih pada mask akan diwarnai ulang, sedangkan piksel hitam akan dipertahankan. - masked_image_latents (
torch.FloatTensor, opsional) — Latens gambar bermasker yang telah dibuat sebelumnya. - control_image (
PIL.Image.Imageataulist[PIL.Image.Image]atautorch.FloatTensor) — Kondisi input ControlNet. Gambar untuk mengontrol generasi. - height (
int, opsional, defaultnya self.default_sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, defaultnya self.default_sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. - strength (
float, opsional, default 0.6) — Secara konseptual, menunjukkan seberapa banyak area yang dimasker akan di-inpaint. Harus berada di antara 0 dan 1. - padding_mask_crop (
int, opsional) — Ukuran padding yang digunakan saat memotong mask. - num_inference_steps (
int, opsional, default 28) — 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 7.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. - control_guidance_start (
floatataulist[float], opsional, default 0.0) — Persentase dari total langkah di mana ControlNet mulai diterapkan. - control_guidance_end (
floatataulist[float], opsional, default 1.0) — Persentase total langkah di mana ControlNet berhenti diterapkan. - control_mode (
intataulist[int], opsional) — Mode untuk ControlNet. Jika beberapa ControlNet digunakan, ini harus berupa daftar. - controlnet_conditioning_scale (
floatataulist[float], opsional, default 1.0) — Output dari ControlNet dikalikan dengancontrolnet_conditioning_scalesebelum ditambahkan ke residual pada transformer asli. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau lebih 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. - prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. penimbangan prompt. - pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks terpool yang telah dibuat sebelumnya. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antaraPIL.Imageataunp.array. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.flux.FluxPipelineOutputalih-alih tuple biasa. - joint_attention_kwargs (
dict, opsional) — Argumen kata kunci tambahan yang akan diteruskan ke mekanisme joint attention. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. - callback_on_step_end_tensor_inputs (
list[str], opsional) — Daftar input tensor untuk fungsicallback_on_step_end. - max_sequence_length (
int, opsional, default 512) — Panjang maksimum dari urutan yang akan dihasilkan.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxControlNetInpaintPipeline
>>> from diffusers.models import FluxControlNetModel
>>> from diffusers.utils import load_image
>>> controlnet = FluxControlNetModel.from_pretrained(
... "InstantX/FLUX.1-dev-controlnet-canny", torch_dtype=torch.float16
... )
>>> pipe = FluxControlNetInpaintPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-schnell", controlnet=controlnet, torch_dtype=torch.float16
... )
>>> pipe.to("cuda")
>>> control_image = load_image(
... "https://huggingface.co/InstantX/FLUX.1-dev-Controlnet-Canny-alpha/resolve/main/canny.jpg"
... )
>>> init_image = load_image(
... "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
... )
>>> mask_image = load_image(
... "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
... )
>>> prompt = "A girl holding a sign that says InstantX"
>>> image = pipe(
... prompt,
... image=init_image,
... mask_image=mask_image,
... control_image=control_image,
... control_guidance_start=0.2,
... control_guidance_end=0.8,
... controlnet_conditioning_scale=0.7,
... strength=0.7,
... num_inference_steps=28,
... guidance_scale=3.5,
... ).images[0]
>>> image.save("flux_controlnet_inpaint.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxControlNetImg2ImgPipeline
kelas diffusers.FluxControlNetImg2ImgPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelcontrolnet: diffusers.models.controlnets.controlnet_flux.FluxControlNetModel | list[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | tuple[diffusers.models.controlnets.controlnet_flux.FluxControlNetModel] | diffusers.models.controlnets.controlnet_flux.FluxMultiControlNetModel )
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.
Pipeline Flux controlnet untuk generasi gambar-ke-gambar.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.0control_guidance_start: float | list[float] = 0.0control_guidance_end: float | list[float] = 1.0control_mode: int | list[int] | None = Nonecontrolnet_conditioning_scale: float | list[float] = 1.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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. - image (
PIL.Image.Imageataulist[PIL.Image.Image]atautorch.FloatTensor) — Gambar yang akan dimodifikasi dengan pipeline. - control_image (
PIL.Image.Imageataulist[PIL.Image.Image]atautorch.FloatTensor) — Kondisi input ControlNet. Gambar untuk mengontrol generasi. - height (
int, opsional, defaultnya self.default_sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, defaultnya self.default_sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. - strength (
float, opsional, default 0.6) — Secara konseptual, menunjukkan seberapa besar transformasi yang diterapkan padaimagereferensi. Nilainya harus berada di antara 0 dan 1. - num_inference_steps (
int, opsional, default 28) — 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 7.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. - control_mode (
intataulist[int], opsional) — Mode untuk ControlNet. Jika beberapa ControlNet digunakan, ini harus berupa daftar. - controlnet_conditioning_scale (
floatataulist[float], opsional, default 1.0) — Output dari ControlNet dikalikan dengancontrolnet_conditioning_scalesebelum ditambahkan ke residual pada transformer asli. - control_guidance_start (
floatataulist[float], opsional, default 0.0) — Persentase dari total langkah di mana ControlNet mulai diterapkan. - control_guidance_end (
floatataulist[float], opsional, default 1.0) — Persentase total langkah di mana ControlNet berhenti diterapkan. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau lebih 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. - prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. penimbangan prompt. - pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks terpool yang telah dibuat sebelumnya. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antaraPIL.Imageataunp.array. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.flux.FluxPipelineOutputalih-alih tuple biasa. - joint_attention_kwargs (
dict, opsional) — Argumen kata kunci tambahan yang akan diteruskan ke mekanisme joint attention. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. - callback_on_step_end_tensor_inputs (
list[str], opsional) — Daftar input tensor untuk fungsicallback_on_step_end. - max_sequence_length (
int, opsional, default 512) — Panjang maksimum dari urutan yang akan dihasilkan.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxControlNetImg2ImgPipeline, FluxControlNetModel
>>> from diffusers.utils import load_image
>>> device = "cuda" if torch.cuda.is_available() else "cpu"
>>> controlnet = FluxControlNetModel.from_pretrained(
... "InstantX/FLUX.1-dev-Controlnet-Canny-alpha", torch_dtype=torch.bfloat16
... )
>>> pipe = FluxControlNetImg2ImgPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-schnell", controlnet=controlnet, torch_dtype=torch.float16
... )
>>> pipe.text_encoder.to(torch.float16)
>>> pipe.controlnet.to(torch.float16)
>>> pipe.to("cuda")
>>> control_image = load_image("https://huggingface.co/InstantX/SD3-Controlnet-Canny/resolve/main/canny.jpg")
>>> init_image = load_image(
... "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
... )
>>> prompt = "A girl in city, 25 years old, cool, futuristic"
>>> image = pipe(
... prompt,
... image=init_image,
... control_image=control_image,
... control_guidance_start=0.2,
... control_guidance_end=0.8,
... controlnet_conditioning_scale=1.0,
... strength=0.7,
... num_inference_steps=2,
... guidance_scale=3.5,
... ).images[0]
>>> image.save("flux_controlnet_img2img.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxControlPipeline
kelas diffusers.FluxControlPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModel )
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.
Pipeline Flux untuk generasi teks-ke-gambar yang dapat dikendalikan dengan kondisi gambar.
Referensi: https://bfl.ai/flux-1-tools
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya - control_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image],list[np.ndarray], —list[list[torch.Tensor]],list[list[np.ndarray]]ataulist[list[PIL.Image.Image]]): Kondisi input ControlNet untuk memberikan panduan kepadaunetdalam proses generasi. Jika tipe dispesifikasikan sebagaitorch.Tensor, nilai tersebut diteruskan ke ControlNet apa adanya.PIL.Image.Imagejuga dapat diterima sebagai gambar. Dimensi gambar output secara default mengikuti dimensiimage. Jika tinggi dan/atau lebar diteruskan,imageakan di-resize sesuai dengan nilai tersebut. Jika beberapa ControlNet dispesifikasikan dalaminit, gambar harus diteruskan sebagai list sehingga setiap elemen list dapat di-batch dengan benar untuk input ke satu ControlNet. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - 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, defaultnya 3,5) — Skala panduan tertanam diaktifkan dengan mengaturguidance_scale> 1. Nilai yang lebih tinggi untukguidance_scalemendorong model untuk menghasilkan gambar yang lebih sesuai dengan prompt, dengan mengorbankan kualitas gambar yang lebih rendah.Model yang telah melalui distilasi panduan (guidance-distilled) mengaproksimasi panduan bebas-klasifikator (classifier-free guidance) yang sebenarnya untuk
guidance_scale> 1. Lihat makalah untuk mempelajari lebih lanjut. - 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.
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 untuk generasi.
Contoh:
>>> import torch
>>> from controlnet_aux import CannyDetector
>>> from diffusers import FluxControlPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxControlPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Canny-dev", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "A robot made of exotic candies and chocolates of different kinds. The background is filled with confetti and celebratory gifts."
>>> control_image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png"
... )
>>> processor = CannyDetector()
>>> control_image = processor(
... control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
... )
>>> image = pipe(
... prompt=prompt,
... control_image=control_image,
... height=1024,
... width=1024,
... num_inference_steps=50,
... guidance_scale=30.0,
... ).images[0]
>>> image.save("output.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxControlImg2ImgPipeline
kelas diffusers.FluxControlImg2ImgPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModel )
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.
Pipeline Flux untuk inpainting gambar.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonecontrol_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 0.6num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 7.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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya - 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)Parameter ini juga dapat menerima latens gambar sebagaiimage, namun jika latens diberikan secara langsung, latens tersebut tidak akan di-encode ulang. - control_image (
torch.Tensor,PIL.Image.Image,np.ndarray,list[torch.Tensor],list[PIL.Image.Image],list[np.ndarray], —list[list[torch.Tensor]],list[list[np.ndarray]]ataulist[list[PIL.Image.Image]]): Kondisi input ControlNet untuk memberikan panduan kepadaunetdalam proses generasi. Jika tipe dispesifikasikan sebagaitorch.Tensor, nilai tersebut diteruskan ke ControlNet apa adanya.PIL.Image.Imagejuga dapat diterima sebagai gambar. Dimensi gambar output secara default mengikuti dimensiimage. Jika tinggi dan/atau lebar diteruskan,imageakan di-resize sesuai dengan nilai tersebut. Jika beberapa ControlNet dispesifikasikan dalaminit, gambar harus diteruskan sebagai list sehingga setiap elemen list dapat di-batch dengan benar untuk input ke satu ControlNet. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - strength (
float, opsional, default 1.0) — Menunjukkan sejauh mana transformasi dilakukan padaimagereferensi. Nilainya harus antara 0 dan 1.imagedigunakan sebagai titik awal, dan semakin tinggistrength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketikastrengthbernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 1 pada dasarnya mengabaikanimage. - 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 7.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 denganpromptteks, 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.
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 untuk generasi.
Contoh:
>>> import torch
>>> from controlnet_aux import CannyDetector
>>> from diffusers import FluxControlImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxControlImg2ImgPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Canny-dev", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "A robot made of exotic candies and chocolates of different kinds. Abstract background"
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/watercolor-painting.jpg"
... )
>>> control_image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/robot.png"
... )
>>> processor = CannyDetector()
>>> control_image = processor(
... control_image, low_threshold=50, high_threshold=200, detect_resolution=1024, image_resolution=1024
... )
>>> image = pipe(
... prompt=prompt,
... image=image,
... control_image=control_image,
... strength=0.8,
... height=1024,
... width=1024,
... num_inference_steps=50,
... guidance_scale=30.0,
... ).images[0]
>>> image.save("output.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxPriorReduxPipeline
kelas diffusers.FluxPriorReduxPipeline
< source >( image_encoder: SiglipVisionModelfeature_extractor: SiglipImageProcessorPilimage_embedder: ReduxImageEncodertext_encoder: CLIPTextModel = Nonetokenizer: CLIPTokenizer = Nonetext_encoder_2: T5EncoderModel = Nonetokenizer_2: T5Tokenizer = None )
Parameter
- image_encoder (
SiglipVisionModel) — Model visi SIGLIP untuk mengodekan gambar input. - feature_extractor (
SiglipImageProcessor) — Pemroses gambar untuk prapemrosesan gambar untuk model SIGLIP. - image_embedder (
ReduxImageEncoder) — Pengkode gambar Redux untuk memproses embedding SIGLIP. - text_encoder (
CLIPTextModel, opsional) — CLIP, khususnya varian clip-vit-large-patch14. - text_encoder_2 (
T5EncoderModel, opsional) — T5, khususnya varian google/t5-v1_1-xxl. - tokenizer (
CLIPTokenizer, opsional) — Tokenizer dari kelas CLIPTokenizer. - tokenizer_2 (
T5TokenizerFast, opsional) — Tokenizer kedua dari kelas T5TokenizerFast.
Pipeline Flux Redux untuk generasi gambar-ke-gambar.
Referensi: https://blackforestlabs.ai/flux-1-tools/
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneprompt_embeds_scale: float | list[float] | None = 1.0pooled_prompt_embeds_scale: float | list[float] | None = 1.0return_dict: bool = True ) → ~pipelines.flux.FluxPriorReduxPipelineOutput or tuple
Parameter
- 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) - prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. fitur eksperimental: untuk menggunakan fitur ini, pastikan untuk memuat text encoder secara eksplisit ke pipeline. Prompt akan diabaikan jika text encoder tidak dimuat. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. - prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. penimbangan prompt. - pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks terpool yang telah dibuat sebelumnya. - prompt_embeds_scale (
floatataulist[float], opsional, default 1.0) — Faktor skala (atau daftar faktor skala per gambar) yang diterapkan pada redux prompt embeddings sebelum dikembalikan. - pooled_prompt_embeds_scale (
floatataulist[float], opsional, default 1.0) — Faktor skala (atau daftar faktor skala per gambar) yang diterapkan pada redux pooled prompt embeddings sebelum mereka dikembalikan. - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan~pipelines.flux.FluxPriorReduxPipelineOutputalih-alih tuple biasa.
Mengembalikan
~pipelines.flux.FluxPriorReduxPipelineOutput atau tuple
~pipelines.flux.FluxPriorReduxPipelineOutput jika return_dict bernilai True, selain itu berupa tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxPriorReduxPipeline, FluxPipeline
>>> from diffusers.utils import load_image
>>> device = "cuda"
>>> dtype = torch.bfloat16
>>> repo_redux = "black-forest-labs/FLUX.1-Redux-dev"
>>> repo_base = "black-forest-labs/FLUX.1-dev"
>>> pipe_prior_redux = FluxPriorReduxPipeline.from_pretrained(repo_redux, torch_dtype=dtype).to(device)
>>> pipe = FluxPipeline.from_pretrained(
... repo_base, text_encoder=None, text_encoder_2=None, torch_dtype=torch.bfloat16
... ).to(device)
>>> image = load_image(
... "https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/style_ziggy/img5.png"
... )
>>> pipe_prior_output = pipe_prior_redux(image)
>>> images = pipe(
... guidance_scale=2.5,
... num_inference_steps=50,
... generator=torch.Generator("cpu").manual_seed(0),
... **pipe_prior_output,
... ).images
>>> images[0].save("flux-redux.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxFillPipeline
kelas diffusers.FluxFillPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModel )
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.
Pipeline Flux Fill untuk inpainting/outpainting gambar.
Referensi: https://blackforestlabs.ai/flux-1-tools/
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Optional[torch.FloatTensor] = Nonemask_image: typing.Optional[torch.FloatTensor] = Nonemasked_image_latents: typing.Optional[torch.FloatTensor] = Noneheight: int | None = Nonewidth: int | None = Nonestrength: float = 1.0num_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
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya - 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). - mask_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 di-mask padaimage. Piksel putih pada mask akan di-repaint, sedangkan piksel hitam dipertahankan. Jikamask_imageadalah gambar PIL, gambar tersebut dikonversi menjadi satu channel (luminance) sebelum digunakan. Jika berupa array numpy atau tensor pytorch, array/tensor tersebut harus berisi satu channel warna (L) alih-alih 3, sehingga bentuk yang diharapkan untuk tensor pytorch adalah(B, 1, H, W),(B, H, W),(1, H, W), atau(H, W). Dan untuk array numpy, bentuknya adalah(B, H, W, 1),(B, H, W),(H, W, 1), atau(H, W). - masked_image_latents (
torch.Tensor,list[torch.Tensor]) —Tensoryang mewakili batch gambar untuk memaskerimageyang dihasilkan oleh VAE. Jika tidak disediakan, tensor latens mask akan dihasilkan olehmask_image. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - strength (
float, opsional, default 1.0) — Menunjukkan sejauh mana transformasi dilakukan padaimagereferensi. Nilainya harus antara 0 dan 1.imagedigunakan sebagai titik awal, dan semakin tinggistrength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketikastrengthbernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 1 pada dasarnya mengabaikanimage. - 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.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxFillPipeline
>>> from diffusers.utils import load_image
>>> image = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup.png")
>>> mask = load_image("https://huggingface.co/datasets/YiYiXu/testing-images/resolve/main/cup_mask.png")
>>> pipe = FluxFillPipeline.from_pretrained("black-forest-labs/FLUX.1-Fill-dev", torch_dtype=torch.bfloat16)
>>> pipe.enable_model_cpu_offload() # save some VRAM by offloading the model to CPU
>>> image = pipe(
... prompt="a white paper cup",
... image=image,
... mask_image=mask,
... height=1632,
... width=1232,
... guidance_scale=30,
... num_inference_steps=50,
... max_sequence_length=512,
... generator=torch.Generator("cpu").manual_seed(0),
... ).images[0]
>>> image.save("flux_fill.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxKontextPipeline
kelas diffusers.FluxKontextPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
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.
Pipeline Flux Kontext untuk generasi gambar-ke-gambar dan teks-ke-gambar.
Referensi: https://bfl.ai/announcements/flux-1-kontext-dev
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneprompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_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] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_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 = 512max_area: int = 1048576_auto_resize: bool = True ) → ~pipelines.flux.FluxPipelineOutput or tuple
Parameter
- 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)Parameter ini juga dapat menerima latens gambar sebagaiimage, namun jika latens diberikan secara langsung, latens tersebut tidak akan di-encode ulang. - prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jikatrue_cfg_scaletidak lebih besar dari1). - negative_prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar, yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,negative_promptdigunakan di semua text-encoder. - true_cfg_scale (
float, opsional, default 1.0) — Ketika > 1.0 dannegative_promptdiberikan, mengaktifkan true classifier-free guidance. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - 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, defaultnya 3,5) — Skala panduan tertanam diaktifkan dengan mengaturguidance_scale> 1. Nilai yang lebih tinggi untukguidance_scalemendorong model untuk menghasilkan gambar yang lebih sesuai dengan prompt, dengan mengorbankan kualitas gambar yang lebih rendah.Model yang telah melalui distilasi panduan (guidance-distilled) mengaproksimasi panduan bebas-klasifikator (classifier-free guidance) yang sebenarnya untuk
guidance_scale> 1. Lihat makalah untuk mempelajari lebih lanjut. - 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. - ip_adapter_image — (
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_ip_adapter_image —
(
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - negative_ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate dari argumen inputnegative_prompt. - 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. - max_area (
int, defaultnya1024 ** 2) — Area maksimum dari gambar yang dihasilkan dalam piksel. Tinggi dan lebar akan disesuaikan agar muat dalam area ini sambil mempertahankan rasio aspek. - _auto_resize (
bool, opsional, defaultnyaTrue) — Apakah akan secara otomatis mengubah ukuran gambar input ke resolusi yang disarankan.
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 untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import FluxKontextPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxKontextPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = load_image(
... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png"
... ).convert("RGB")
>>> prompt = "Make Pikachu hold a sign that says 'Black Forest Labs is awesome', yarn art style, detailed, vibrant colors"
>>> image = pipe(
... image=image,
... prompt=prompt,
... guidance_scale=2.5,
... generator=torch.Generator().manual_seed(42),
... ).images[0]
>>> image.save("output.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.
FluxKontextInpaintPipeline
kelas diffusers.FluxKontextInpaintPipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizertext_encoder_2: T5EncoderModeltokenizer_2: T5Tokenizertransformer: FluxTransformer2DModelimage_encoder: CLIPVisionModelWithProjection = Nonefeature_extractor: CLIPImageProcessorPil = None )
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.
Pipeline Flux Kontext untuk generasi teks-ke-gambar.
Referensi: https://blackforestlabs.ai/announcing-black-forest-labs/
__call__
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneimage_reference: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonemask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneprompt: str | list[str] = Noneprompt_2: str | list[str] | None = Nonenegative_prompt: str | list[str] = Nonenegative_prompt_2: str | list[str] | None = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonestrength: float = 1.0padding_mask_crop: int | None = Nonenum_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 3.5num_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] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_ip_adapter_image_embeds: list[torch.Tensor] | None = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_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 = 512max_area: int = 1048576_auto_resize: bool = True ) → ~pipelines.flux.FluxPipelineOutput or tuple
Parameter
- 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 di-inpaint (bagian mana dari gambar yang akan dimask denganmask_imagedan diwarnai ulang sesuai denganpromptdanimage_reference). Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara[0, 1]Jika berupa tensor atau daftar tensor, bentuk 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)Parameter ini juga dapat menerima latents gambar sebagaiimage, namun jika latents diberikan secara langsung, latents tersebut tidak akan di-encode lagi. - image_reference (
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 area yang dimasker. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara[0, 1]Jika berupa tensor atau daftar tensor, bentuk 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)Parameter ini juga dapat menerima latents gambar sebagaiimage, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. - mask_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 di-mask padaimage. Piksel putih pada mask akan di-repaint, sedangkan piksel hitam dipertahankan. Jikamask_imageadalah gambar PIL, gambar tersebut dikonversi menjadi satu channel (luminance) sebelum digunakan. Jika berupa array numpy atau tensor pytorch, array/tensor tersebut harus berisi satu channel warna (L) alih-alih 3, sehingga bentuk yang diharapkan untuk tensor pytorch adalah(B, 1, H, W),(B, H, W),(1, H, W), atau(H, W). Dan untuk array numpy, bentuknya adalah(B, H, W, 1),(B, H, W),(H, W, 1), atau(H, W). - prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptakan digunakan sebagai gantinya. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskannegative_prompt_embedssebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jikatrue_cfg_scaletidak lebih besar dari1). - negative_prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar, yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,negative_promptdigunakan di semua text-encoder. - true_cfg_scale (
float, opsional, default 1.0) — True classifier-free guidance (guidance scale) diaktifkan ketikatrue_cfg_scale> 1 dannegative_promptdisediakan. - height (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel. Nilai ini secara default diatur ke 1024 untuk hasil terbaik. - width (
int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. - strength (
float, opsional, default 1.0) — Menunjukkan sejauh mana transformasi dilakukan padaimagereferensi. Nilainya harus antara 0 dan 1.imagedigunakan sebagai titik awal, dan semakin tinggistrength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketikastrengthbernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalamnum_inference_steps. Nilai 1 pada dasarnya mengabaikanimage. - padding_mask_crop (
int, opsional, defaultNone) — Ukuran margin pada crop yang akan diterapkan ke gambar dan masking. JikaNone, tidak ada crop yang diterapkan ke image dan mask_image. Jikapadding_mask_cropbukanNone, proses akan terlebih dahulu menemukan area persegi panjang dengan rasio aspek yang sama dengan gambar dan mencakup semua area yang di-mask, kemudian memperluas area tersebut berdasarkanpadding_mask_crop. Gambar dan mask_image kemudian akan di-crop berdasarkan area yang telah diperluas sebelum di-resize ke ukuran gambar asli untuk inpainting. Hal ini berguna ketika area yang di-mask kecil sementara gambar besar dan mengandung informasi yang tidak relevan untuk inpainting, seperti latar belakang. - 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, defaultnya 3,5) — Skala panduan tertanam diaktifkan dengan mengaturguidance_scale> 1. Nilai yang lebih tinggi untukguidance_scalemendorong model untuk menghasilkan gambar yang lebih selaras denganpromptdengan mengorbankan kualitas gambar yang lebih rendah.Model yang telah melalui distilasi panduan (guidance-distilled) mengaproksimasi panduan bebas-klasifikator (classifier-free guidance) yang sebenarnya untuk
guidance_scale> 1. Lihat makalah untuk mempelajari lebih lanjut. - 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. - ip_adapter_image — (
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_ip_adapter_image —
(
PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters. - negative_ip_adapter_image_embeds (
list[torch.Tensor], opsional) — Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk(batch_size, num_images, emb_dim). Jika tidak disediakan, embedding dihitung dari argumen inputip_adapter_image. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate dari argumen inputnegative_prompt. - 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. - max_area (
int, defaultnya1024 ** 2) — Area maksimum dari gambar yang dihasilkan dalam piksel. Tinggi dan lebar akan disesuaikan agar muat dalam area ini sambil mempertahankan rasio aspek. - _auto_resize (
bool, opsional, defaultnyaTrue) — Apakah akan secara otomatis mengubah ukuran gambar input ke resolusi yang disarankan.
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 untuk generasi.
Contoh:
Inpainting hanya dengan teks
>>> import torch
>>> from diffusers import FluxKontextInpaintPipeline
>>> from diffusers.utils import load_image
>>> prompt = "Change the yellow dinosaur to green one"
>>> img_url = (
... "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_input.jpeg?raw=true"
... )
>>> mask_url = (
... "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/dinosaur_mask.png?raw=true"
... )
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> pipe = FluxKontextInpaintPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> image = pipe(prompt=prompt, image=source, mask_image=mask, strength=1.0).images[0]
>>> image.save("kontext_inpainting_normal.png")Inpainting dengan kondisioning gambar
>>> import torch
>>> from diffusers import FluxKontextInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = FluxKontextInpaintPipeline.from_pretrained(
... "black-forest-labs/FLUX.1-Kontext-dev", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")
>>> prompt = "Replace this ball"
>>> img_url = "https://images.pexels.com/photos/39362/the-ball-stadion-football-the-pitch-39362.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
>>> mask_url = (
... "https://github.com/ZenAI-Vietnam/Flux-Kontext-pipelines/blob/main/assets/ball_mask.png?raw=true"
... )
>>> image_reference_url = (
... "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTah3x6OL_ECMBaZ5ZlJJhNsyC-OSMLWAI-xw&s"
... )
>>> source = load_image(img_url)
>>> mask = load_image(mask_url)
>>> image_reference = load_image(image_reference_url)
>>> mask = pipe.mask_processor.blur(mask, blur_factor=12)
>>> image = pipe(
... prompt=prompt, image=source, mask_image=mask, image_reference=image_reference, strength=1.0
... ).images[0]
>>> image.save("kontext_inpainting_ref.png")encode_prompt
< source >( prompt: str | list[str]prompt_2: str | list[str] | None = Nonedevice: 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
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - prompt_2 (
strataulist[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ketokenizer_2dantext_encoder_2. Jika tidak didefinisikan,promptdigunakan di semua text-encoder - 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.