Diffusers 文档
UNet1DModel
并获取增强的文档体验
开始使用
UNet1DModel
The UNet 模型最初由 Ronneberger 等人提出,用于生物医学图像分割,但它也常用于 🤗 Diffusers 中,因为它输出的图像大小与输入相同。它是扩散系统最重要的组成部分之一,因为它促进了实际的扩散过程。🤗 Diffusers 中有 UNet 模型的几种变体,具体取决于其维度数量以及它是否为条件模型。这是一个 1D UNet 模型。
论文摘要如下:
人们普遍认为,深度网络的成功训练需要数千个带注释的训练样本。在本文中,我们提出了一种网络和训练策略,该策略依赖于数据增强的强大使用,以更有效地利用可用的带注释样本。该架构由捕获上下文的收缩路径和实现精确定位的对称扩展路径组成。我们表明,这样的网络可以从极少量的图像进行端到端训练,并且在 ISBI 挑战赛中,在电子显微镜堆栈中神经元结构分割方面优于先前的最佳方法(滑动窗口卷积网络)。使用在透射光显微镜图像(相衬和 DIC)上训练的相同网络,我们在 ISBI 2015 年细胞追踪挑战赛中以很大的优势赢得了这些类别。此外,该网络速度很快。在最新的 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
, optional) — 采样的默认长度。应在运行时可调整。 - in_channels (
int
, optional, 默认为 2) — 输入样本中的通道数。 - out_channels (
int
, optional, 默认为 2) — 输出中的通道数。 - extra_in_channels (
int
, optional, 默认为 0) — 要添加到第一个下采样块输入的额外通道数。适用于输入数据通道数多于模型最初设计的情况。 - time_embedding_type (
str
, optional, 默认为"fourier"
) — 要使用的时间 embedding 类型。 - 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 或 tuple
参数
- sample (
torch.Tensor
) — 噪声输入张量,形状如下:(batch_size, num_channels, sample_size)
。 - timestep (
torch.Tensor
或float
或int
) — 用于去噪输入的timestep 数。 - 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 的输出。