Diffusers 文件
UNet1DModel
並獲得增強的文件體驗
開始使用
UNet1DModel
UNet 模型最初由 Ronneberger 等人引入,用於生物醫學影像分割,但它也常用於 🤗 Diffusers,因為它輸出的影像大小與輸入相同。它是擴散系統最重要的元件之一,因為它促進了實際的擴散過程。🤗 Diffusers 中有幾種 UNet 模型的變體,具體取決於其維度數量以及它是否是條件模型。這是一個 1D UNet 模型。
論文摘要如下:
人們普遍認為,成功訓練深度網路需要數千個帶註釋的訓練樣本。在本文中,我們提出了一種網路和訓練策略,它強烈依賴於資料增強,以更有效地利用可用的帶註釋樣本。該架構由一個用於捕獲上下文的收縮路徑和一個實現精確本地化的對稱擴充套件路徑組成。我們證明了這種網路可以從極少數影像端到端地訓練,並且在 ISBI 挑戰賽中,它在電子顯微鏡堆疊中神經元結構分割方面優於現有最佳方法(滑動視窗卷積網路)。使用在透射光顯微鏡影像(相差和 DIC)上訓練的相同網路,我們在這些類別中以大幅優勢贏得了 2015 年 ISBI 細胞跟蹤挑戰賽。此外,該網路速度很快。在最近的 GPU 上分割 512x512 影像所需時間不到一秒。完整的實現(基於 Caffe)和訓練好的網路可在 http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net 獲得。
UNet1DModel
class diffusers.UNet1DModel
< source >( sample_size: int = 65536 sample_rate: typing.Optional[int] = None in_channels: int = 2 out_channels: int = 2 extra_in_channels: int = 0 time_embedding_type: str = 'fourier' flip_sin_to_cos: bool = True use_timestep_embedding: bool = False freq_shift: float = 0.0 down_block_types: typing.Tuple[str] = ('DownBlock1DNoSkip', 'DownBlock1D', 'AttnDownBlock1D') up_block_types: typing.Tuple[str] = ('AttnUpBlock1D', 'UpBlock1D', 'UpBlock1DNoSkip') mid_block_type: typing.Tuple[str] = 'UNetMidBlock1D' out_block_type: str = None block_out_channels: typing.Tuple[int] = (32, 32, 64) act_fn: str = None norm_num_groups: int = 8 layers_per_block: int = 1 downsample_each_block: bool = False )
引數
- sample_size (
int
, 可選) — 樣本的預設長度。應可在執行時調整。 - in_channels (
int
, 可選, 預設為 2) — 輸入樣本中的通道數。 - out_channels (
int
, 可選, 預設為 2) — 輸出中的通道數。 - extra_in_channels (
int
, 可選, 預設為 0) — 要新增到第一個下采樣塊輸入的額外通道數。適用於輸入資料具有比模型最初設計更多的通道的情況。 - time_embedding_type (
str
, 可選, 預設為"fourier"
) — 要使用的時間嵌入型別。 - freq_shift (
float
, 可選, 預設為 0.0) — 傅立葉時間嵌入的頻率偏移。 - flip_sin_to_cos (
bool
, 可選, 預設為False
) — 是否翻轉正弦到餘弦,用於傅立葉時間嵌入。 - down_block_types (
Tuple[str]
, 可選, 預設為("DownBlock1DNoSkip", "DownBlock1D", "AttnDownBlock1D")
) — 下采樣塊型別的元組。 - up_block_types (
Tuple[str]
, 可選, 預設為("AttnUpBlock1D", "UpBlock1D", "UpBlock1DNoSkip")
) — 上取樣塊型別的元組。 - block_out_channels (
Tuple[int]
, 可選, 預設為(32, 32, 64)
) — 塊輸出通道的元組。 - mid_block_type (
str
, 可選, 預設為"UNetMidBlock1D"
) — UNet 中間塊的型別。 - out_block_type (
str
, 可選, 預設為None
) — UNet 可選的輸出處理塊。 - act_fn (
str
, 可選, 預設為None
) — UNet 塊中可選的啟用函式。 - norm_num_groups (
int
, 可選, 預設為 8) — 歸一化的組數。 - layers_per_block (
int
, 可選, 預設為 1) — 每個塊的層數。 - downsample_each_block (
int
, 可選, 預設為False
) — 使用無上取樣的 UNet 的實驗性功能。
一個 1D UNet 模型,它接受一個有噪聲的樣本和一個時間步長,並返回一個與樣本形狀相同的輸出。
此模型繼承自 ModelMixin。有關所有模型實現的通用方法(如下載或儲存),請參閱超類文件。
forward
< source >( sample: Tensor timestep: typing.Union[torch.Tensor, float, int] return_dict: bool = True ) → UNet1DOutput or tuple
引數
- sample (
torch.Tensor
) — 形狀為(batch_size, num_channels, sample_size)
的噪聲輸入張量。 - timestep (
torch.Tensor
或float
或int
) — 去噪輸入的步長數。 - return_dict (
bool
, 可選, 預設為True
) — 是否返回 UNet1DOutput 而不是普通的元組。
返回
UNet1DOutput 或 tuple
如果 return_dict
為 True,則返回 UNet1DOutput,否則返回一個 tuple
,其中第一個元素是樣本張量。
UNet1DModel 的前向傳播方法。
UNet1DOutput
class diffusers.models.unets.unet_1d.UNet1DOutput
< source >( sample: Tensor )
UNet1DModel 的輸出。