Diffusers 文件
UNet3DConditionModel
並獲得增強的文件體驗
開始使用
UNet3DConditionModel
UNet 模型最初由 Ronneberger 等人提出,用於生物醫學影像分割,但它也常用於 🤗 Diffusers,因為它輸出的影像大小與輸入相同。它是擴散系統最重要的元件之一,因為它促進了實際的擴散過程。🤗 Diffusers 中有幾種 UNet 模型變體,具體取決於其維度數量以及是否為條件模型。這是一個 3D UNet 條件模型。
論文摘要如下:
人們普遍認為,深度網路的成功訓練需要數千個帶註釋的訓練樣本。在本文中,我們提出了一種網路和訓練策略,該策略強烈依賴於資料增強,以更有效地利用可用的帶註釋樣本。該架構包括一個收縮路徑用於捕獲上下文,以及一個對稱的擴充套件路徑,用於實現精確的定位。我們展示了這樣的網路可以從很少的影像進行端到端訓練,並且在 ISBI 挑戰賽中,在電子顯微鏡堆疊中分割神經元結構方面,其效能優於先前的最佳方法(滑動視窗卷積網路)。使用相同網路在透射光顯微鏡影像(相差和 DIC)上訓練,我們在 2015 年 ISBI 細胞跟蹤挑戰賽的這些類別中以大幅優勢獲勝。此外,該網路速度快。在最新的 GPU 上,分割一張 512x512 影像所需時間不到一秒。完整的實現(基於 Caffe)和訓練好的網路可在 http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net 獲取。
UNet3DConditionModel
class diffusers.UNet3DConditionModel
< 來源 >( sample_size: typing.Optional[int] = None in_channels: int = 4 out_channels: int = 4 down_block_types: typing.Tuple[str, ...] = ('CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'CrossAttnDownBlock3D', 'DownBlock3D') up_block_types: typing.Tuple[str, ...] = ('UpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D', 'CrossAttnUpBlock3D') block_out_channels: typing.Tuple[int, ...] = (320, 640, 1280, 1280) layers_per_block: int = 2 downsample_padding: int = 1 mid_block_scale_factor: float = 1 act_fn: str = 'silu' norm_num_groups: typing.Optional[int] = 32 norm_eps: float = 1e-05 cross_attention_dim: int = 1024 attention_head_dim: typing.Union[int, typing.Tuple[int]] = 64 num_attention_heads: typing.Union[int, typing.Tuple[int], NoneType] = None time_cond_proj_dim: typing.Optional[int] = None )
引數
- sample_size (
int
或Tuple[int, int]
, 可選, 預設為None
) — 輸入/輸出樣本的高度和寬度。 - in_channels (
int
, 可選, 預設為 4) — 輸入樣本中的通道數。 - out_channels (
int
, 可選, 預設為 4) — 輸出中的通道數。 - down_block_types (
Tuple[str]
, 可選, 預設為("CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "CrossAttnDownBlock3D", "DownBlock3D")
) — 要使用的下采樣塊的元組。 - up_block_types (
Tuple[str]
, 可選, 預設為("UpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D", "CrossAttnUpBlock3D")
) — 要使用的上取樣塊的元組。 - block_out_channels (
Tuple[int]
, 可選, 預設為(320, 640, 1280, 1280)
) — 每個塊的輸出通道元組。 - layers_per_block (
int
, 可選, 預設為 2) — 每個塊的層數。 - downsample_padding (
int
, 可選, 預設為 1) — 用於下采樣卷積的填充。 - mid_block_scale_factor (
float
, 可選, 預設為 1.0) — 用於中間塊的比例因子。 - act_fn (
str
, 可選, 預設為"silu"
) — 要使用的啟用函式。 - norm_num_groups (
int
, 可選, 預設為 32) — 用於歸一化的組數。如果為None
,則在後處理中跳過歸一化和啟用層。 - norm_eps (
float
, 可選, 預設為 1e-5) — 用於歸一化的 epsilon 值。 - cross_attention_dim (
int
, 可選, 預設為 1024) — 交叉注意力特徵的維度。 - attention_head_dim (
int
, 可選, 預設為 64) — 注意力頭的維度。 - num_attention_heads (
int
, 可選) — 注意力頭的數量。 - time_cond_proj_dim (
int
, 可選, 預設為None
) — 時間步嵌入中cond_proj
層的維度。
一個條件 3D UNet 模型,它接受一個噪聲樣本、條件狀態和時間步,並返回一個樣本形狀的輸出。
此模型繼承自 ModelMixin。有關所有模型實現的通用方法(如下載或儲存),請參閱超類文件。
停用 FreeU 機制。
enable_freeu
< 來源 >( s1 s2 b1 b2 )
啟用來自 https://huggingface.co/papers/2309.11497 的 FreeU 機制。
縮放因子後面的字尾表示它們正在應用的階段塊。
請參閱官方倉庫,瞭解適用於 Stable Diffusion v1、v2 和 Stable Diffusion XL 等不同管道的已知良好值組合。
前向
< 來源 >( sample: Tensor timestep: typing.Union[torch.Tensor, float, int] encoder_hidden_states: Tensor class_labels: typing.Optional[torch.Tensor] = None timestep_cond: typing.Optional[torch.Tensor] = None attention_mask: typing.Optional[torch.Tensor] = None cross_attention_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None down_block_additional_residuals: typing.Optional[typing.Tuple[torch.Tensor]] = None mid_block_additional_residual: typing.Optional[torch.Tensor] = None return_dict: bool = True ) → UNet3DConditionOutput 或 tuple
引數
- sample (
torch.Tensor
) — 帶有以下形狀的噪聲輸入張量(batch, num_channels, num_frames, height, width
。 - timestep (
torch.Tensor
或float
或int
) — 去噪輸入的步長數。 - encoder_hidden_states (
torch.Tensor
) — 編碼器隱藏狀態,形狀為(batch, sequence_length, feature_dim)
。 - class_labels (
torch.Tensor
, 可選, 預設為None
) — 用於條件作用的可選類別標籤。它們的嵌入將與時間步嵌入求和。 - timestep_cond — (
torch.Tensor
, 可選, 預設為None
):時間步的條件嵌入。如果提供,嵌入將與透過self.time_embedding
層傳遞的樣本求和,以獲得時間步嵌入。 - attention_mask (
torch.Tensor
, 可選, 預設為None
) — 形狀為(batch, key_tokens)
的注意力掩碼應用於encoder_hidden_states
。如果為1
,則保留掩碼,否則如果為0
則丟棄。掩碼將轉換為偏差,該偏差會向與“丟棄”標記對應的注意力分數新增較大的負值。 - cross_attention_kwargs (
dict
, 可選) — 一個 kwargs 字典,如果指定,將作為self.processor
中定義的AttentionProcessor
的引數傳遞給 diffusers.models.attention_processor。 - down_block_additional_residuals — (
tuple
oftorch.Tensor
, 可選):如果指定,將新增到下部 unet 塊的殘差中的張量元組。 - mid_block_additional_residual — (
torch.Tensor
, 可選):如果指定,將新增到中間 unet 塊的殘差中的張量。 - return_dict (
bool
, 可選, 預設為True
) — 是否返回 UNet3DConditionOutput 而不是普通元組。 - cross_attention_kwargs (
dict
, 可選) — 一個 kwargs 字典,如果指定,將作為引數傳遞給AttnProcessor
。
返回
UNet3DConditionOutput 或 tuple
如果 return_dict
為 True,則返回 UNet3DConditionOutput,否則返回一個 tuple
,其中第一個元素是樣本張量。
UNet3DConditionModel 前向方法。
set_attention_slice
< 來源 >( slice_size: typing.Union[str, int, typing.List[int]] )
啟用分片注意力計算。
啟用此選項後,注意力模組會將輸入張量分片以分步計算注意力。這對於節省記憶體非常有用,但會稍微降低速度。
設定注意力處理器
< 來源 >( processor: typing.Union[diffusers.models.attention_processor.AttnProcessor, diffusers.models.attention_processor.CustomDiffusionAttnProcessor, diffusers.models.attention_processor.AttnAddedKVProcessor, diffusers.models.attention_processor.AttnAddedKVProcessor2_0, diffusers.models.attention_processor.JointAttnProcessor2_0, diffusers.models.attention_processor.PAGJointAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGJointAttnProcessor2_0, diffusers.models.attention_processor.FusedJointAttnProcessor2_0, diffusers.models.attention_processor.AllegroAttnProcessor2_0, diffusers.models.attention_processor.AuraFlowAttnProcessor2_0, diffusers.models.attention_processor.FusedAuraFlowAttnProcessor2_0, diffusers.models.attention_processor.FluxAttnProcessor2_0, diffusers.models.attention_processor.FluxAttnProcessor2_0_NPU, diffusers.models.attention_processor.FusedFluxAttnProcessor2_0, diffusers.models.attention_processor.FusedFluxAttnProcessor2_0_NPU, diffusers.models.attention_processor.CogVideoXAttnProcessor2_0, diffusers.models.attention_processor.FusedCogVideoXAttnProcessor2_0, diffusers.models.attention_processor.XFormersAttnAddedKVProcessor, diffusers.models.attention_processor.XFormersAttnProcessor, diffusers.models.attention_processor.XLAFlashAttnProcessor2_0, diffusers.models.attention_processor.AttnProcessorNPU, diffusers.models.attention_processor.AttnProcessor2_0, diffusers.models.attention_processor.MochiVaeAttnProcessor2_0, diffusers.models.attention_processor.MochiAttnProcessor2_0, diffusers.models.attention_processor.StableAudioAttnProcessor2_0, diffusers.models.attention_processor.HunyuanAttnProcessor2_0, diffusers.models.attention_processor.FusedHunyuanAttnProcessor2_0, diffusers.models.attention_processor.PAGHunyuanAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGHunyuanAttnProcessor2_0, diffusers.models.attention_processor.LuminaAttnProcessor2_0, diffusers.models.attention_processor.FusedAttnProcessor2_0, diffusers.models.attention_processor.CustomDiffusionXFormersAttnProcessor, diffusers.models.attention_processor.CustomDiffusionAttnProcessor2_0, diffusers.models.attention_processor.SlicedAttnProcessor, diffusers.models.attention_processor.SlicedAttnAddedKVProcessor, diffusers.models.attention_processor.SanaLinearAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGSanaLinearAttnProcessor2_0, diffusers.models.attention_processor.PAGIdentitySanaLinearAttnProcessor2_0, diffusers.models.attention_processor.SanaMultiscaleLinearAttention, diffusers.models.attention_processor.SanaMultiscaleAttnProcessor2_0, diffusers.models.attention_processor.SanaMultiscaleAttentionProjection, diffusers.models.attention_processor.IPAdapterAttnProcessor, diffusers.models.attention_processor.IPAdapterAttnProcessor2_0, diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor, diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0, diffusers.models.attention_processor.PAGIdentitySelfAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGIdentitySelfAttnProcessor2_0, diffusers.models.attention_processor.LoRAAttnProcessor, diffusers.models.attention_processor.LoRAAttnProcessor2_0, diffusers.models.attention_processor.LoRAXFormersAttnProcessor, diffusers.models.attention_processor.LoRAAttnAddedKVProcessor, typing.Dict[str, typing.Union[diffusers.models.attention_processor.AttnProcessor, diffusers.models.attention_processor.CustomDiffusionAttnProcessor, diffusers.models.attention_processor.AttnAddedKVProcessor, diffusers.models.attention_processor.AttnAddedKVProcessor2_0, diffusers.models.attention_processor.JointAttnProcessor2_0, diffusers.models.attention_processor.PAGJointAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGJointAttnProcessor2_0, diffusers.models.attention_processor.FusedJointAttnProcessor2_0, diffusers.models.attention_processor.AllegroAttnProcessor2_0, diffusers.models.attention_processor.AuraFlowAttnProcessor2_0, diffusers.models.attention_processor.FusedAuraFlowAttnProcessor2_0, diffusers.models.attention_processor.FluxAttnProcessor2_0, diffusers.models.attention_processor.FluxAttnProcessor2_0_NPU, diffusers.models.attention_processor.FusedFluxAttnProcessor2_0, diffusers.models.attention_processor.FusedFluxAttnProcessor2_0_NPU, diffusers.models.attention_processor.CogVideoXAttnProcessor2_0, diffusers.models.attention_processor.FusedCogVideoXAttnProcessor2_0, diffusers.models.attention_processor.XFormersAttnAddedKVProcessor, diffusers.models.attention_processor.XFormersAttnProcessor, diffusers.models.attention_processor.XLAFlashAttnProcessor2_0, diffusers.models.attention_processor.AttnProcessorNPU, diffusers.models.attention_processor.AttnProcessor2_0, diffusers.models.attention_processor.MochiVaeAttnProcessor2_0, diffusers.models.attention_processor.MochiAttnProcessor2_0, diffusers.models.attention_processor.StableAudioAttnProcessor2_0, diffusers.models.attention_processor.HunyuanAttnProcessor2_0, diffusers.models.attention_processor.FusedHunyuanAttnProcessor2_0, diffusers.models.attention_processor.PAGHunyuanAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGHunyuanAttnProcessor2_0, diffusers.models.attention_processor.LuminaAttnProcessor2_0, diffusers.models.attention_processor.FusedAttnProcessor2_0, diffusers.models.attention_processor.CustomDiffusionXFormersAttnProcessor, diffusers.models.attention_processor.CustomDiffusionAttnProcessor2_0, diffusers.models.attention_processor.SlicedAttnProcessor, diffusers.models.attention_processor.SlicedAttnAddedKVProcessor, diffusers.models.attention_processor.SanaLinearAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGSanaLinearAttnProcessor2_0, diffusers.models.attention_processor.PAGIdentitySanaLinearAttnProcessor2_0, diffusers.models.attention_processor.SanaMultiscaleLinearAttention, diffusers.models.attention_processor.SanaMultiscaleAttnProcessor2_0, diffusers.models.attention_processor.SanaMultiscaleAttentionProjection, diffusers.models.attention_processor.IPAdapterAttnProcessor, diffusers.models.attention_processor.IPAdapterAttnProcessor2_0, diffusers.models.attention_processor.IPAdapterXFormersAttnProcessor, diffusers.models.attention_processor.SD3IPAdapterJointAttnProcessor2_0, diffusers.models.attention_processor.PAGIdentitySelfAttnProcessor2_0, diffusers.models.attention_processor.PAGCFGIdentitySelfAttnProcessor2_0, diffusers.models.attention_processor.LoRAAttnProcessor, diffusers.models.attention_processor.LoRAAttnProcessor2_0, diffusers.models.attention_processor.LoRAXFormersAttnProcessor, diffusers.models.attention_processor.LoRAAttnAddedKVProcessor]]] )
設定用於計算注意力的注意力處理器。
停用自定義注意力處理器並設定預設注意力實現。
UNet3DConditionOutput
class diffusers.models.unets.unet_3d_condition.UNet3DConditionOutput
< source >( sample: Tensor )
UNet3DConditionModel 的輸出。