Buckets:
UNetMotionModel
Mô hình UNet ban đầu được Ronneberger và cộng sự giới thiệu cho phân đoạn ảnh y sinh, nhưng nó cũng được sử dụng phổ biến trong 🤗 Diffusers vì nó tạo ra các ảnh có cùng kích thước với đầu vào. Đây là một trong những thành phần quan trọng nhất của một hệ thống khuếch tán vì nó hỗ trợ quá trình khuếch tán thực sự. Có một số biến thể của mô hình UNet trong 🤗 Diffusers, tùy thuộc vào số chiều của nó và việc nó có phải là mô hình có điều kiện hay không. Đây là một mô hình UNet 2D.
Tóm tắt từ bài báo là:
Có sự đồng thuận rộng rãi rằng việc huấn luyện thành công các mạng sâu đòi hỏi hàng nghìn mẫu huấn luyện đã được chú thích. Trong bài báo này, chúng tôi trình bày một kiến trúc mạng và chiến lược huấn luyện dựa vào việc sử dụng mạnh mẽ kỹ thuật tăng cường dữ liệu để tận dụng hiệu quả hơn các mẫu đã được chú thích sẵn có. Kiến trúc bao gồm một đường co (contracting path) để nắm bắt ngữ cảnh và một đường mở rộng đối xứng (expanding path) cho phép định vị chính xác. Chúng tôi cho thấy rằng một mạng như vậy có thể được huấn luyện end-to-end từ rất ít hình ảnh và vượt trội hơn so với phương pháp tốt nhất trước đó (một mạng tích chập cửa sổ trượt) trong thử thách ISBI về phân đoạn các cấu trúc thần kinh trong các chồng ảnh hiển vi điện tử. Sử dụng cùng một mạng được huấn luyện trên các ảnh hiển vi ánh sáng truyền qua (tương phản pha và DIC), chúng tôi đã giành chiến thắng trong thử thách theo dõi tế bào ISBI 2015 ở các hạng mục này với khoảng cách lớn. Hơn nữa, mạng này hoạt động nhanh. Việc phân đoạn một ảnh 512x512 mất chưa đến một giây trên một GPU đời mới. Mã nguồn hoàn chỉnh (dựa trên Caffe) và các mạng đã được huấn luyện có sẵn tại http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net.
UNetMotionModel[[diffusers.UNetMotionModel]]
diffusers.UNetMotionModel[[diffusers.UNetMotionModel]]
diffusers.UNetMotionModel(sample_size: int | None = None, in_channels: int = 4, out_channels: int = 4, down_block_types: tuple[str, ...] = ('CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'CrossAttnDownBlockMotion', 'DownBlockMotion'), up_block_types: tuple[str, ...] = ('UpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion', 'CrossAttnUpBlockMotion'), block_out_channels: tuple[int, ...] = (320, 640, 1280, 1280), layers_per_block: int | tuple[int] = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1280, transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1, reverse_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = None, temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] = 1, reverse_temporal_transformer_layers_per_block: int | tuple[int] | tuple[tuple] | None = None, transformer_layers_per_mid_block: int | tuple[int] | None = None, temporal_transformer_layers_per_mid_block: int | tuple[int] | None = 1, use_linear_projection: bool = False, num_attention_heads: int | tuple[int, ...] = 8, motion_max_seq_length: int = 32, motion_num_attention_heads: int | tuple[int, ...] = 8, reverse_motion_num_attention_heads: int | tuple[int, ...] | tuple[tuple[int, ...], ...] | None = None, use_motion_mid_block: bool = True, mid_block_layers: int = 1, encoder_hid_dim: int | None = None, encoder_hid_dim_type: str | None = None, addition_embed_type: str | None = None, addition_time_embed_dim: int | None = None, projection_class_embeddings_input_dim: int | None = None, time_cond_proj_dim: int | None = None)
Một mô hình 2D UNet có điều kiện đã được sửa đổi, nhận vào một mẫu nhiễu, trạng thái có điều kiện và một bước thời gian, sau đó trả về một đầu ra có hình dạng của mẫu.
Mô hình này kế thừa từ ModelMixin. Hãy xem tài liệu của lớp cha để biết các phương thức chung được triển khai cho tất cả các mô hình (chẳng hạn như tải xuống hoặc lưu trữ).
disable_freeu[[diffusers.UNetMotionModel.disable_freeu]]
disable_freeu()
Tắt cơ chế FreeU.
enable_forward_chunking[[diffusers.UNetMotionModel.enable_forward_chunking]]
enable_forward_chunking(chunk_size: int | None = None, dim: int = 0)
Tham số:
chunk_size (int, optional) : Kích thước chunk của các lớp feed-forward. Nếu không được chỉ định, lớp feed-forward sẽ được thực hiện riêng lẻ trên mỗi tensor có dim=dim.
dim (int, optional, mặc định là 0) : Chiều mà phép tính feed-forward nên được chia nhỏ. Chọn giữa dim=0 (batch) hoặc dim=1 (chiều dài chuỗi).
Đặt bộ xử lý chú ý để sử dụng chia nhỏ feed forward.
enable_freeu[[diffusers.UNetMotionModel.enable_freeu]]
enable_freeu(s1: float, s2: float, b1: float, b2: float)
Tham số:
s1 (float) : Hệ số tỷ lệ cho giai đoạn 1 để làm suy giảm đóng góp của các đặc trưng skip. Việc này được thực hiện để giảm thiểu "hiệu ứng làm mịn quá mức" trong quá trình khử nhiễu được tăng cường.
s2 (float) : Hệ số tỷ lệ cho giai đoạn 2 để làm suy giảm đóng góp của các đặc trưng skip. Việc này được thực hiện để giảm thiểu "hiệu ứng làm mịn quá mức" trong quá trình khử nhiễu được tăng cường.
b1 (float) : Hệ số tỷ lệ cho giai đoạn 1 để khuếch đại đóng góp của các đặc trưng backbone.
b2 (float) : Hệ số tỷ lệ cho giai đoạn 2 để khuếch đại đóng góp của các đặc trưng backbone.
Bật cơ chế FreeU từ https://huggingface.co/papers/2309.11497.
Các hậu tố sau các hệ số tỷ lệ đại diện cho các khối giai đoạn mà chúng được áp dụng.
Vui lòng tham khảo kho mã nguồn chính thức để biết các tổ hợp giá trị được biết là hoạt động tốt cho các pipeline khác nhau như Stable Diffusion v1, v2 và Stable Diffusion XL.
forward[[diffusers.UNetMotionModel.forward]]
forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, added_cond_kwargs: dict[str, torch.Tensor] | None = None, down_block_additional_residuals: tuple[torch.Tensor] | None = None, mid_block_additional_residual: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
Tham số:
sample (torch.Tensor) : Tensor đầu vào có nhiễu với hình dạng sau (batch, num_frames, channel, height, width.
timestep (torch.Tensor hoặc float hoặc int) : Số bước thời gian để khử nhiễu cho một đầu vào.
encoder_hidden_states (torch.Tensor) : Trạng thái ẩn của bộ mã hóa với hình dạng (batch, sequence_length, feature_dim).
timestep_cond : (torch.Tensor, tùy chọn, mặc định là None): Các embedding điều kiện cho timestep. Nếu được cung cấp, các embedding này sẽ được cộng với các mẫu đi qua lớp self.time_embedding để thu được các embedding timestep.
attention_mask (torch.Tensor, tùy chọn, mặc định là None) : Một attention mask có shape (batch, key_tokens) được áp dụng cho encoder_hidden_states. Nếu là 1, mask được giữ lại; ngược lại, nếu là 0, nó sẽ bị loại bỏ. Mask sẽ được chuyển đổi thành một bias, thêm các giá trị âm lớn vào các điểm attention tương ứng với các token "loại bỏ".
cross_attention_kwargs (dict, tùy chọn) : Một từ điển kwargs mà nếu được chỉ định sẽ được truyền đến AttentionProcessor như đã định nghĩa dưới self.processor trong diffusers.models.attention_processor.
added_cond_kwargs (dict, tùy chọn) : Một từ điển chứa các embedding bổ sung (ví dụ: embedding văn bản và thời gian) được sử dụng để điều kiện hóa mô hình.
down_block_additional_residuals : (tuple của torch.Tensor, tùy chọn): Một tuple các tensor mà nếu được chỉ định sẽ được cộng vào phần dư (residuals) của các khối down unet.
mid_block_additional_residual : (torch.Tensor, tùy chọn): Một tensor mà nếu được chỉ định sẽ được cộng vào phần dư (residual) của khối unet ở giữa.
return_dict (bool, tùy chọn, mặc định là True) : Có nên trả về một UNetMotionOutput thay vì một tuple thông thường hay không.
Trả về: UNetMotionOutput hoặc tuple
Nếu return_dict là True, một UNetMotionOutput sẽ được trả về, ngược lại một tuple sẽ được trả về trong đó phần tử đầu tiên là tensor mẫu.
Phương thức forward của UNetMotionModel.
freeze_unet2d_params[[diffusers.UNetMotionModel.freeze_unet2d_params]]
freeze_unet2d_params()
Đóng băng trọng số của riêng UNet2DConditionModel, và giữ các module chuyển động không bị đóng băng để tinh chỉnh.
fuse_qkv_projections[[diffusers.UNetMotionModel.fuse_qkv_projections]]
fuse_qkv_projections()
Bật các phép chiếu QKV đã hợp nhất. Đối với các module tự chú ý, tất cả các ma trận chiếu (tức là truy vấn, khóa, giá trị) đều được hợp nhất. Đối với các module chú ý chéo, các ma trận chiếu khóa và giá trị được hợp nhất.
> API này 🧪 đang ở giai đoạn thử nghiệm.
set_default_attn_processor[[diffusers.UNetMotionModel.set_default_attn_processor]]
set_default_attn_processor()
Tắt các bộ xử lý chú ý tùy chỉnh và đặt cài đặt chú ý mặc định.
unfuse_qkv_projections[[diffusers.UNetMotionModel.unfuse_qkv_projections]]
unfuse_qkv_projections()
Tắt dự phóng QKV hợp nhất nếu đã được bật.
> API này 🧪 đang ở giai đoạn thử nghiệm.
UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]
diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput[[diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput]]
diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput(sample: Tensor)
Tham số:
sample (torch.Tensor có hình dạng (batch_size, num_channels, num_frames, height, width)) : Trạng thái ẩn đầu ra được điều kiện bởi đầu vào encoder_hidden_states. Đầu ra của lớp cuối cùng của mô hình.
Đầu ra của UNet3DConditionModel.
Xet Storage Details
- Size:
- 13.2 kB
- Xet hash:
- c4d4766d2a364c1f5b28498306c6112ff7ee1ac77371aa3e087bb1879faf5f2e
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.