Spaces:
Sleeping
Sleeping
| # -*- coding: utf-8 -*- | |
| # Running an Experiment Using CellViT cell segmentation network | |
| # | |
| # @ Fabian Hörst, fabian.hoerst@uk-essen.de | |
| # Institute for Artifical Intelligence in Medicine, | |
| # University Medicine Essen | |
| import inspect | |
| import os | |
| import sys | |
| currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) | |
| parentdir = os.path.dirname(currentdir) | |
| sys.path.insert(0, parentdir) | |
| import wandb | |
| from base_ml.base_cli import ExperimentBaseParser | |
| from cell_segmentation.experiments.experiment_cellvit_pannuke import ( | |
| ExperimentCellVitPanNuke, | |
| ) | |
| from cell_segmentation.experiments.experiment_cellvit_conic import ( | |
| ExperimentCellViTCoNic, | |
| ) | |
| from cell_segmentation.inference.inference_cellvit_experiment_pannuke import ( | |
| InferenceCellViT, | |
| ) | |
| if __name__ == "__main__": | |
| # Parse arguments | |
| configuration_parser = ExperimentBaseParser() | |
| configuration = configuration_parser.parse_arguments() | |
| if configuration["data"]["dataset"].lower() == "pannuke": | |
| experiment_class = ExperimentCellVitPanNuke | |
| elif configuration["data"]["dataset"].lower() == "conic": | |
| experiment_class = ExperimentCellViTCoNic | |
| # Setup experiment | |
| if "checkpoint" in configuration: | |
| # continue checkpoint | |
| experiment = experiment_class( | |
| default_conf=configuration, checkpoint=configuration["checkpoint"] | |
| ) | |
| outdir = experiment.run_experiment() | |
| inference = InferenceCellViT( | |
| run_dir=outdir, | |
| gpu=configuration["gpu"], | |
| checkpoint_name=configuration["eval_checkpoint"], | |
| magnification=configuration["data"].get("magnification", 40), | |
| ) | |
| ( | |
| trained_model, | |
| inference_dataloader, | |
| dataset_config, | |
| ) = inference.setup_patch_inference() | |
| inference.run_patch_inference( | |
| trained_model, inference_dataloader, dataset_config, generate_plots=False | |
| ) | |
| else: | |
| experiment = experiment_class(default_conf=configuration) | |
| if configuration["run_sweep"] is True: | |
| # run new sweep | |
| sweep_configuration = experiment_class.extract_sweep_arguments( | |
| configuration | |
| ) | |
| os.environ["WANDB_DIR"] = os.path.abspath( | |
| configuration["logging"]["wandb_dir"] | |
| ) | |
| sweep_id = wandb.sweep( | |
| sweep=sweep_configuration, project=configuration["logging"]["project"] | |
| ) | |
| wandb.agent(sweep_id=sweep_id, function=experiment.run_experiment) | |
| elif "agent" in configuration and configuration["agent"] is not None: | |
| # add agent to already existing sweep, not run sweep must be set to true | |
| configuration["run_sweep"] = True | |
| os.environ["WANDB_DIR"] = os.path.abspath( | |
| configuration["logging"]["wandb_dir"] | |
| ) | |
| wandb.agent( | |
| sweep_id=configuration["agent"], function=experiment.run_experiment | |
| ) | |
| else: | |
| # casual run | |
| outdir = experiment.run_experiment() | |
| inference = InferenceCellViT( | |
| run_dir=outdir, | |
| gpu=configuration["gpu"], | |
| checkpoint_name=configuration["eval_checkpoint"], | |
| magnification=configuration["data"].get("magnification", 40), | |
| ) | |
| ( | |
| trained_model, | |
| inference_dataloader, | |
| dataset_config, | |
| ) = inference.setup_patch_inference() | |
| inference.run_patch_inference( | |
| trained_model, | |
| inference_dataloader, | |
| dataset_config, | |
| generate_plots=False, | |
| ) | |
| wandb.finish() | |