Diffusers documentation
HiDreamImage
HiDreamImage
HiDream-I1 của HiDream.ai
Caching cũng có thể tăng tốc suy luận bằng cách lưu trữ và tái sử dụng các kết quả trung gian.
Các model khả dụng
Các mô hình sau đây có sẵn cho pipeline HiDreamImagePipeline:
| Tên mô hình | Mô tả |
|---|---|
HiDream-ai/HiDream-I1-Full | - |
HiDream-ai/HiDream-I1-Dev | - |
HiDream-ai/HiDream-I1-Fast | - |
HiDreamImagePipeline
lớp diffusers.HiDreamImagePipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLtext_encoder: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertext_encoder_2: CLIPTextModelWithProjectiontokenizer_2: CLIPTokenizertext_encoder_3: T5EncoderModeltokenizer_3: T5Tokenizertext_encoder_4: LlamaForCausalLMtokenizer_4: TokenizersBackendtransformer: HiDreamImageTransformer2DModel )
__call__
< source >( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneprompt_3: str | list[str] | None = Noneprompt_4: str | list[str] | None = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Noneguidance_scale: float = 5.0negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenegative_prompt_3: str | list[str] | None = Nonenegative_prompt_4: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.FloatTensor] = Noneprompt_embeds_t5: typing.Optional[torch.FloatTensor] = Noneprompt_embeds_llama3: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds_t5: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds_llama3: typing.Optional[torch.FloatTensor] = Nonepooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueattention_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 = 128**kwargs ) → ~pipelines.hidream_image.HiDreamImagePipelineOutput or tuple
Tham số
- prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt để định hướng việc tạo ảnh. Nếu không được định nghĩa, bạn phải truyềnprompt_embedsthay thế. - prompt_2 (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt sẽ được gửi đếntokenizer_2vàtext_encoder_2. Nếu không được định nghĩa,promptsẽ được sử dụng thay thế. - prompt_3 (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt sẽ được gửi đếntokenizer_3vàtext_encoder_3. Nếu không được định nghĩa,promptsẽ được sử dụng thay thế. - prompt_4 (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt sẽ được gửi đếntokenizer_4vàtext_encoder_4. Nếu không được định nghĩa,promptsẽ được sử dụng thay thế. - height (
int, tùy chọn, mặc định là self.unet.config.sample_size * self.vae_scale_factor) — Chiều cao của hình ảnh được tạo ra, tính bằng pixel. Giá trị mặc định là 1024 để đạt kết quả tốt nhất. - width (
int, tùy chọn, mặc định là self.unet.config.sample_size * self.vae_scale_factor) — Chiều rộng của hình ảnh được tạo ra, tính bằng pixel. Giá trị mặc định là 1024 để đạt kết quả tốt nhất. - num_inference_steps (
int, tùy chọn, mặc định là 50) — 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. - sigmas (
list[float], tùy chọn) — Các sigma 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ốsigmastrong 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 sẽ được sử dụng. - guidance_scale (
float, tuỳ chọn, mặc định là 3.5) — Thang độ dẫn hướng nhúng được kích hoạt bằng cách đặtguidance_scale> 1. Giá trịguidance_scalecao hơn sẽ khuyến khích mô hình tạo ra hình ảnh phù hợp hơn vớipromptnhưng làm giảm chất lượng hình ảnh.Các mô hình Guidance-distilled xấp xỉ true classifer-free guidance cho
guidance_scale> 1. Tham khảo bài báo để tìm hiểu thêm. - 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. Nếu không được định nghĩa, cần truyềnnegative_prompt_embedsthay thế. Bỏ qua khi không sử dụng guidance (tức là bị bỏ qua nếutrue_cfg_scalekhông lớn hơn1). - negative_prompt_2 (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng tạo ảnh, sẽ được gửi đếntokenizer_2vàtext_encoder_2. Nếu không được định nghĩa,negative_promptsẽ được sử dụng cho tất cả các text-encoder. - negative_prompt_3 (
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, sẽ được gửi đếntokenizer_3vàtext_encoder_3. Nếu không được định nghĩa,negative_promptsẽ được sử dụng cho tất cả các text-encoder. - negative_prompt_4 (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng tạo ảnh, sẽ được gửi đếntokenizer_4vàtext_encoder_4. Nếu không được định nghĩa,negative_promptsẽ được sử dụng cho tất cả các text-encoder. - 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.FloatTensor, 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. - prompt_embeds_t5 (
torch.FloatTensor, tùy chọn) — Các embedding văn bản T5 đã đượ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_llama3 (
torch.FloatTensor, tùy chọn) — Các embedding văn bản LLaMA3 đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, ví dụ như 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_t5 (
torch.FloatTensor, tùy chọn) — Các embedding văn bản T5 âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, ví dụ trọng số prompt. Nếu không được cung cấp, các embedding sẽ được tạo từ đối số đầu vàonegative_prompt. - negative_prompt_embeds_llama3 (
torch.FloatTensor, tùy chọn) — Các embedding văn bản LLaMA3 âm đã được tạo trước. Có thể dùng để dễ dàng điều chỉnh đầu vào văn bản, ví dụ trọng số prompt. Nếu không được cung cấp, các embedding sẽ được tạo từ đối số đầu vàonegative_prompt. - pooled_prompt_embeds (
torch.FloatTensor, tùy chọn) — Các embedding văn bản đã được gộp (pooled) 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 đã gộp sẽ được tạo từ đối số đầu vàoprompt. - negative_pooled_prompt_embeds (
torch.FloatTensor, 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, pooled negative_prompt_embeds sẽ được tạo từ đối số đầu vàonegative_prompt. - 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 giữa PIL:PIL.Image.Imagehoặcnp.array. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một~pipelines.flux.FluxPipelineOutputthay vì một tuple thông thường hay không. - attention_kwargs (
dict, tùy chọn) — Một từ điển kwargs, nếu được chỉ định, sẽ được truyền đếnAttentionProcessornhư đã định nghĩa dướiself.processortrong diffusers.models.attention_processor. - 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. - max_sequence_length (
int, mặc định là 128) — Độ dài tối đa của chuỗi để sử dụng vớiprompt.
Trả về
~pipelines.hidream_image.HiDreamImagePipelineOutput hoặc tuple
~pipelines.hidream_image.HiDreamImagePipelineOutput nếu return_dict là True, ngược lại là một tuple. Khi trả về tuple, phần tử đầu tiên là một danh sách chứa các hình ảnh đã được tạo.
Hàm được gọi khi gọi pipeline cho việc sinh.
Ví dụ:
>>> import torch
>>> from transformers import AutoTokenizer, LlamaForCausalLM
>>> from diffusers import HiDreamImagePipeline
>>> tokenizer_4 = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3.1-8B-Instruct")
>>> text_encoder_4 = LlamaForCausalLM.from_pretrained(
... "meta-llama/Meta-Llama-3.1-8B-Instruct",
... output_hidden_states=True,
... output_attentions=True,
... torch_dtype=torch.bfloat16,
... )
>>> pipe = HiDreamImagePipeline.from_pretrained(
... "HiDream-ai/HiDream-I1-Full",
... tokenizer_4=tokenizer_4,
... text_encoder_4=text_encoder_4,
... torch_dtype=torch.bfloat16,
... )
>>> pipe.enable_model_cpu_offload()
>>> image = pipe(
... 'A cat holding a sign that says "Hi-Dreams.ai".',
... height=1024,
... width=1024,
... guidance_scale=5.0,
... num_inference_steps=50,
... generator=torch.Generator("cuda").manual_seed(0),
... ).images[0]
>>> image.save("output.png")HiDreamImagePipelineOutput
lớp diffusers.pipelines.hidream_image.pipeline_output.HiDreamImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Lớp đầu ra cho các pipeline HiDreamImage.