File size: 5,253 Bytes
62a0e4e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | ---
trainer:
class_path: eva.Trainer
init_args:
n_runs: &N_RUNS ${oc.env:N_RUNS, 5}
default_root_dir: &OUTPUT_ROOT ${oc.env:OUTPUT_ROOT, logs/${oc.env:MODEL_NAME, vit_small_patch16_224_dino}/monusac}
max_steps: &MAX_STEPS ${oc.env:MAX_STEPS, 2000}
log_every_n_steps: 6
checkpoint_type: ${oc.env:CHECKPOINT_TYPE, best}
devices: ${oc.env:NUM_DEVICES, 1}
callbacks:
- class_path: eva.callbacks.ConfigurationLogger
- class_path: lightning.pytorch.callbacks.TQDMProgressBar
init_args:
refresh_rate: ${oc.env:TQDM_REFRESH_RATE, 1}
- class_path: eva.vision.callbacks.SemanticSegmentationLogger
init_args:
log_every_n_epochs: 1
mean: &NORMALIZE_MEAN ${oc.env:NORMALIZE_MEAN, [0.485, 0.456, 0.406]}
std: &NORMALIZE_STD ${oc.env:NORMALIZE_STD, [0.229, 0.224, 0.225]}
- class_path: lightning.pytorch.callbacks.ModelCheckpoint
init_args:
filename: best
save_last: ${oc.env:SAVE_LAST, false}
save_top_k: 1
monitor: &MONITOR_METRIC ${oc.env:MONITOR_METRIC, 'val/MonaiDiceScore'}
mode: &MONITOR_METRIC_MODE ${oc.env:MONITOR_METRIC_MODE, max}
- class_path: lightning.pytorch.callbacks.EarlyStopping
init_args:
min_delta: 0
patience: ${oc.env:PATIENCE, 100}
monitor: *MONITOR_METRIC
mode: *MONITOR_METRIC_MODE
logger:
- class_path: lightning.pytorch.loggers.TensorBoardLogger
init_args:
save_dir: *OUTPUT_ROOT
name: ""
model:
class_path: eva.vision.models.modules.SemanticSegmentationModule
init_args:
encoder:
class_path: eva.core.models.wrappers.TorchHubModel
init_args:
repo_or_dir: facebookresearch/dinov2
model_name: dinov2_vitg14_reg
pretrained: true
out_indices: 1
checkpoint_path: ${oc.env:CHECKPOINT_PATH, ../checkpoints/teacher_epoch250000.pth}
decoder:
class_path: eva.vision.models.networks.decoders.segmentation.ConvDecoderWithImage
init_args:
in_features: ${oc.env:IN_FEATURES, 1536}
num_classes: &NUM_CLASSES 5
criterion:
class_path: eva.vision.losses.DiceLoss
init_args:
softmax: true
batch: true
ignore_index: &IGNORE_INDEX 5
lr_multiplier_encoder: 0.0
optimizer:
class_path: torch.optim.AdamW
init_args:
lr: ${oc.env:LR_VALUE, 0.002}
postprocess:
predictions_transforms:
- class_path: torch.argmax
init_args:
dim: 1
metrics:
common:
- class_path: eva.metrics.AverageLoss
evaluation:
- class_path: eva.vision.metrics.defaults.MulticlassSegmentationMetrics
init_args:
num_classes: 6
ignore_index: *IGNORE_INDEX
- class_path: torchmetrics.ClasswiseWrapper
init_args:
metric:
class_path: eva.vision.metrics.MonaiDiceScore
init_args:
include_background: true
num_classes: 6
reduction: none
ignore_index: *IGNORE_INDEX
labels:
- background
- epithelial
- lymphocyte
- neutrophil
- macrophage
- ambiguous
data:
class_path: eva.DataModule
init_args:
datasets:
train:
class_path: eva.vision.datasets.MoNuSAC
init_args: &DATASET_ARGS
root: ${oc.env:DATA_ROOT, /block/eva-data/monusac}
split: train
download: ${oc.env:DOWNLOAD_DATA, false}
# Set `download: true` to download the dataset from https://monusac-2020.grand-challenge.org/Data/
# The MoNuSAC dataset is distributed under the following license:
# "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"
# (see: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode)
transforms:
class_path: torchvision.transforms.v2.Compose
init_args:
transforms:
- class_path: torchvision.transforms.v2.RandomResizedCrop
init_args:
size: ${oc.env:RESIZE_DIM, 224}
- class_path: torchvision.transforms.v2.ToDtype
init_args:
dtype: torch.float32
scale: true
- class_path: torchvision.transforms.v2.Normalize
init_args:
mean: *NORMALIZE_MEAN
std: *NORMALIZE_STD
val:
class_path: eva.vision.datasets.MoNuSAC
init_args:
<<: *DATASET_ARGS
split: test
transforms:
class_path: eva.vision.data.transforms.common.ResizeAndCrop
init_args:
size: ${oc.env:RESIZE_DIM, 224}
mean: *NORMALIZE_MEAN
std: *NORMALIZE_STD
dataloaders:
train:
batch_size: &BATCH_SIZE ${oc.env:BATCH_SIZE, 64}
num_workers: &N_DATA_WORKERS ${oc.env:N_DATA_WORKERS, 4}
shuffle: true
val:
batch_size: *BATCH_SIZE
num_workers: *N_DATA_WORKERS
|