Diffusers documentation
UNet1DModel
UNet1DModel
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 1 chiều.
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 để khai thác 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 (expanding path) đối xứng 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. Toàn bộ cài đặt (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.
UNet1DModel
lớp diffusers.UNet1DModel
< source >( sample_size: int = 65536sample_rate: int | None = Nonein_channels: int = 2out_channels: int = 2extra_in_channels: int = 0time_embedding_type: str = 'fourier'time_embedding_dim: int | None = Noneflip_sin_to_cos: bool = Trueuse_timestep_embedding: bool = Falsefreq_shift: float = 0.0down_block_types: tuple = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D')up_block_types: tuple = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip')mid_block_type: str = 'UNetMidBlock1D'out_block_type: str = Noneblock_out_channels: tuple = (32, 32, 64)act_fn: str = Nonenorm_num_groups: int = 8layers_per_block: int = 1downsample_each_block: bool = False )
Tham số
- sample_size (
int, tùy chọn) — Độ dài mặc định của mẫu. Nên có thể điều chỉnh được khi chạy. - in_channels (
int, tùy chọn, mặc định là 2) — Số lượng kênh trong mẫu đầu vào. - out_channels (
int, tùy chọn, mặc định là 2) — Số lượng kênh trong đầu ra. - extra_in_channels (
int, tùy chọn, mặc định là 0) — Số lượng kênh bổ sung được thêm vào đầu vào của khối down đầu tiên. Hữu ích trong các trường hợp dữ liệu đầu vào có nhiều kênh hơn so với thiết kế ban đầu của mô hình. - time_embedding_type (
str, tùy chọn, mặc định là"fourier") — Loại time embedding cần sử dụng. - freq_shift (
float, tùy chọn, mặc định là 0.0) — Dịch tần số cho nhúng thời gian Fourier. - flip_sin_to_cos (
bool, tùy chọn, mặc định làFalse) — Có nên đảo sin thành cos cho nhúng thời gian Fourier hay không. - down_block_types (
tuple[str], tùy chọn, mặc định là("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")) — bộ tuple các kiểu khối hạ mẫu. - up_block_types (
tuple[str], tùy chọn, mặc định là("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")) — tuple các kiểu khối upsample. - block_out_channels (
tuple[int], tùy chọn, mặc định là(32, 32, 64)) — bộ tuple các kênh đầu ra của khối. - mid_block_type (
str, tùy chọn, mặc định là"UNetMidBlock1D") — Kiểu khối cho phần giữa của UNet. - out_block_type (
str, tùy chọn, mặc định làNone) — Khối xử lý đầu ra tùy chọn của UNet. - act_fn (
str, tùy chọn, mặc định làNone) — Hàm kích hoạt tùy chọn trong các khối UNet. - norm_num_groups (
int, tùy chọn, mặc định là 8) — Số nhóm để chuẩn hóa. - layers_per_block (
int, tùy chọn, mặc định là 1) — Số lượng lớp trong mỗi khối. - downsample_each_block (
int, tùy chọn, mặc định làFalse) — Tính năng thử nghiệm để sử dụng UNet mà không có upsampling.
Một mô hình UNet 1D 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. 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
< source >( sample: Tensortimestep: typing.Union[torch.Tensor, float, int]return_dict: bool = True ) → UNet1DOutput or tuple
Tham số
- sample (
torch.Tensor) — Tensor đầu vào có nhiễu với hình dạng(batch_size, num_channels, sample_size). - timestep (
torch.Tensorhoặcfloathoặcint) — Số lượng bước thời gian để khử nhiễu một đầu vào. - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về một UNet1DOutput thay vì một tuple thông thường hay không.
Trả về
UNet1DOutput hoặc tuple
Nếu return_dict là True, một UNet1DOutput 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 UNet1DModel.
UNet1DOutput
lớp diffusers.models.unets.unet_1d.UNet1DOutput
< source >( sample: Tensor )
Đầu ra của UNet1DModel.