Buckets:
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 (latent space) nhỏ hơn nhiều. Tại sao điều này lại quan trọng? Không gian ẩn càng nhỏ, quá trình suy luận (inference) 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ì khả năng tái tạo sắc nét. Mô hình đ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 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ã hình ảnh một cách chính xác. Đ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 latents 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 của
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 nội dung mang tính sự thật hoặc phản ánh chính xác về con người hay 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[[diffusers.StableCascadeCombinedPipeline]]
diffusers.StableCascadeCombinedPipeline[[diffusers.StableCascadeCombinedPipeline]]
diffusers.StableCascadeCombinedPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, decoder: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, prior_prior: StableCascadeUNet, prior_text_encoder: CLIPTextModelWithProjection, prior_tokenizer: CLIPTokenizer, prior_scheduler: DDPMWuerstchenScheduler, prior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, prior_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 prior pipeline.
prior_text_encoder (CLIPTextModelWithProjection) : Bộ mã hóa văn bản trước đượ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 trước.
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[[diffusers.StableCascadeCombinedPipeline.call]]
__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 512, width: int = 512, prior_num_inference_steps: int = 60, prior_guidance_scale: float = 4.0, num_inference_steps: int = 12, decoder_guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, prior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, prior_callback_on_step_end_tensor_inputs: list[str] = ['latents'], callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
Tham số:
prompt (str hoặc list[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 (str hoặc list[str], tùy chọn) : Prompt hoặc các prompt không được dùng để hướng dẫn việc tạo ảnh. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếu guidance_scale nhỏ hơn 1).
prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã được tạo sẵn 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, các vector nhúng văn bản sẽ được tạo từ đối số đầu vào prompt.
prompt_embeds_pooled (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã được tạo sẵn 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, các vector nhúng văn bản sẽ được tạo từ đối số đầu vào prompt.
negative_prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng 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, ví dụ như trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vào negative_prompt.
negative_prompt_embeds_pooled (torch.Tensor, tùy chọn) : Các vector nhúng 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, ví dụ như trọng số prompt. Nếu không được cung cấp, negative_prompt_embeds sẽ được tạo từ đối số đầu vào negative_prompt.
num_images_per_prompt (int, tuỳ chọn, mặc định là 1) : Số lượng hình ảnh cần tạo cho mỗi prompt.
height (int, tuỳ 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, tuỳ chọn, mặc định là 512) : Độ rộng của hình ảnh được tạo ra, tính bằng pixel.
prior_guidance_scale (float, optional, 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à w của phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặt prior_guidance_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ới prompt vă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 trước đó. 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, đổi lại 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ền prior_timesteps tùy chỉnh
num_inference_steps (int, optional, mặc định là 12) : Số bước khử nhiễu của bộ giải 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, đổi lại 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ền timesteps tùy chỉnh
decoder_guidance_scale (float, optional, 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à w của phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặt guidance_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ới prompt văn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn.
generator (torch.Generator hoặc list[torch.Generator], tùy 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, đượ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ể được sử 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 ra bằng cách lấy mẫu sử dụng generator ngẫ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 hình ả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 khử nhiễu 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, optional) : Danh sách các đầu vào tensor cho hàm prior_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_inputs củ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_kwargs sẽ bao gồm một danh sách tất cả các tensor như được chỉ định bởi callback_on_step_end_tensor_inputs.
callback_on_step_end_tensor_inputs (list, optional) : Danh sách các đầu vào tensor cho hàm 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_inputs của lớp pipeline của bạn.
Trả về:
ImagePipelineOutput hoặc tuple ImagePipelineOutput nếu return_dict là True, ngược lại là một tuple. Khi trả về một tuple, phần tử đầu tiên là một danh sách chứa các hình ảnh đã tạo.
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[[diffusers.StableCascadeCombinedPipeline.enable_model_cpu_offload]]
enable_model_cpu_offload(gpu_id: int | None = None, device: 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[[diffusers.StableCascadeCombinedPipeline.enable_sequential_cpu_offload]]
enable_sequential_cpu_offload(gpu_id: int | None = None, device: 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. Tiết kiệm bộ nhớ 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[[diffusers.StableCascadePriorPipeline]]
diffusers.StableCascadePriorPipeline[[diffusers.StableCascadePriorPipeline]]
diffusers.StableCascadePriorPipeline(tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, prior: StableCascadeUNet, scheduler: DDPMWuerstchenScheduler, resolution_multiple: float = 42.67, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)
Tham số:
prior (StableCascadeUNet) : Stable Cascade prior để 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 đóng băng (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : Tokenizer của lớp CLIPTokenizer.
scheduler (DDPMWuerstchenScheduler) : Một trình lập lịch được sử dụng kết hợp với prior để tạo nhúng hình ả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[[diffusers.StableCascadePriorPipeline.call]]
__call__(prompt: str | list[str] | None = None, images: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = None, height: int = 1024, width: int = 1024, num_inference_steps: int = 20, timesteps: list[float] = None, guidance_scale: float = 4.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, image_embeds: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int | None = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pt', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
Tham số:
prompt (str hoặc list[str]) : Prompt hoặc các prompt để hướng dẫn việc tạo ảnh.
images (torch.Tensor, PIL.Image.Image, list[torch.Tensor] hoặc list[PIL.Image.Image], tuỳ chọn) : Hình ảnh tham chiếu được sử dụng để điều kiện cho quá trình sinh trước. 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, tuỳ 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, tuỳ chọn, mặc định là 1024) : Độ rộng của hình ảnh được tạo ra, tính bằng pixel.
num_inference_steps (int, tuỳ 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, đổi lại là suy luận chậm hơn.
timesteps (list[float], optional) : Các bước thời gian (timesteps) tùy chỉnh để sử dụng cho quá trình khử nhiễu với các trình lập lịch (scheduler) hỗ trợ tham số timesteps trong phương thức set_timesteps của chúng. Nếu không được định nghĩa, hành vi mặc định khi num_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, optional, 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à w của phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặt decoder_guidance_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ới prompt văn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn.
negative_prompt (str hoặc list[str], tùy chọn) : Prompt hoặc các prompt không được dùng để hướng dẫn việc tạo ảnh. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếu decoder_guidance_scale nhỏ hơn 1).
prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã được tạo trước. 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, các vector nhúng văn bản sẽ được tạo từ đối số đầu vào prompt.
prompt_embeds_pooled (torch.Tensor, tùy chọn) : Các embedding văn bản đã được pool sẵn. 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 đã pool sẽ được tạo từ đối số đầu vào prompt.
negative_prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản âm đã được tạo trước. 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ào negative_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ể đượ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_pooled sẽ được tạo từ đối số đầu vào negative_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 các đầ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ào image nếu có.
num_images_per_prompt (int, tuỳ chọn, mặc định là 1) : Số lượng hình ảnh cần tạo cho mỗi prompt.
generator (torch.Generator hoặc list[torch.Generator], tùy 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, đượ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ể được sử 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 ra bằng cách lấy mẫu sử dụng generator ngẫ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 hình ả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_kwargs sẽ bao gồm một danh sách tất cả các tensor như được chỉ định bởi callback_on_step_end_tensor_inputs.
callback_on_step_end_tensor_inputs (list, optional) : Danh sách các đầu vào tensor cho hàm 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_inputs của lớp pipeline của bạn.
Trả về:
StableCascadePriorPipelineOutput hoặc tuple StableCascadePriorPipelineOutput nếu return_dict là True, ngược lại là một tuple. Khi trả về một tuple, phần tử đầu tiên là một danh sách chứa các embedding của hình ảnh đã tạo.
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[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]
diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput[[diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput]]
diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput(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])
Tham số:
image_embeddings (torch.Tensor hoặc np.ndarray) : Nhúng hình ảnh trước cho prompt văn bản
prompt_embeds (torch.Tensor) : Nhúng văn bản cho prompt.
negative_prompt_embeds (torch.Tensor) : Nhúng văn bản cho prompt tiêu cực.
Lớp đầu ra cho WuerstchenPriorPipeline.
StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]
diffusers.StableCascadeDecoderPipeline[[diffusers.StableCascadeDecoderPipeline]]
diffusers.StableCascadeDecoderPipeline(decoder: StableCascadeUNet, tokenizer: CLIPTokenizer, text_encoder: CLIPTextModelWithProjection, scheduler: DDPMWuerstchenScheduler, vqgan: PaellaVQModel, latent_dim_scale: float = 10.67)
Tham số:
tokenizer (CLIPTokenizer) : Bộ phân từ CLIP.
text_encoder (CLIPTextModelWithProjection) : Bộ mã hóa văn bản của CLIP.
decoder (StableCascadeUNet) : unet của bộ giải mã Stable Cascade.
vqgan (PaellaVQModel) : Mô hình VQGAN.
scheduler (DDPMWuerstchenScheduler) : Một trình lập lịch được sử dụng kết hợp với prior để tạo nhúng hình ả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, hình dạng tiềm ẩn VQ cần có 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[[diffusers.StableCascadeDecoderPipeline.call]]
__call__(image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]], prompt: str | list[str] = None, num_inference_steps: int = 10, guidance_scale: float = 0.0, negative_prompt: str | list[str] | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'])
Tham số:
image_embeddings (torch.Tensor hoặc list[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 (str hoặc list[str]) : Prompt hoặc các prompt để hướng dẫn việc tạo ảnh.
num_inference_steps (int, optional, 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 cái giá là suy luận chậm hơn.
guidance_scale (float, optional, 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à w của phương trình 2. trong Imagen Paper. Thang độ dẫn hướng được kích hoạt bằng cách đặt decoder_guidance_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ới prompt văn bản, thường phải đánh đổi bằng chất lượng hình ảnh thấp hơn.
negative_prompt (str hoặc list[str], tùy chọn) : Prompt hoặc các prompt không được dùng để hướng dẫn việc tạo ảnh. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếu decoder_guidance_scale nhỏ hơn 1).
prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản đã được tạo trước. 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, các vector nhúng văn bản sẽ được tạo từ đối số đầu vào prompt.
prompt_embeds_pooled (torch.Tensor, tùy chọn) : Các embedding văn bản đã được pool sẵn. 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 đã pool sẽ được tạo từ đối số đầu vào prompt.
negative_prompt_embeds (torch.Tensor, tùy chọn) : Các vector nhúng văn bản âm đã được tạo trước. 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ào negative_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ể đượ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_pooled sẽ được tạo từ đối số đầu vào negative_prompt.
num_images_per_prompt (int, tuỳ chọn, mặc định là 1) : Số lượng hình ảnh cần tạo cho mỗi prompt.
generator (torch.Generator hoặc list[torch.Generator], tùy 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, đượ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ể được sử 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 ra bằng cách lấy mẫu sử dụng generator ngẫ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 hình ả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_kwargs sẽ bao gồm một danh sách tất cả các tensor như được chỉ định bởi callback_on_step_end_tensor_inputs.
callback_on_step_end_tensor_inputs (list, optional) : Danh sách các đầu vào tensor cho hàm 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_inputs của lớp pipeline của bạn.
Trả về:
ImagePipelineOutput hoặc tuple ImagePipelineOutput nếu return_dict là True, ngược lại là một tuple. Khi trả về một tuple, phần tử đầu tiên là một danh sách chứa các embedding của hình ảnh đã tạo.
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)
Xet Storage Details
- Size:
- 44.3 kB
- Xet hash:
- 49aab6094539d28345bc58085ca0e8f3e94dfc6a80ccb467f9b52753c9d93fd7
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.