Diffusers documentation
Stable Cascade
Stable Cascade
Mô hình này được xây dựng dựa trên kiến trúc Würstchen và điểm khác biệt chính so với các mô hình khác như Stable Diffusion là nó hoạt động trong không gian ẩn nhỏ hơn nhiều. Tại sao điều này lại quan trọng? Không gian ẩn càng nhỏ, việc chạy suy luận càng nhanh và chi phí huấn luyện càng thấp. Không gian ẩn nhỏ đến mức nào? Stable Diffusion sử dụng hệ số nén là 8, khiến một hình ảnh 1024x1024 được mã hóa thành 128x128. Stable Cascade đạt được hệ số nén là 42, nghĩa là có thể mã hóa một hình ảnh 1024x1024 thành 24x24, trong khi vẫn duy trì các bản tái tạo sắc nét. Mô hình có điều kiện văn bản sau đó được huấn luyện trong không gian ẩn nén cao này. Các phiên bản trước của kiến trúc này đã đạt được mức giảm chi phí 16 lần so với Stable Diffusion 1.5.
Do đó, loại mô hình này rất phù hợp cho các trường hợp sử dụng mà hiệu quả là yếu tố quan trọng. Hơn nữa, tất cả các phần mở rộng đã biết như finetuning, LoRA, ControlNet, IP-Adapter, LCM v.v. đều có thể được thực hiện với phương pháp này.
Mã nguồn gốc có thể được tìm thấy tại Stability-AI/StableCascade.
Tổng quan về Mô hình
Stable Cascade bao gồm ba mô hình: Stage A, Stage B và Stage C, đại diện cho một chuỗi liên tiếp để tạo hình ảnh, do đó có tên gọi là “Stable Cascade”.
Stage A & B được sử dụng để nén hình ảnh, tương tự như vai trò của VAE trong Stable Diffusion. Tuy nhiên, với cấu hình này, mức độ nén hình ảnh cao hơn nhiều có thể đạt được. Trong khi các mô hình Stable Diffusion sử dụng hệ số nén không gian là 8, mã hóa một hình ảnh có độ phân giải 1024 x 1024 thành 128 x 128, Stable Cascade đạt được hệ số nén là 42. Điều này mã hóa một hình ảnh 1024 x 1024 thành 24 x 24, trong khi vẫn có thể giải mã chính xác hình ảnh. Điều này mang lại lợi ích lớn là chi phí huấn luyện và suy luận thấp hơn. Hơn nữa, Stage C chịu trách nhiệm tạo ra các latent nhỏ 24 x 24 dựa trên một prompt văn bản.
Mô hình Stage C hoạt động trên các latents nhỏ 24 x 24 và khử nhiễu các latents dựa trên các prompt văn bản. Mô hình này cũng là thành phần lớn nhất trong pipeline Cascade và được thiết kế để sử dụng cùng với StableCascadePriorPipeline
Các mô hình Stage B và Stage A được sử dụng cùng với StableCascadeDecoderPipeline và chịu trách nhiệm tạo ra hình ảnh cuối cùng dựa trên các latents nhỏ 24 x 24.
Có một số hạn chế về các kiểu dữ liệu có thể được sử dụng với các mô hình Stable Cascade. Các checkpoint chính thức cho
StableCascadePriorPipelinekhông hỗ trợ kiểu dữ liệutorch.float16. Vui lòng sử dụngtorch.bfloat16thay thế.Để sử dụng kiểu dữ liệu
torch.bfloat16vớiStableCascadeDecoderPipeline, bạn cần cài đặt PyTorch 2.2.0 hoặc cao hơn. Điều này cũng có nghĩa là việc sử dụngStableCascadeCombinedPipelinevớitorch.bfloat16yêu cầu PyTorch 2.2.0 hoặc cao hơn, vì nó gọiStableCascadeDecoderPipelinebên trong.Nếu không thể cài đặt PyTorch 2.2.0 hoặc cao hơn trong môi trường của bạn,
StableCascadeDecoderPipelinecó thể được sử dụng độc lập với kiểu dữ liệutorch.float16. Bạn có thể tải xuống trọng số phiên bản độ chính xác đầy đủ hoặcbf16cho pipeline và chuyển đổi trọng số sangtorch.float16.
Ví dụ sử dụng
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")Sử dụng các phiên bản Lite của mô hình Stage B và Stage C
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")Tải checkpoint gốc bằng from_single_file
Việc nạp checkpoint ở định dạng gốc được hỗ trợ thông qua phương thức from_single_file trong StableCascadeUNet.
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")Cách sử dụng
Sử dụng trực tiếp
Mô hình hiện được thiết kế cho mục đích nghiên cứu. Các lĩnh vực và tác vụ nghiên cứu có thể bao gồm
- Nghiên cứu về các mô hình sinh.
- Triển khai an toàn các mô hình có khả năng tạo ra nội dung gây hại.
- Khảo sát và hiểu rõ các hạn chế và thiên kiến của các mô hình sinh.
- Tạo tác phẩm nghệ thuật và sử dụng trong thiết kế cũng như các quy trình nghệ thuật khác.
- Ứng dụng trong các công cụ giáo dục hoặc sáng tạo.
Các trường hợp bị loại trừ được mô tả bên dưới.
Sử dụng ngoài phạm vi
Mô hình không được huấn luyện để tạo ra các biểu diễn chính xác hoặc chân thực về con người hoặc sự kiện, do đó việc sử dụng mô hình để tạo ra các nội dung như vậy nằm ngoài phạm vi khả năng của mô hình này. Mô hình không được sử dụng theo bất kỳ cách nào vi phạm Chính sách Sử dụng Được Chấp nhận của Stability AI.
Hạn chế và Thiên kiến
Hạn chế
- Khuôn mặt và con người nói chung có thể không được tạo ra một cách chính xác.
- Phần tự mã hóa của mô hình là có tổn hao.
StableCascadeCombinedPipeline
lớp diffusers.StableCascadeCombinedPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Tham số
- tokenizer (
CLIPTokenizer) — Tokenizer giải mã được sử dụng cho các đầu vào văn bản. - text_encoder (
CLIPTextModelWithProjection) — Bộ mã hóa văn bản giải mã được sử dụng cho các đầu vào văn bản. - decoder (
StableCascadeUNet) — Mô hình decoder được sử dụng cho pipeline tạo ảnh decoder. - scheduler (
DDPMWuerstchenScheduler) — Trình lập lịch được sử dụng cho pipeline tạo ảnh giải mã. - vqgan (
PaellaVQModel) — Mô hình VQGAN được sử dụng cho pipeline tạo ảnh bằng decoder. - prior_prior (
StableCascadeUNet) — Mô hình prior được sử dụng cho pipeline prior. - prior_text_encoder (
CLIPTextModelWithProjection) — Bộ mã hóa văn bản trước (prior text encoder) được sử dụng cho các đầu vào văn bản. - prior_tokenizer (
CLIPTokenizer) — Tokenizer trước được sử dụng cho các đầu vào văn bản. - prior_scheduler (
DDPMWuerstchenScheduler) — Trình lập lịch được sử dụng cho pipeline prior. - prior_feature_extractor (CLIPImageProcessor) —
Mô hình trích xuất đặc trưng từ các hình ảnh được tạo ra để sử dụng làm đầu vào cho
image_encoder. - prior_image_encoder (
CLIPVisionModelWithProjection) — Bộ mã hóa ảnh CLIP đóng băng (clip-vit-large-patch14).
Pipeline kết hợp cho việc tạo ảnh từ văn bản sử dụng Stable Cascade.
Mô hình này kế thừa từ DiffusionPipeline. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các pipeline (chẳng hạn như tải xuống hoặc lưu, chạy trên một thiết bị cụ thể, v.v.)
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Tham số
- prompt (
strhoặclist[str]) — Prompt hoặc các prompt để hướng dẫn tạo ảnh cho prior và decoder. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image], tùy chọn) — Các hình ảnh để hướng dẫn việc tạo hình ảnh cho prior. - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng việc tạo ảnh. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếuguidance_scalenhỏ hơn1). - prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản đã tạo sẵn cho prior. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản sẽ được tạo từ đối số đầu vàoprompt. - prompt_embeds_pooled (
torch.Tensor, tùy chọn) — Các embedding văn bản đã tạo sẵn cho prior. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản sẽ được tạo từ đối số đầu vàoprompt. - negative_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản âm đã được tạo trước cho prior. Có thể được sử dụng để dễ dàng điều chỉnh các đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vàonegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, tùy chọn) — Các embedding văn bản âm đã được tạo trước cho prior. Có thể được sử dụng để dễ dàng điều chỉnh các đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vàonegative_prompt. - num_images_per_prompt (
int, tùy chọn, mặc định là 1) — Số lượng hình ảnh cần tạo cho mỗi prompt. - height (
int, tùy chọn, mặc định là 512) — Chiều cao của hình ảnh được tạo ra, tính bằng pixel. - width (
int, tùy chọn, mặc định là 512) — Chiều rộng của hình ảnh được tạo ra, tính bằng pixel. - prior_guidance_scale (
float, tùy chọn, mặc định là 4.0) — Thang độ dẫn hướng như được định nghĩa trong Classifier-Free Diffusion Guidance.prior_guidance_scaleđược định nghĩa làwcủa phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặtprior_guidance_scale > 1. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các hình ảnh liên kết chặt chẽ vớipromptvăn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn. - prior_num_inference_steps (
int | dict[float, int], tùy chọn, mặc định là 60) — Số bước khử nhiễu tiên nghiệm. Nhiều bước khử nhiễu hơn thường dẫn đến hình ảnh có chất lượng cao hơn với chi phí là suy luận chậm hơn. Để có khoảng cách bước thời gian cụ thể hơn, bạn có thể truyềnprior_timestepstùy chỉnh - num_inference_steps (
int, tùy chọn, mặc định là 12) — Số bước khử nhiễu của bộ giải mã. Số bước khử nhiễu nhiều hơn thường dẫn đến hình ảnh có chất lượng cao hơn, với cái giá là suy luận chậm hơn. Để có khoảng cách bước thời gian cụ thể hơn, bạn có thể truyềntimestepstùy chỉnh - decoder_guidance_scale (
float, tùy chọn, mặc định là 0.0) — Thang độ dẫn hướng như được định nghĩa trong Classifier-Free Diffusion Guidance.guidance_scaleđược định nghĩa làwcủa phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặtguidance_scale > 1. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các hình ảnh gắn kết chặt chẽ vớipromptvăn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn. - generator (
torch.Generatorhoặclist[torch.Generator], tuỳ chọn) — Một hoặc một danh sách torch generator để đảm bảo quá trình sinh là tất định. - latents (
torch.Tensor, tùy chọn) — Các latents nhiễu đã được tạo trước, lấy mẫu từ phân phối Gaussian, dùng làm đầu vào cho việc tạo ảnh. Có thể dùng để tinh chỉnh cùng một quá trình tạo với các prompt khác nhau. Nếu không được cung cấp, một tensor latents sẽ được tạo bằng cách lấy mẫu sử dụnggeneratorngẫu nhiên được cung cấp. - output_type (
str, tùy chọn, mặc định là"pil") — Định dạng đầu ra của ảnh được tạo. Chọn một trong các tùy chọn:"pil"(PIL.Image.Image),"np"(np.array) hoặc"pt"(torch.Tensor). - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một ImagePipelineOutput thay vì một tuple thông thường hay không. - prior_callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước denoising trong quá trình suy luận. Hàm này được gọi với các đối số sau:prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). - prior_callback_on_step_end_tensor_inputs (
list, tùy chọn) — Danh sách các tensor đầu vào cho hàmprior_callback_on_step_end. Các tensor được chỉ định trong danh sách sẽ được truyền dưới dạng tham sốcallback_kwargs. Bạn chỉ có thể bao gồm các biến được liệt kê trong thuộc tính._callback_tensor_inputscủa lớp pipeline của bạn. - callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước khử nhiễu trong quá trình suy luận. Hàm này được gọi với các đối số sau:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargssẽ bao gồm danh sách tất cả các tensor như được chỉ định bởicallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, optional) — Danh sách các tensor đầu vào cho hàmcallback_on_step_end. Các tensor được chỉ định trong danh sách sẽ được truyền dưới dạng tham sốcallback_kwargs. Bạn chỉ có thể bao gồm các biến được liệt kê trong thuộc tính._callback_tensor_inputscủa lớp pipeline của bạn.
Hàm được gọi khi gọi pipeline cho việc sinh.
Ví dụ:
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline
>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
... "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Tải tất cả các mô hình xuống CPU bằng accelerate, giảm mức sử dụng bộ nhớ với tác động thấp đến hiệu suất. So với enable_sequential_cpu_offload, phương pháp này di chuyển toàn bộ một mô hình lên GPU mỗi khi phương thức forward của nó được gọi, và mô hình sẽ ở lại trên GPU cho đến khi mô hình tiếp theo chạy. Mức tiết kiệm bộ nhớ thấp hơn so với enable_sequential_cpu_offload, nhưng hiệu suất tốt hơn nhiều nhờ việc thực hiện lặp lại của unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Tải xuống tất cả các mô hình (state dicts của unet, text_encoder, vae và safety checker) xuống CPU bằng 🤗
Accelerate, giảm đáng kể lượng bộ nhớ sử dụng. Các mô hình được chuyển đến torch.device('meta') và chỉ được nạp lên
GPU khi phương thức forward của submodule cụ thể của chúng được gọi. Việc offload diễn ra theo từng submodule.
Lượng bộ nhớ tiết kiệm được cao hơn so với việc sử dụng enable_model_cpu_offload, nhưng hiệu suất thấp hơn.
StableCascadePriorPipeline
lớp diffusers.StableCascadePriorPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Tham số
- prior (
StableCascadeUNet) — Mô hình prior của Stable Cascade để xấp xỉ embedding ảnh từ embedding văn bản và/hoặc embedding ảnh. - text_encoder (
CLIPTextModelWithProjection) — Bộ mã hóa văn bản đóng băng (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). - feature_extractor (CLIPImageProcessor) —
Mô hình trích xuất đặc trưng từ các hình ảnh được tạo ra để sử dụng làm đầu vào cho
image_encoder. - image_encoder (
CLIPVisionModelWithProjection) — Bộ mã hóa ảnh CLIP được đóng băng (clip-vit-large-patch14). - tokenizer (
CLIPTokenizer) — Tokenizer của lớp CLIPTokenizer. - scheduler (
DDPMWuerstchenScheduler) — Một scheduler được sử dụng kết hợp vớipriorđể tạo embedding ảnh. - resolution_multiple (‘float’, tùy chọn, mặc định là 42.67) — Độ phân giải mặc định cho nhiều hình ảnh được tạo ra.
Pipeline để tạo prior cho ảnh trong Stable Cascade.
Mô hình này kế thừa từ DiffusionPipeline. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các pipeline (chẳng hạn như tải xuống hoặc lưu, chạy trên một thiết bị cụ thể, v.v.)
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Tham số
- prompt (
strhoặclist[str]) — Prompt hoặc các prompt để định hướng việc tạo ảnh. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor]hoặclist[PIL.Image.Image], tùy chọn) — Hình ảnh tham chiếu được sử dụng để điều kiện hóa quá trình sinh. Khi được cung cấp, các embedding hình ảnh sẽ được suy ra từ hình ảnh và kết hợp với prompt văn bản. - height (
int, tùy chọn, mặc định là 1024) — Chiều cao của hình ảnh được tạo ra, tính bằng pixel. - width (
int, tùy chọn, mặc định là 1024) — Chiều rộng của hình ảnh được tạo ra, tính bằng pixel. - num_inference_steps (
int, tùy chọn, mặc định là 60) — Số bước khử nhiễu. Số bước khử nhiễu nhiều hơn thường dẫn đến hình ảnh có chất lượng cao hơn với chi phí là suy luận chậm hơn. - timesteps (
list[float], tùy chọn) — Các bước thời gian tùy chỉnh để sử dụng cho quá trình khử nhiễu với các trình lập lịch hỗ trợ đối sốtimestepstrong phương thứcset_timestepscủa chúng. Nếu không được định nghĩa, hành vi mặc định khinum_inference_stepsđược truyền vào sẽ được sử dụng. Phải được sắp xếp theo thứ tự giảm dần. - guidance_scale (
float, tùy chọn, mặc định là 8.0) — Thang độ dẫn hướng như được định nghĩa trong Classifier-Free Diffusion Guidance.decoder_guidance_scaleđược định nghĩa làwcủa phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặtdecoder_guidance_scale > 1. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các hình ảnh liên kết chặt chẽ vớipromptvăn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn. - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng việc tạo ảnh. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếudecoder_guidance_scalenhỏ hơn1). - prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản sẽ được tạo từ đối số đầu vàoprompt. - prompt_embeds_pooled (
torch.Tensor, tùy chọn) — Các embedding văn bản pooled đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản pooled sẽ được tạo từ đối số đầu vàoprompt. - negative_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vàonegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, tùy chọn) — Các embedding văn bản pooled âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds_pooled sẽ được tạo từ đối số đầu vàonegative_prompt. - image_embeds (
torch.Tensor, tùy chọn) — Các embedding hình ảnh đã được tạo trước. Có thể được sử dụng để dễ dàng điều chỉnh đầu vào hình ảnh, vd. trọng số prompt. Nếu không được cung cấp, các embedding hình ảnh sẽ được tạo từ đối số đầu vàoimagenếu có. - num_images_per_prompt (
int, tùy chọn, mặc định là 1) — Số lượng hình ảnh cần tạo cho mỗi prompt. - generator (
torch.Generatorhoặclist[torch.Generator], tuỳ chọn) — Một hoặc một danh sách torch generator để đảm bảo quá trình sinh là tất định. - latents (
torch.Tensor, tùy chọn) — Các latents nhiễu đã được tạo trước, lấy mẫu từ phân phối Gaussian, dùng làm đầu vào cho việc tạo ảnh. Có thể dùng để tinh chỉnh cùng một quá trình tạo với các prompt khác nhau. Nếu không được cung cấp, một tensor latents sẽ được tạo bằng cách lấy mẫu sử dụnggeneratorngẫu nhiên được cung cấp. - output_type (
str, tùy chọn, mặc định là"pil") — Định dạng đầu ra của ảnh được tạo. Chọn một trong các tùy chọn:"pil"(PIL.Image.Image),"np"(np.array) hoặc"pt"(torch.Tensor). - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một ImagePipelineOutput thay vì một tuple thông thường hay không. - callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước khử nhiễu trong quá trình suy luận. Hàm này được gọi với các đối số sau:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargssẽ bao gồm danh sách tất cả các tensor như được chỉ định bởicallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, optional) — Danh sách các tensor đầu vào cho hàmcallback_on_step_end. Các tensor được chỉ định trong danh sách sẽ được truyền dưới dạng tham sốcallback_kwargs. Bạn chỉ có thể bao gồm các biến được liệt kê trong thuộc tính._callback_tensor_inputscủa lớp pipeline của bạn.
Hàm được gọi khi gọi pipeline cho việc sinh.
Ví dụ:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)StableCascadePriorPipelineOutput
lớp diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput
< source >( image_embeddings: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray] )
Lớp đầu ra cho WuerstchenPriorPipeline.
StableCascadeDecoderPipeline
lớp diffusers.StableCascadeDecoderPipeline
< source >( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_dim_scale: float = 10.67 )
Tham số
- tokenizer (
CLIPTokenizer) — Tokenizer của CLIP. - text_encoder (
CLIPTextModelWithProjection) — Bộ mã hóa văn bản CLIP. - decoder (
StableCascadeUNet) — Unet của bộ giải mã Stable Cascade. - vqgan (
PaellaVQModel) — Mô hình VQGAN. - scheduler (
DDPMWuerstchenScheduler) — Một scheduler được sử dụng kết hợp vớipriorđể tạo embedding ảnh. - latent_dim_scale (float,
optional, mặc định là 10.67) — Hệ số nhân để xác định kích thước không gian tiềm ẩn VQ từ các nhúng ảnh. Nếu các nhúng ảnh có height=24 và width=24, thì hình dạng tiềm ẩn VQ cần phải là height=int(2410.67)=256 và width=int(2410.67)=256 để khớp với các điều kiện huấn luyện.
Pipeline để tạo hình ảnh từ mô hình Stable Cascade.
Mô hình này kế thừa từ DiffusionPipeline. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các pipeline (chẳng hạn như tải xuống hoặc lưu, chạy trên một thiết bị cụ thể, v.v.)
__call__
< source >( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Tham số
- image_embeddings (
torch.Tensorhoặclist[torch.Tensor]) — Image Embeddings được trích xuất từ một hình ảnh hoặc được tạo ra bởi một Prior Model. - prompt (
strhoặclist[str]) — Prompt hoặc các prompt để định hướng việc tạo ảnh. - num_inference_steps (
int, tùy chọn, mặc định là 12) — Số bước khử nhiễu. Số bước khử nhiễu nhiều hơn thường dẫn đến hình ảnh có chất lượng cao hơn với chi phí là suy luận chậm hơn. - guidance_scale (
float, tùy chọn, mặc định là 0.0) — Thang độ dẫn hướng như được định nghĩa trong Classifier-Free Diffusion Guidance.decoder_guidance_scaleđược định nghĩa làwcủa phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặtdecoder_guidance_scale > 1. Thang độ dẫn hướng cao hơn khuyến khích tạo ra các hình ảnh liên kết chặt chẽ vớipromptvăn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn. - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng việc tạo ảnh. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếudecoder_guidance_scalenhỏ hơn1). - prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản sẽ được tạo từ đối số đầu vàoprompt. - prompt_embeds_pooled (
torch.Tensor, tùy chọn) — Các embedding văn bản pooled đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, các embedding văn bản pooled sẽ được tạo từ đối số đầu vàoprompt. - negative_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vàonegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, tùy chọn) — Các embedding văn bản pooled âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, vd. trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds_pooled sẽ được tạo từ đối số đầu vàonegative_prompt. - num_images_per_prompt (
int, tùy chọn, mặc định là 1) — Số lượng hình ảnh cần tạo cho mỗi prompt. - generator (
torch.Generatorhoặclist[torch.Generator], tuỳ chọn) — Một hoặc một danh sách torch generator để đảm bảo quá trình sinh là tất định. - latents (
torch.Tensor, tùy chọn) — Các latents nhiễu đã được tạo trước, lấy mẫu từ phân phối Gaussian, dùng làm đầu vào cho việc tạo ảnh. Có thể dùng để tinh chỉnh cùng một quá trình tạo với các prompt khác nhau. Nếu không được cung cấp, một tensor latents sẽ được tạo bằng cách lấy mẫu sử dụnggeneratorngẫu nhiên được cung cấp. - output_type (
str, tùy chọn, mặc định là"pil") — Định dạng đầu ra của ảnh được tạo. Chọn một trong các tùy chọn:"pil"(PIL.Image.Image),"np"(np.array) hoặc"pt"(torch.Tensor). - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một ImagePipelineOutput thay vì một tuple thông thường hay không. - callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước khử nhiễu trong quá trình suy luận. Hàm này được gọi với các đối số sau:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargssẽ bao gồm danh sách tất cả các tensor như được chỉ định bởicallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, optional) — Danh sách các tensor đầu vào cho hàmcallback_on_step_end. Các tensor được chỉ định trong danh sách sẽ được truyền dưới dạng tham sốcallback_kwargs. Bạn chỉ có thể bao gồm các biến được liệt kê trong thuộc tính._callback_tensor_inputscủa lớp pipeline của bạn.
Hàm được gọi khi gọi pipeline cho việc sinh.
Ví dụ:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
... "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)