Diffusers 文档

UNet1DModel

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

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

< >

( 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

< >

( 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.Tensorfloatint) — 去噪输入的步长数。
  • return_dict (bool, 可选, 默认为 True) — 是否返回 UNet1DOutput 而不是普通的元组。

返回

UNet1DOutputtuple

如果 return_dict 为 True,则返回 UNet1DOutput,否则返回一个 tuple,其中第一个元素是样本张量。

UNet1DModel 的前向传播方法。

UNet1DOutput

class diffusers.models.unets.unet_1d.UNet1DOutput

< >

( sample: Tensor )

参数

  • sample (形状为 (batch_size, num_channels, sample_size)torch.Tensor) — 模型最后一层输出的隐藏状态。

UNet1DModel 的输出。

< > 在 GitHub 上更新