Diffusers documentation

Variasi gambar

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Variasi gambar

Model Stable Diffusion juga dapat menghasilkan variasi dari gambar input. Model ini menggunakan versi fine-tuned dari model Stable Diffusion oleh Justin Pinkney dari Lambda.

Kodebase asli dapat ditemukan di LambdaLabsML/lambda-diffusers dan checkpoint resmi tambahan untuk variasi gambar dapat ditemukan di lambdalabs/sd-image-variations-diffusers.

Pastikan untuk melihat bagian Tips Stable Diffusion untuk mempelajari cara mengeksplorasi tradeoff antara kecepatan dan kualitas scheduler, serta cara menggunakan ulang komponen pipeline secara efisien!

StableDiffusionImageVariationPipeline

kelas diffusers.StableDiffusionImageVariationPipeline

< >

( vae: AutoencoderKLimage_encoder: CLIPVisionModelWithProjectionunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilrequires_safety_checker: bool = True )

Parameter

  • vae (AutoencoderKL) — Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.
  • image_encoder (CLIPVisionModelWithProjection) — Encoder gambar CLIP yang dibekukan (clip-vit-large-patch14).
  • text_encoder (CLIPTextModel) — Text-encoder yang dibekukan (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — CLIPTokenizer untuk melakukan tokenisasi teks.
  • unet (UNet2DConditionModel) — UNet2DConditionModel untuk menghilangkan noise pada latens gambar yang telah dienkod.
  • scheduler (SchedulerMixin) — Scheduler yang digunakan bersama dengan unet untuk menghilangkan noise pada latens gambar yang telah dikodekan. Bisa berupa salah satu dari DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Modul klasifikasi yang memperkirakan apakah gambar yang dihasilkan dapat dianggap ofensif atau berbahaya. Silakan lihat model card untuk detail lebih lanjut tentang potensi bahaya suatu model.
  • feature_extractor (CLIPImageProcessor) — CLIPImageProcessor untuk mengekstrak fitur dari gambar yang dihasilkan; digunakan sebagai input untuk safety_checker.

Pipeline untuk menghasilkan variasi gambar dari gambar input menggunakan Stable Diffusion.

Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

__call__

< >

( image: typing.Union[PIL.Image.Image, list[PIL.Image.Image], torch.Tensor]height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50guidance_scale: float = 7.5num_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1 ) → StableDiffusionPipelineOutput or tuple

Parameter

  • image (PIL.Image.Image atau list[PIL.Image.Image] atau torch.Tensor) — Gambar atau beberapa gambar untuk memandu pembuatan gambar. Jika Anda menyediakan tensor, tensor tersebut harus kompatibel dengan CLIPImageProcessor.
  • height (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) — Tinggi gambar yang dihasilkan dalam piksel.
  • width (int, opsional, default self.unet.config.sample_size * self.vae_scale_factor) — Lebar gambar yang dihasilkan dalam piksel.
  • 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. Parameter ini dimodulasi oleh strength.
  • guidance_scale (float, opsional, default 7.5) — Nilai guidance scale yang lebih tinggi mendorong model untuk menghasilkan gambar yang sangat terkait dengan prompt teks, dengan mengorbankan kualitas gambar yang lebih rendah. Guidance scale diaktifkan ketika guidance_scale > 1.
  • num_images_per_prompt (int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt.
  • eta (float, opsional, default 0.0) — Bersesuaian dengan parameter eta (η) dari paper DDIM. Hanya berlaku untuk DDIMScheduler, dan diabaikan pada scheduler lainnya.
  • generator (torch.Generator atau list[torch.Generator], opsional) — torch.Generator untuk membuat generasi menjadi deterministik.
  • latents (torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dan diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakan generator acak yang diberikan.
  • output_type (str, opsional, default "pil") — Format output dari gambar yang dihasilkan. Pilih antara PIL.Image atau np.array.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa.
  • callback (Callable, opsional) — Fungsi yang dipanggil setiap callback_steps langkah selama inferensi. Fungsi ini dipanggil dengan argumen berikut: callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int, opsional, default 1) — Frekuensi pemanggilan fungsi callback. Jika tidak ditentukan, callback dipanggil pada setiap langkah.

Mengembalikan

StableDiffusionPipelineOutput atau tuple

Jika return_dict adalah True, StableDiffusionPipelineOutput dikembalikan, sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah daftar berisi gambar yang dihasilkan dan elemen kedua adalah daftar bool yang menunjukkan apakah gambar yang dihasilkan yang sesuai mengandung konten “not-safe-for-work” (nsfw).

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

from diffusers import StableDiffusionImageVariationPipeline
from PIL import Image
from io import BytesIO
import requests

pipe = StableDiffusionImageVariationPipeline.from_pretrained(
    "lambdalabs/sd-image-variations-diffusers", revision="v2.0"
)
pipe = pipe.to("cuda")

url = "https://lh3.googleusercontent.com/y-iFOHfLTwkuQSUegpwDdgKmOjRSTvPxat63dQLB25xkTs4lhIbRUFeNBWZzYf370g=s1200"

response = requests.get(url)
image = Image.open(BytesIO(response.content)).convert("RGB")

out = pipe(image, num_images_per_prompt=3, guidance_scale=15)
out["images"][0].save("result.jpg")

enable_attention_slicing

< >

( slice_size: str | int = 'auto' )

Parameter

  • slice_size (str atau int, opsional, default "auto") — Jika "auto", input ke attention heads dibagi dua, sehingga attention dihitung dalam dua langkah. Jika "max", jumlah memori yang dihemat maksimal dengan hanya menjalankan satu slice pada satu waktu. Jika angka diberikan, digunakan sebanyak slice sebanyak attention_head_dim // slice_size. Dalam kasus ini, attention_head_dim harus merupakan kelipatan dari slice_size.

Aktifkan perhitungan perhatian terpotong. Ketika opsi ini diaktifkan, modul perhatian membagi tensor input menjadi potongan-potongan untuk menghitung perhatian dalam beberapa langkah. Untuk lebih dari satu kepala perhatian, perhitungan dilakukan secara berurutan untuk setiap kepala. Ini berguna untuk menghemat sebagian memori dengan mengorbankan sedikit penurunan kecepatan.

> ⚠️ Jangan aktifkan attention slicing jika Anda sudah menggunakan scaled_dot_product_attention (SDPA) dari PyTorch > 2.0 atau xFormers. Perhitungan attention ini sudah sangat hemat memori sehingga Anda tidak perlu mengaktifkan > fungsi ini. Jika Anda mengaktifkan attention slicing dengan SDPA atau xFormers, hal itu dapat menyebabkan perlambatan yang serius!

Contoh:

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5",
...     dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing

< >

( )

Nonaktifkan perhitungan perhatian yang dipotong. Jika enable_attention_slicing sebelumnya dipanggil, perhatian dihitung dalam satu langkah.

enable_xformers_memory_efficient_attention

< >

( attention_op: typing.Optional[typing.Callable] = None )

Parameter

  • attention_op (Callable, opsional) — Timpa operator default None untuk digunakan sebagai argumen op pada fungsi memory_efficient_attention() dari xFormers.

Aktifkan perhatian hemat memori dari xFormers. Ketika opsi ini diaktifkan, Anda seharusnya mengamati penggunaan memori GPU yang lebih rendah dan potensi percepatan selama inferensi. Percepatan selama pelatihan tidak dijamin.

> ⚠️ Ketika memory efficient attention dan sliced attention keduanya diaktifkan, memory efficient attention memiliki > prioritas.

Contoh:

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention

< >

( )

Nonaktifkan perhatian hemat memori dari xFormers.

StableDiffusionPipelineOutput

kelas diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarraynsfw_content_detected: list[bool] | None )

Parameter

  • images (list[PIL.Image.Image] atau np.ndarray) — daftar gambar PIL yang telah didenoise dengan panjang batch_size atau array NumPy dengan bentuk (batch_size, height, width, num_channels).
  • nsfw_content_detected (list[bool]) — daftar yang menunjukkan apakah gambar yang dihasilkan yang sesuai mengandung konten “not-safe-for-work” (nsfw) atau None jika pemeriksaan keamanan tidak dapat dilakukan.

Kelas output untuk pipeline Stable Diffusion.

Update on GitHub