Configuration Structure
# Example configuration for HoverNet-Cell-Segmentation
# comment and project setup for wandb
logging:
mode: # "online" or "offline" [str]
project: # Name of project to use [str]
notes: # Notes about the run, verbose description [str]
log_comment: # Comment to add to name the local logging folder [str]
tags: # List of tags, e.g., ["baseline", "run1"] [str]
- "tag1"
- "tag2"
- "..."
wandb_dir: # Direcotry to store the wandb file. CAREFUL: Directory must exists [str]
log_dir: # Direcotry to store all logging related files and outputs [str]
level: # Level of logging must be either ["critical", "error", "warning", "info", "debug"] [str]
log_images: # If images should be logged to WandB for this run. [bool] [Optional, defaults to False]
group: # WandB group tag [str] [Optional, defaults to None]
# seeding
random_seed: 19 # Seed for numpy, pytorch etc. [int]
# hardware
gpu: # Number of GPU to run experiment on [int]
# setting paths and dataset
data:
dataset: # Name of dataset, currently supported: PanNuke [str]
dataset_path: # Path to dataset, compare ./docs/readmes/cell_segmentation.md for further details [str]
train_folds: [...] # List of fold Numbers to use for training [list[int]]
val_split: # Percentage of training set that should be used for validation. Either val_split or val_fold must be provided, not both. [float]
val_folds: # List of fold Numbers to use for validation [list[int]]
test_folds: # List of fold Numbers to use for final testing [list[int]]
num_nuclei_classes: # Number of different nuclei classes (including background!, e.g. 5 nuclei classes + background = 6) [int]
input_shape: # Input shape of data. [int] [Optional, defaults to 256]
# model options
model:
backbone: # Backbone Type: Options are: default, ViT256, SAM-B, SAM-L, SAM-H
pretrained_encoder: # Set path to a pretrained encoder [str]
pretrained: # Path to a pretrained model (.pt file) [str, default None]
embed_dim: # Embedding dimension for ViT - typical values are 384 (ViT-S), 768 (ViT-B), 1024 (ViT-L), 1280 (ViT-H) [int]
input_channels: # Number of input channels, usually 3 for RGB [int, default 3]
depth: # Number of Transformer Blocks to use - typical values are 12 (ViT-S), 12 (ViT-B), 24 (ViT-L), 32 (ViT-H) [int]
num_heads: # Number of attention heads for MHA - typical values are 6 (ViT-S), 12 (ViT-B), 16 (ViT-L), 16 (ViT-H) [int]
extract_layers: # List of layers to extract for skip connections - starting from 1 with a maximum value equals the depth [int]
shared_decoders: # If decoder networks should be shared except for the heads. [bool] [Optional, defaults to False]
regression_loss: # If regression loss should be used for binary prediction head. [bool] [Optional, defaults to False]
# loss function settings (best shown by an example). See all implemented loss functions in base_ml.base_loss module
loss:
nuclei_binary_map: # Name of the branch. Possible branches are "nuclei_binary_map", "hv_map", "nuclei_type_map", "tissue_types". If not defined default HoverNet settings are used [str]
bce: # Name of the loss [str]
loss_fn: xentropy_loss # Loss_fn, name is defined in LOSS_DICT in base_ml.base_loss module [str]
weight: 1 # Weight parameter [int] [Optional, defaults to 1]
args: # Parameters for the loss function if necessary. Does not need to be set, can also be empty. Just given as an example here
arg1: # 1. Parameter etc. (Name must match to the initialization parameter given for the loss)
dice: # Name of the loss [str]
loss_fn: dice_loss # Loss_fn, name is defined in LOSS_DICT in base_ml.base_loss module [str]
weight: 1 # Weight parameter [int] [Optional, defaults to 1]
focaltverskyloss: # Name of the loss [str]
loss_fn: FocalTverskyLoss # Loss_fn, name is defined in LOSS_DICT in base_ml.base_loss module [str]
weight: 1 # Weight parameter [int] [Optional, defaults to 1]
# optional parameters, not implemented yet
# hv_map: another branch
# nuclei_type_map: another branch
# tissue_types: another branch
# training options
training:
batch_size: 32 # Training Batch size [int]
epochs: 100 # Number of Training Epochs to use [int]
unfreeze_epoch: # Epoch Number to unfreeze backbone [int]
drop_rate: # Dropout rate [float] [Optional, defaults to 0]
attn_drop_rate: # Dropout rate in attention layer [float] [Optional, defaults to 0]
drop_path_rate: # Dropout rate in paths [float] [Optional, defaults to 0]
optimizer: # Pytorch Optimizer Name. All pytorch optimizers (v1.13) are supported. [str]
optimizer_hyperparameter: # Hyperparamaters for the optimizers, must be named exactly as in the pytorch documation given for the selected optimizer
lr: 0.001 # e.g. learning-rate for Adam
betas: [0.85, 0.9] # e.g. betas for Adam
early_stopping_patience: # Number of epochs before applying early stopping after metric has not been improved. Metric used is total loss. [int]
scheduler: # Learning rate scheduler. If no scheduler is selected here, then the learning rate stays constant
scheduler_type: # Name of learning rate scheduler. Currently implemented: "constant", "exponential", "cosine". [str]
# hyperparameters # gamma [default 0.95] for "exponential", "eta_min" [default 1e-5] for CosineAnnealingLR
sampling_strategy: # Sampling strategy. Implemented are "random", "cell", "tissue" and "cell+tissue" [str] [Optional, defaults to "random"]
sampling_gamma: # Gamma for balancing sampling. Must be between 0 (equal weights) and 1 (100% oversampling) [float] [Optional, defaults to 1]
# transformations, here all options are given. Remove transformations by removing them from this section
transformations:
randomrotate90: # RandomRotation90
p: # Probability [float, between 0 and 1]
horizontalflip: # HorizontalFlip
p: # Probability [float, between 0 and 1]
verticalflip: # VerticalFlip
p: # Probability [float, between 0 and 1]
downscale: # Downscaling
p: # Probability [float, between 0 and 1]
scale: # Scaling factor, maximum should be 0.5. Must be smaller than 1 [float, between 0 and 1]
blur: # Blur
p: # Probability [float, between 0 and 1]
blur_limit: # Bluring limit, maximum should be 10, recommended 10 [float]
gaussnoise: # GaussianNoise
p: # Probability [float, between 0 and 1]
var_limit: # Variance limit, maxmimum should be 50, recommended 10 [float]
colorjitter: # ColorJitter
p: # Probability [float, between 0 and 1]
scale_setting: # Scaling for contrast and brightness, recommended 0.25 [float]
scale_color: # Scaling for hue and saturation, recommended 0.1 [float]
superpixels: # SuperPixels
p: # Probability [float, between 0 and 1]
zoomblur: # ZoomBlur
p: # Probability [float, between 0 and 1]
randomsizedcrop: # RandomResizeCrop
p: # Probability [float, between 0 and 1]
elastictransform: # ElasticTransform
p: # Probability [float, between 0 and 1]
normalize: # Normalization
mean: # Mean for Normalizing, default to (0.5, 0.5, 0.5) [list[float], between 0 and 1 for each entry]
std: # STD for Normalizing, default to (0.5, 0.5, 0.5) [list[float], between 0 and 1 for each entry]
eval_checkpoint: # Either select "best_checkpoint.pth", "latest_checkpoint.pth" or one of the intermediate checkpoint names, e.g., "checkpoint_100.pth"