Shortcuts

Source code for connectomics.models.build

"""
Modern model builder using architecture registry.

Uses MONAI and MedNeXt native models with automatic configuration.
All models are registered in the architecture registry.

This module is intentionally model-only:
- selects an architecture builder
- instantiates the model
- logs model structure info

It does not load checkpoints or move the model to a device.
"""

from __future__ import annotations

import logging

from .architectures import get_architecture_builder

logger = logging.getLogger(__name__)


[docs]def build_model(cfg): """ Build model from configuration using architecture registry. Args: cfg: Hydra config object with model configuration Returns: Instantiated model (left on default device) Available architectures: - MONAI models: monai_basic_unet3d, monai_unet, monai_unetr, monai_swin_unetr - MedNeXt models: mednext, mednext_custom Example: cfg = OmegaConf.create({ 'model': { 'arch': {'type': 'mednext'}, 'in_channels': 1, 'out_channels': 2, 'mednext': {'size': 'S', 'kernel_size': 3}, 'deep_supervision': True, } }) model = build_model(cfg) To see all available architectures: from connectomics.models.architectures import print_available_architectures print_available_architectures() """ # Get architecture name model_arch = cfg.model.arch.type # Get builder from registry (raises ValueError with available archs on failure) builder = get_architecture_builder(model_arch) # Build model model = builder(cfg) # Log model info logger.info("Model: %s (architecture: %s)", model.__class__.__name__, model_arch) if hasattr(model, "get_model_info"): info = model.get_model_info() logger.info(" Parameters: %s", f"{info['parameters']:,}") logger.info(" Trainable: %s", f"{info['trainable_parameters']:,}") logger.info(" Deep Supervision: %s", info["deep_supervision"]) if info["deep_supervision"]: logger.info(" Output Scales: %s", info["output_scales"]) return model
__all__ = [ "build_model", ]