Buckets:
| # UNet2DModel | |
| Mô hình [UNet](https://huggingface.co/papers/1505.04597) 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.* | |
| ## UNet2DModel[[diffusers.UNet2DModel]] | |
| #### diffusers.UNet2DModel[[diffusers.UNet2DModel]] | |
| ```python | |
| diffusers.UNet2DModel(sample_size: int | tuple[int, int] | None = None, in_channels: int = 3, out_channels: int = 3, center_input_sample: bool = False, time_embedding_type: str = 'positional', time_embedding_dim: int | None = None, freq_shift: int = 0, flip_sin_to_cos: bool = True, down_block_types: tuple[str, ...] = ('DownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D', 'AttnDownBlock2D'), mid_block_type: str | None = 'UNetMidBlock2D', up_block_types: tuple[str, ...] = ('AttnUpBlock2D', 'AttnUpBlock2D', 'AttnUpBlock2D', 'UpBlock2D'), block_out_channels: tuple[int, ...] = (224, 448, 672, 896), layers_per_block: int = 2, mid_block_scale_factor: float = 1, downsample_padding: int = 1, downsample_type: str = 'conv', upsample_type: str = 'conv', dropout: float = 0.0, act_fn: str = 'silu', attention_head_dim: int | None = 8, norm_num_groups: int = 32, attn_norm_num_groups: int | None = None, norm_eps: float = 1e-05, resnet_time_scale_shift: str = 'default', add_attention: bool = True, class_embed_type: str | None = None, num_class_embeds: int | None = None, num_train_timesteps: int | None = None) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unets/unet_2d.py#L39) | |
| **Tham số:** | |
| sample_size (`int` hoặc `tuple[int, int]`, *không bắt buộc*, mặc định là `None`) : Chiều cao và chiều rộng của mẫu đầu vào/đầu ra. Các kích thước phải là bội số của `2 ** (len(block_out_channels) - 1)`. | |
| in_channels (`int`, *tuỳ chọn*, mặc định là 3) : Số kênh trong mẫu đầu vào. | |
| out_channels (`int`, *tuỳ chọn*, mặc định là 3) : Số kênh trong đầu ra. | |
| center_input_sample (`bool`, *tùy chọn*, mặc định là `False`) : Có căn giữa mẫu đầu vào hay không. | |
| time_embedding_type (`str`, *tùy chọn*, mặc định là `"positional"`) : Loại nhúng thời gian cần sử dụng. | |
| freq_shift (`int`, *tuỳ chọn*, mặc định là 0) : Độ dịch tần số cho nhúng thời gian Fourier. | |
| flip_sin_to_cos (`bool`, *tuỳ chọn*, mặc định là `True`) : Có nên đảo sin thành cos cho nhúng thời gian Fourier hay không. | |
| down_block_types (`tuple[str]`, *tuỳ chọn*, mặc định là `("DownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D", "AttnDownBlock2D")`) : bộ các kiểu khối hạ mẫu. | |
| mid_block_type (`str`, *tùy chọn*, mặc định là `"UNetMidBlock2D"`) : Kiểu khối cho phần giữa của UNet, có thể là `UNetMidBlock2D` hoặc `None`. | |
| up_block_types (`tuple[str]`, *tùy chọn*, mặc định là `("AttnUpBlock2D", "AttnUpBlock2D", "AttnUpBlock2D", "UpBlock2D")`) : bộ các kiểu khối lấy mẫu lên. | |
| block_out_channels (`tuple[int]`, *tuỳ chọn*, mặc định là `(224, 448, 672, 896)`) : bộ các kênh đầu ra khối. | |
| layers_per_block (`int`, *tuỳ chọn*, mặc định là `2`) : Số lượng lớp trong mỗi khối. | |
| mid_block_scale_factor (`float`, *tuỳ chọn*, mặc định là `1`) : Hệ số tỷ lệ cho khối giữa. | |
| downsample_padding (`int`, *tuỳ chọn*, mặc định là `1`) : Padding cho phép toán convolution hạ mẫu. | |
| downsample_type (`str`, *tùy chọn*, mặc định là `conv`) : Kiểu downsample cho các lớp downsample. Chọn giữa "conv" và "resnet" | |
| upsample_type (`str`, *tùy chọn*, mặc định là `conv`) : Kiểu upsample cho các lớp upsampling. Chọn giữa "conv" và "resnet" | |
| dropout (`float`, *tuỳ chọn*, mặc định là 0.0) : Xác suất dropout cần sử dụng. | |
| act_fn (`str`, *tùy chọn*, mặc định là `"silu"`) : Hàm kích hoạt cần sử dụng. | |
| attention_head_dim (`int`, *tuỳ chọn*, mặc định là `8`) : Kích thước chiều đầu chú ý. | |
| norm_num_groups (`int`, *tuỳ chọn*, mặc định là `32`) : Số nhóm để chuẩn hóa. | |
| attn_norm_num_groups (`int`, *tuỳ chọn*, mặc định là `None`) : Nếu được đặt thành một số nguyên, một lớp group norm sẽ được tạo trong lớp `Attention` của khối giữa với số nhóm đã cho. Nếu để là `None`, lớp group norm chỉ được tạo nếu `resnet_time_scale_shift` được đặt thành `default`, và nếu được tạo sẽ có `norm_num_groups` nhóm. | |
| norm_eps (`float`, *tuỳ chọn*, mặc định là `1e-5`) : Epsilon cho phép chuẩn hóa. | |
| resnet_time_scale_shift (`str`, *tùy chọn*, mặc định là `"default"`) : Cấu hình dịch chuyển thang thời gian cho các khối ResNet (xem `ResnetBlock2D`). Chọn từ `default` hoặc `scale_shift`. | |
| class_embed_type (`str`, *tùy chọn*, mặc định là `None`) : Loại class embedding được sử dụng, cuối cùng sẽ được cộng với các time embeddings. Chọn từ `None`, `"timestep"`, hoặc `"identity"`. | |
| num_class_embeds (`int`, *tuỳ chọn*, mặc định là `None`) : Kích thước đầu vào của ma trận nhúng có thể học được, sẽ được chiếu sang `time_embed_dim` khi thực hiện điều kiện theo lớp với `class_embed_type` bằng `None`. | |
| Một mô hình UNet 2D nhận vào một mẫu nhiễu và một bước thời gian, sau đó trả về một mẫu đầu ra có cùng hình dạng. | |
| Mô hình này kế thừa từ [ModelMixin](/docs/diffusers/main/vi/api/models/overview#diffusers.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ữ). | |
| #### forward[[diffusers.UNet2DModel.forward]] | |
| ```python | |
| forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], class_labels: typing.Optional[torch.Tensor] = None, return_dict: bool = True) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unets/unet_2d.py#L249) | |
| **Tham số:** | |
| sample (`torch.Tensor`) : Tensor đầu vào có nhiễu với hình dạng `(batch, channel, height, width)` như sau. | |
| timestep (`torch.Tensor` hoặc `float` hoặc `int`) : Số bước thời gian để khử nhiễu cho một đầu vào. | |
| class_labels (`torch.Tensor`, *tùy chọn*, mặc định là `None`) : Nhãn lớp tùy chọn để điều kiện. Các embedding của chúng sẽ được cộng với các embedding của bước thời gian. | |
| return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một [UNet2DOutput](/docs/diffusers/main/vi/api/models/unet2d#diffusers.models.unets.unet_2d.UNet2DOutput) thay vì một tuple thông thường hay không. | |
| **Trả về:** [UNet2DOutput](/docs/diffusers/main/vi/api/models/unet2d#diffusers.models.unets.unet_2d.UNet2DOutput) hoặc `tuple` | |
| Nếu `return_dict` là True, một [UNet2DOutput](/docs/diffusers/main/vi/api/models/unet2d#diffusers.models.unets.unet_2d.UNet2DOutput) 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 [UNet2DModel](/docs/diffusers/main/vi/api/models/unet2d#diffusers.UNet2DModel). | |
| ## UNet2DOutput[[diffusers.models.unets.unet_2d.UNet2DOutput]] | |
| #### diffusers.models.unets.unet_2d.UNet2DOutput[[diffusers.models.unets.unet_2d.UNet2DOutput]] | |
| ```python | |
| diffusers.models.unets.unet_2d.UNet2DOutput(sample: Tensor) | |
| ``` | |
| [Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/unets/unet_2d.py#L27) | |
| **Tham số:** | |
| sample (`torch.Tensor` có hình dạng `(batch_size, num_channels, height, width)`) : Trạng thái ẩn (hidden states) được xuất ra từ lớp cuối cùng của mô hình. | |
| Đầu ra của [UNet2DModel](/docs/diffusers/main/vi/api/models/unet2d#diffusers.UNet2DModel). | |
Xet Storage Details
- Size:
- 10.2 kB
- Xet hash:
- e90c64304ed059499358eea8dc96a35ed5ac62f8f268187621d6be01fa7432a1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.