Buckets:
| # TCDScheduler | |
| [Trajectory Consistency Distillation](https://huggingface.co/papers/2402.19159) của Jianbin Zheng, Minghui Hu, Zhongyi Fan, Chaoyue Wang, Changxing Ding, Dacheng Tao và Tat-Jen Cham đã giới thiệu Strategic Stochastic Sampling (Algorithm 4), có khả năng tạo ra các mẫu tốt chỉ trong một số lượng nhỏ các bước. Được phân biệt như một phiên bản lặp tiến hóa của trình lập lịch đa bước (Algorithm 1) trong [Consistency Models](https://huggingface.co/papers/2303.01469), Strategic Stochastic Sampling được thiết kế riêng cho hàm nhất quán quỹ đạo. | |
| Tóm tắt từ bài báo là: | |
| *Mô hình nhất quán tiềm ẩn (LCM) mở rộng Mô hình nhất quán sang không gian tiềm ẩn và tận dụng kỹ thuật chưng cất nhất quán có dẫn hướng để đạt được hiệu suất ấn tượng trong việc tăng tốc tổng hợp văn bản thành hình ảnh. Tuy nhiên, chúng tôi nhận thấy rằng LCM gặp khó khăn trong việc tạo ra các hình ảnh vừa rõ nét vừa chi tiết tinh xảo. Để giải quyết hạn chế này, ban đầu chúng tôi đi sâu tìm hiểu và làm sáng tỏ các nguyên nhân gốc rễ. Nghiên cứu của chúng tôi xác định rằng vấn đề chính bắt nguồn từ các lỗi trong ba lĩnh vực riêng biệt. Do đó, chúng tôi giới thiệu Chưng cất nhất quán quỹ đạo (TCD), bao gồm hàm nhất quán quỹ đạo và lấy mẫu ngẫu nhiên chiến lược. Hàm nhất quán quỹ đạo làm giảm các lỗi chưng cất bằng cách mở rộng phạm vi của điều kiện biên tự nhất quán và trang bị cho TCD khả năng theo dõi chính xác toàn bộ quỹ đạo của ODE dòng xác suất. Ngoài ra, lấy mẫu ngẫu nhiên chiến lược được thiết kế đặc biệt để tránh các lỗi tích lũy vốn có trong lấy mẫu nhất quán đa bước, được điều chỉnh tỉ mỉ để bổ trợ cho mô hình TCD. Các thí nghiệm cho thấy TCD không chỉ cải thiện đáng kể chất lượng hình ảnh ở NFE thấp mà còn cho ra kết quả chi tiết hơn so với mô hình giáo viên ở NFE cao.* | |
| Mã nguồn gốc có thể được tìm thấy tại [jabir-zheng/TCD](https://github.com/jabir-zheng/TCD). | |
| ## TCDScheduler[[diffusers.TCDScheduler]] | |
| #### diffusers.TCDScheduler[[diffusers.TCDScheduler]] | |
| ```python | |
| diffusers.TCDScheduler(num_train_timesteps: int = 1000, beta_start: float = 0.00085, beta_end: float = 0.012, beta_schedule: str = 'scaled_linear', trained_betas: numpy.ndarray | list[float] | None = None, original_inference_steps: int = 50, clip_sample: bool = False, clip_sample_range: float = 1.0, set_alpha_to_one: bool = True, steps_offset: int = 0, prediction_type: str = 'epsilon', thresholding: bool = False, dynamic_thresholding_ratio: float = 0.995, sample_max_value: float = 1.0, timestep_spacing: str = 'leading', timestep_scaling: float = 10.0, rescale_betas_zero_snr: bool = False) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L141) | |
| **Tham số:** | |
| num_train_timesteps (`int`, mặc định là `1000`) : Số bước khuếch tán để huấn luyện mô hình. | |
| beta_start (`float`, mặc định là `0.00085`) : Giá trị `beta` ban đầu của suy luận. | |
| beta_end (`float`, mặc định là `0.012`) : Giá trị `beta` cuối cùng. | |
| beta_schedule (`str`, mặc định là `"scaled_linear"`) : Lịch trình beta, một ánh xạ từ một khoảng beta sang một chuỗi các beta để bước qua mô hình. Chọn từ `linear`, `scaled_linear`, hoặc `squaredcos_cap_v2`. | |
| trained_betas (`np.ndarray` hoặc `list[float]`, *tùy chọn*) : Truyền một mảng betas trực tiếp vào constructor để bỏ qua `beta_start` và `beta_end`. | |
| original_inference_steps (`int`, mặc định là `50`) : Số bước suy luận mặc định được sử dụng để tạo lịch trình bước thời gian (timestep) phân bố tuyến tính, từ đó chúng ta sẽ lấy `num_inference_steps` bước thời gian phân bố đều để tạo thành lịch trình bước thời gian cuối cùng. | |
| clip_sample (`bool`, mặc định là `False`) : Cắt mẫu dự đoán để đảm bảo ổn định về mặt số học. | |
| clip_sample_range (`float`, mặc định là `1.0`) : Độ lớn tối đa cho việc cắt mẫu. Chỉ hợp lệ khi `clip_sample=True`. | |
| set_alpha_to_one (`bool`, mặc định là `True`) : Mỗi bước khuếch tán sử dụng giá trị tích alpha tại bước đó và tại bước trước đó. Đối với bước cuối cùng, không có alpha trước đó. Khi tùy chọn này là `True`, tích alpha trước đó được cố định là `1`, ngược lại nó sử dụng giá trị alpha tại bước 0. | |
| steps_offset (`int`, mặc định là `0`) : Một giá trị bù được cộng vào các bước suy luận, theo yêu cầu của một số họ mô hình. | |
| prediction_type (`str`, defaults to `"epsilon"`) : Prediction type of the scheduler function; can be `epsilon` (predicts the noise of the diffusion process), `sample` (directly predicts the noisy sample`) or `v_prediction` (see section 2.4 of [Imagen Video](https://huggingface.co/papers/2210.02303) paper). | |
| thresholding (`bool`, mặc định là `False`) : Có sử dụng phương pháp "dynamic thresholding" hay không. Phương pháp này không phù hợp với các mô hình khuếch tán trong không gian ẩn như Stable Diffusion. | |
| dynamic_thresholding_ratio (`float`, mặc định là `0.995`) : Tỷ lệ cho phương pháp ngưỡng động. Chỉ hợp lệ khi `thresholding=True`. | |
| sample_max_value (`float`, mặc định là `1.0`) : Giá trị ngưỡng cho việc đặt ngưỡng động. Chỉ hợp lệ khi `thresholding=True`. | |
| timestep_spacing (`str`, mặc định là `"leading"`) : Cách các bước thời gian (timesteps) nên được mở rộng. Xem Bảng 2 trong [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) để biết thêm thông tin. | |
| timestep_scaling (`float`, mặc định là `10.0`) : Hệ số mà các bước thời gian sẽ được nhân khi tính toán các điều kiện biên của mô hình nhất quán `c_skip` và `c_out`. Việc tăng giá trị này sẽ làm giảm sai số xấp xỉ (mặc dù sai số xấp xỉ ở mức mặc định `10.0` đã khá nhỏ). | |
| rescale_betas_zero_snr (`bool`, mặc định là `False`) : Có nên điều chỉnh lại các hệ số beta để có SNR cuối bằng không hay không. Điều này cho phép mô hình tạo ra các mẫu rất sáng và rất tối thay vì giới hạn ở các mẫu có độ sáng trung bình. Liên quan lỏng lẻo đến [`--offset_noise`](https://github.com/huggingface/diffusers/blob/74fd735eb073eb1d774b1ab4154a0876eb82f055/examples/dreambooth/train_dreambooth.py#L506). | |
| `TCDScheduler` tích hợp `Strategic Stochastic Sampling` được giới thiệu bởi bài báo `Trajectory Consistency Distillation`, mở rộng Multistep Consistency Sampling ban đầu để cho phép duyệt quỹ đạo không bị hạn chế. | |
| Mã này dựa trên kho lưu trữ chính thức của TCD(https://github.com/jabir-zheng/TCD). | |
| Mô hình này kế thừa từ [SchedulerMixin](/docs/diffusers/main/vi/api/schedulers/overview#diffusers.SchedulerMixin) và [ConfigMixin](/docs/diffusers/main/vi/api/configuration#diffusers.ConfigMixin). [~ConfigMixin](/docs/diffusers/main/vi/api/configuration#diffusers.ConfigMixin) chịu trách nhiệm lưu trữ tất cả các thuộc tính cấu hình được truyền vào hàm `__init__` của scheduler, chẳng hạn như `num_train_timesteps`. Chúng có thể được truy cập thông qua `scheduler.config.num_train_timesteps`. [SchedulerMixin](/docs/diffusers/main/vi/api/schedulers/overview#diffusers.SchedulerMixin) cung cấp chức năng tải và lưu trữ chung thông qua các hàm [SchedulerMixin.save_pretrained()](/docs/diffusers/main/vi/api/schedulers/overview#diffusers.SchedulerMixin.save_pretrained) và [from_pretrained()](/docs/diffusers/main/vi/api/schedulers/overview#diffusers.SchedulerMixin.from_pretrained). | |
| #### add_noise[[diffusers.TCDScheduler.add_noise]] | |
| ```python | |
| add_noise(original_samples: Tensor, noise: Tensor, timesteps: IntTensor) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L702) | |
| **Tham số:** | |
| original_samples (`torch.Tensor`) : Các mẫu gốc mà nhiễu sẽ được thêm vào. | |
| noise (`torch.Tensor`) : Nhiễu cần thêm vào các mẫu. | |
| timesteps (`torch.IntTensor`) : Các bước thời gian (timesteps) chỉ ra mức độ nhiễu cho từng mẫu. | |
| **Trả về:** `torch.Tensor` | |
| Các mẫu nhiễu. | |
| Thêm nhiễu vào các mẫu gốc theo mức độ nhiễu tại mỗi bước thời gian (đây là quá trình khuếch tán thuận). | |
| #### get_velocity[[diffusers.TCDScheduler.get_velocity]] | |
| ```python | |
| get_velocity(sample: Tensor, noise: Tensor, timesteps: IntTensor) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L745) | |
| **Tham số:** | |
| sample (`torch.Tensor`) : Mẫu đầu vào. | |
| noise (`torch.Tensor`) : Tensor nhiễu. | |
| timesteps (`torch.IntTensor`) : Các bước thời gian (timesteps) cho việc tính toán vận tốc. | |
| **Trả về:** `torch.Tensor` | |
| Tốc độ đã được tính toán. | |
| Tính dự đoán vận tốc từ mẫu và nhiễu theo công thức vận tốc. | |
| #### index_for_timestep[[diffusers.TCDScheduler.index_for_timestep]] | |
| ```python | |
| index_for_timestep(timestep: typing.Union[float, torch.Tensor], schedule_timesteps: typing.Optional[torch.Tensor] = None) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L263) | |
| **Tham số:** | |
| timestep (`float` hoặc `torch.Tensor`) : Giá trị bước thời gian cần tìm trong lịch trình. | |
| schedule_timesteps (`torch.Tensor`, *tùy chọn*) : Lịch trình bước thời gian để tìm kiếm. Nếu là `None`, sẽ sử dụng `self.timesteps`. | |
| **Trả về:** `int` | |
| Chỉ số của bước thời gian trong lịch trình. Đối với bước đầu tiên, trả về chỉ số thứ hai nếu có nhiều kết quả khớp để tránh bỏ qua một sigma khi bắt đầu giữa lịch trình (ví dụ: cho image-to-image). | |
| Tìm chỉ số của một bước thời gian (timestep) cho trước trong lịch trình bước thời gian. | |
| #### previous_timestep[[diffusers.TCDScheduler.previous_timestep]] | |
| ```python | |
| previous_timestep(timestep: int) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L790) | |
| **Tham số:** | |
| timestep (`int`) : Bước thời gian hiện tại. | |
| **Trả về:** `int` hoặc `torch.Tensor` | |
| Bước thời gian trước đó. | |
| Tính bước thời gian trước đó trong chuỗi khuếch tán. | |
| #### scale_model_input[[diffusers.TCDScheduler.scale_model_input]] | |
| ```python | |
| scale_model_input(sample: Tensor, timestep: typing.Union[int, torch.Tensor, NoneType] = None) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L342) | |
| **Tham số:** | |
| sample (`torch.Tensor`) : Mẫu đầu vào. | |
| timestep (`int` hoặc `torch.Tensor`, *tùy chọn*) : Bước thời gian hiện tại trong chuỗi khuếch tán. | |
| **Trả về:** `torch.Tensor` | |
| Một mẫu đầu vào đã được chuẩn hóa. | |
| Đảm bảo khả năng hoán đổi với các trình lập lịch cần mở rộng đầu vào của mô hình khử nhiễu tùy thuộc vào bước thời gian hiện tại. | |
| #### set_begin_index[[diffusers.TCDScheduler.set_begin_index]] | |
| ```python | |
| set_begin_index(begin_index: int = 0) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L332) | |
| **Tham số:** | |
| begin_index (`int`, mặc định là `0`) : Chỉ số bắt đầu cho trình lập lịch. | |
| Đặt chỉ số bắt đầu cho trình lập lịch. Hàm này nên được chạy từ pipeline trước khi suy luận. | |
| #### set_timesteps[[diffusers.TCDScheduler.set_timesteps]] | |
| ```python | |
| set_timesteps(num_inference_steps: int | None = None, device: typing.Union[str, torch.device, NoneType] = None, original_inference_steps: int | None = None, timesteps: list[int] | None = None, strength: float = 1.0) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L432) | |
| **Tham số:** | |
| num_inference_steps (`int`, *optional*) : Số bước khuếch tán được sử dụng khi tạo mẫu bằng một mô hình đã được huấn luyện trước. Nếu được sử dụng, `timesteps` phải là `None`. | |
| device (`str` hoặc `torch.device`, *tuỳ chọn*) : Thiết bị mà các bước thời gian (timesteps) sẽ được chuyển đến. Nếu là `None`, các bước thời gian sẽ không được chuyển. | |
| original_inference_steps (`int`, *optional*) : Số bước suy luận ban đầu, sẽ được dùng để tạo lịch trình bước thời gian phân bố tuyến tính (khác với cài đặt `diffusers` tiêu chuẩn). Sau đó, chúng ta sẽ lấy `num_inference_steps` bước thời gian từ lịch trình này, phân bố đều theo chỉ số, và dùng đó làm lịch trình bước thời gian cuối cùng. Nếu không được đặt, giá trị này sẽ mặc định là thuộc tính `original_inference_steps`. | |
| timesteps (`list[int]`, *optional*) : Các bước thời gian tùy chỉnh được sử dụng để hỗ trợ khoảng cách tùy ý giữa các bước thời gian. Nếu là `None`, chiến lược khoảng cách bước thời gian mặc định với khoảng cách đều giữa các bước thời gian trên lịch trình bước thời gian huấn luyện/chưng cất sẽ được sử dụng. Nếu `timesteps` được truyền vào, `num_inference_steps` phải là `None`. | |
| strength (`float`, mặc định là `1.0`) : Dùng để xác định số bước thời gian (timesteps) được sử dụng cho suy luận khi dùng img2img, inpaint, v.v. | |
| Đặt các bước thời gian rời rạc được sử dụng cho chuỗi khuếch tán (cần chạy trước khi suy luận). | |
| #### bước[[diffusers.TCDScheduler.step]] | |
| ```python | |
| step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: Tensor, eta: float = 0.3, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L594) | |
| **Tham số:** | |
| model_output (`torch.Tensor`) : Đầu ra trực tiếp từ mô hình khuếch tán đã học. | |
| timestep (`int` hoặc `torch.Tensor`) : Bước thời gian rời rạc hiện tại trong chuỗi khuếch tán. | |
| sample (`torch.Tensor`) : Một bản sao mẫu hiện tại được tạo ra bởi quá trình khuếch tán. | |
| eta (`float`, mặc định là `0.3`) : Một tham số ngẫu nhiên (được gọi là `gamma` trong bài báo) được sử dụng để kiểm soát tính ngẫu nhiên ở mỗi bước. Khi eta = 0, nó đại diện cho việc lấy mẫu tất định, trong khi eta = 1 cho thấy việc lấy mẫu ngẫu nhiên hoàn toàn. | |
| generator (`torch.Generator`, *tùy chọn*) : Bộ tạo số ngẫu nhiên. | |
| return_dict (`bool`, mặc định là `True`) : Có nên trả về [TCDSchedulerOutput](/docs/diffusers/main/vi/api/schedulers/tcd#diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput) hay `tuple` hay không. | |
| **Trả về:** [TCDSchedulerOutput](/docs/diffusers/main/vi/api/schedulers/tcd#diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput) hoặc `tuple[torch.Tensor, torch.Tensor]` | |
| If return_dict is `True`, [TCDSchedulerOutput](/docs/diffusers/main/vi/api/schedulers/tcd#diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput) is returned, otherwise a tuple is returned containing the previous sample and the predicted noised sample. | |
| Dự đoán mẫu từ bước thời gian trước đó bằng cách đảo ngược SDE. Hàm này lan truyền quá trình khuếch tán từ các đầu ra của mô hình đã học (thường nhất là nhiễu được dự đoán). | |
| ## TCDSchedulerOutput[[diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput]] | |
| #### diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput[[diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput]] | |
| ```python | |
| diffusers.schedulers.scheduling_tcd.TCDSchedulerOutput(prev_sample: Tensor, pred_noised_sample: typing.Optional[torch.Tensor] = None) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_tcd.py#L35) | |
| **Tham số:** | |
| prev_sample (`torch.Tensor` có shape `(batch_size, num_channels, height, width)` đối với ảnh) : Mẫu `(x_{t-1})` đã tính của bước thời gian trước đó. `prev_sample` nên được dùng làm đầu vào mô hình tiếp theo trong vòng lặp khử nhiễu. | |
| pred_noised_sample (`torch.Tensor` có shape `(batch_size, num_channels, height, width)` đối với ảnh, *optional*) : Mẫu nhiễu dự đoán `(x_{s})` dựa trên đầu ra của mô hình từ bước thời gian hiện tại. | |
| Lớp đầu ra cho kết quả của hàm `step` của trình lập lịch. | |
Xet Storage Details
- Size:
- 17.7 kB
- Xet hash:
- 2b0b7da92994b5aeee161a73bb98ea76b5b75753a8a7ac3b69312e2acf51f85c
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.