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:
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)],
)
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=[],
)
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,
)
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",
)
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.