Ejemplo n.º 1
0
with_crf = Switch(False, epoch_to_value={100: True})


# predict
@unpack_args
@add_extract_dims(1, 2)
def predict(image, spacing):
    return inference_step(image,
                          spacing,
                          architecture=model,
                          activation=torch.sigmoid)


# metrics
individual_metrics = {
    'dice': binary_to_bool(drop_spacing(dice_score)),
    'surface_dice': binary_to_bool(surface_dice),
}
val_metrics = convert_to_aggregated(individual_metrics)

# run experiment
logger = TBLogger(EXPERIMENT_PATH / FOLD / 'logs')
commands.populate(EXPERIMENT_PATH / 'config.json', save_json, CONFIG,
                  EXPERIMENT_PATH / 'config.json')
commands.populate(
    EXPERIMENT_PATH / FOLD / 'model.pth', lambda: [
        train(crf_train_step,
              batch_iter,
              n_epochs=CONFIG['n_epochs'],
              logger=logger,
              validate=lambda:
Ejemplo n.º 2
0
).to(CONFIG['device'])

criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=CONFIG['lr'])


# predict
@patches_grid(patch_size=PATCH_SIZE, stride=7 * PATCH_SIZE // 8)
@add_extract_dims(1)
def predict(image):
    return inference_step(image, architecture=model, activation=nn.Softmax(1))


# metrics
individual_metrics = {
    **{f'dice_{c}': multiclass_to_bool(drop_spacing(dice_score), c) for c in range(1, dataset.n_classes)},
    **{f'surface_dice_{c}': multiclass_to_bool(surface_dice, c) for c in range(1, dataset.n_classes)}
}
val_metrics = convert_to_aggregated(individual_metrics)


# run experiment
logger = TBLogger(EXPERIMENT_PATH / FOLD / 'logs')
commands.populate(EXPERIMENT_PATH / 'config.json', save_json, CONFIG, EXPERIMENT_PATH / 'config.json')
commands.populate(EXPERIMENT_PATH / FOLD / 'model.pth', lambda : [
    train(train_step, batch_iter, n_epochs=CONFIG['n_epochs'], logger=logger,
          validate=lambda : compute_metrics(predict, train_dataset.load_image,
                                            lambda i: (train_dataset.load_gt(i), train_dataset.load_spacing(i)),
                                            val_ids, val_metrics),
          architecture=model, optimizer=optimizer, criterion=criterion, lr=CONFIG['lr']),
    save_model_state(model, EXPERIMENT_PATH / FOLD / 'model.pth')
Ejemplo n.º 3
0

# predict
@unpack_args
@add_extract_dims(1)
def predict(image, spacing):
    return inference_step(image,
                          spacing,
                          architecture=model,
                          activation=nn.Softmax(1))


# metrics
individual_metrics = {
    **{
        f'dice_{c}': multiclass_to_bool(drop_spacing(dice_score), c)
        for c in range(1, dataset.n_classes)
    },
    **{
        f'surface_dice_{c}': multiclass_to_bool(surface_dice, c)
        for c in range(1, dataset.n_classes)
    }
}
val_metrics = convert_to_aggregated(individual_metrics)

# run experiment
logger = TBLogger(EXPERIMENT_PATH / FOLD / 'logs')
commands.populate(EXPERIMENT_PATH / 'config.json', save_json, CONFIG,
                  EXPERIMENT_PATH / 'config.json')
commands.populate(
    EXPERIMENT_PATH / FOLD / 'model.pth', lambda: [