UNet Models

This section explains how to configure and use UNet models in DaCapo. Several configurations for different types of UNet architectures are demonstrated below.

Overview

UNet is a popular architecture for image segmentation tasks, particularly in biomedical imaging. DaCapo provides support for configuring various types of UNet models with customizable parameters.

Examples

Here are some examples of UNet configurations:

  1. Upsample UNet

from dacapo.experiments.architectures import CNNectomeUNetConfig
from funlib.geometry import Coordinate

architecture_config = CNNectomeUNetConfig(
    name="upsample_unet",
    input_shape=Coordinate(216, 216, 216),
    eval_shape_increase=Coordinate(72, 72, 72),
    fmaps_in=1,
    num_fmaps=12,
    fmaps_out=72,
    fmap_inc_factor=6,
    downsample_factors=[(2, 2, 2), (3, 3, 3), (3, 3, 3)],
    constant_upsample=True,
    upsample_factors=[(2, 2, 2)],
)
  1. Yoshi UNet

yoshi_unet_config = CNNectomeUNetConfig(
    name="yoshi-unet",
    input_shape=Coordinate(188, 188, 188),
    eval_shape_increase=Coordinate(72, 72, 72),
    fmaps_in=1,
    num_fmaps=12,
    fmaps_out=72,
    fmap_inc_factor=6,
    downsample_factors=[(2, 2, 2), (2, 2, 2), (2, 2, 2)],
    constant_upsample=True,
    upsample_factors=[],
)
  1. Attention Upsample UNet

attention_upsample_config = CNNectomeUNetConfig(
    name="attention-upsample-unet",
    input_shape=Coordinate(216, 216, 216),
    eval_shape_increase=Coordinate(72, 72, 72),
    fmaps_in=1,
    num_fmaps=12,
    fmaps_out=72,
    fmap_inc_factor=6,
    downsample_factors=[(2, 2, 2), (3, 3, 3), (3, 3, 3)],
    constant_upsample=True,
    upsample_factors=[(2, 2, 2)],
    use_attention=True,
)
  1. 2D UNet

architecture_config = CNNectomeUNetConfig(
    name="2d_unet",
    input_shape=(2, 132, 132),
    eval_shape_increase=(8, 32, 32),
    fmaps_in=2,
    num_fmaps=8,
    fmaps_out=8,
    fmap_inc_factor=2,
    downsample_factors=[(1, 4, 4), (1, 4, 4)],
    kernel_size_down=[[(1, 3, 3)] * 2] * 3,
    kernel_size_up=[[(1, 3, 3)] * 2] * 2,
    constant_upsample=True,
    padding="valid",
)
  1. UNet with Batch Normalization

architecture_config = CNNectomeUNetConfig(
    name="unet_norm",
    input_shape=Coordinate(216, 216, 216),
    eval_shape_increase=Coordinate(72, 72, 72),
    fmaps_in=1,
    num_fmaps=2,
    fmaps_out=2,
    fmap_inc_factor=2,
    downsample_factors=[(2, 2, 2), (3, 3, 3), (3, 3, 3)],
    constant_upsample=True,
    upsample_factors=[],
    batch_norm=False,
)

Configuration Parameters

  • name: A unique identifier for the configuration.

  • input_shape: The shape of the input data.

  • eval_shape_increase: Increase in shape during evaluation.

  • fmaps_in: Number of input feature maps.

  • num_fmaps: Number of feature maps in the first layer.

  • fmaps_out: Number of output feature maps.

  • fmap_inc_factor: Factor by which feature maps increase in each layer.

  • downsample_factors: Factors by which the input is downsampled at each layer.

  • upsample_factors: Factors by which the input is upsampled at each layer.

  • constant_upsample: Whether to use constant upsampling.

  • use_attention: Whether to use attention mechanisms.

  • batch_norm: Whether to use batch normalization.

  • padding: Padding mode for convolutional layers.

This page should serve as a reference for configuring UNet models in DaCapo. Adjust the parameters as per your dataset and task requirements.