mindscience.models.layers.UNet2D

class mindscience.models.layers.UNet2D(in_channels, out_channels, base_channels, n_layers=4, data_format='NHWC', kernel_size=2, stride=2, activation='relu', enable_bn=True)[源代码]

2维 U-Net 模型。

U-Net 是用于生物医学图像分割的 U 形卷积神经网络。它具有捕获上下文的收缩路径和实现精确定位的扩展路径。详情请参阅 U-Net: Convolutional Networks for Biomedical Image Segmentation

参数:
  • in_channels (int) - 输入通道数。

  • out_channels (int) - 输出通道数。

  • base_channels (int) - UNet2D 的基础通道数。

  • n_layers (int, 可选) - 下采样和上采样卷积的数量。默认值:4

  • data_format (str, 可选) - 输入数据格式。默认值:"NHWC"

  • kernel_size (int, 可选) - 指定 2D 卷积核的高度和宽度。默认值:2

  • stride (Union[int, tuple[int]], 可选) - 核移动的距离,表示移动高度和宽度的整数,或表示高度和宽度移动的两个整数的元组。默认值:2

  • activation (Union[str, class], 可选) - 激活函数,可以是 str 或类。默认值:"relu"

  • enable_bn (bool, 可选) - 指定卷积中是否使用批归一化。默认值:True

输入:
  • x (Tensor) - 形状为 \((batch\_size, resolution, resolution, channels)\) 的张量。

输出:
  • output (Tensor) - 形状为 \((batch\_size, resolution, resolution, channels)\) 的张量。

异常:
  • ValueError - 如果 data_format 不是 'NHWC''NCHW'

  • ValueError - 如果 n_layers0

样例:

>>> import mindspore as ms
>>> import numpy as np
>>> from mindspore import Tensor
>>> import mindspore.common.dtype as mstype
>>> from mindscience.models.layers import UNet2D
>>> ms.set_context(mode=ms.GRAPH_MODE, save_graphs=False)
>>> x=Tensor(np.ones([2, 128, 128, 3]), mstype.float32)
>>> unet = UNet2D(in_channels=3, out_channels=3, base_channels=3)
>>> output = unet(x)
>>> print(output.shape)
(2, 128, 128, 3)