diff --git a/slide2vec/configs/default_model.yaml b/slide2vec/configs/default_model.yaml index 3d7c02d..70068ae 100644 --- a/slide2vec/configs/default_model.yaml +++ b/slide2vec/configs/default_model.yaml @@ -13,7 +13,7 @@ model: arch: # architecture of custom model pretrained_weights: # path to the pretrained weights when using a custom model batch_size: 256 - tile_size: ${tiling.params.tile_size} + input_size: ${tiling.params.tile_size} restrict_to_tissue: false # whether to restrict tile content to tissue pixels only when feeding tile through encoder patch_size: 256 # if level is "region", size used to unroll the region into patches token_size: 16 # size of the tokens used model is a custom pretrained ViT diff --git a/slide2vec/main.py b/slide2vec/main.py index d93c4ea..21757e4 100644 --- a/slide2vec/main.py +++ b/slide2vec/main.py @@ -93,8 +93,7 @@ def run_feature_extraction(config_file, output_dir, run_on_cpu: False): "torch.distributed.run", f"--master_port={free_port}", "--nproc_per_node=gpu", - "-m", - "slide2vec.embed", + "slide2vec/embed.py", "--config-file", os.path.abspath(config_file), "--output-dir", @@ -103,8 +102,7 @@ def run_feature_extraction(config_file, output_dir, run_on_cpu: False): if run_on_cpu: cmd = [ sys.executable, - "-m", - "slide2vec.embed", + "slide2vec/embed.py", "--config-file", os.path.abspath(config_file), "--output-dir", @@ -127,11 +125,9 @@ def run_feature_extraction(config_file, output_dir, run_on_cpu: False): def run_feature_aggregation(config_file, output_dir, run_on_cpu: False): print("Running aggregate.py...") - # find a free port cmd = [ sys.executable, - "-m", - "slide2vec.aggregate", + "slide2vec/aggregate.py", "--config-file", os.path.abspath(config_file), "--output-dir", diff --git a/slide2vec/models/models.py b/slide2vec/models/models.py index d3ec23b..7116857 100644 --- a/slide2vec/models/models.py +++ b/slide2vec/models/models.py @@ -63,7 +63,7 @@ def __init__( model = PathoJEPA( pretrained_weights=options.pretrained_weights, arch=options.arch, - input_size=options.tile_size, + input_size=options.input_size, patch_size=options.token_size, normalize_embeddings=options.normalize_embeddings, ) @@ -77,13 +77,13 @@ def __init__( model = PandaViT( arch="vit_small", pretrained_weights=options.pretrained_weights, - input_size=options.tile_size, + input_size=options.input_size, ) elif options.name == "dino" and options.arch: model = DINOViT( arch=options.arch, pretrained_weights=options.pretrained_weights, - input_size=options.tile_size, + input_size=options.input_size, patch_size=options.token_size, ) elif options.level == "region": @@ -117,7 +117,7 @@ def __init__( tile_encoder = PathoJEPA( pretrained_weights=options.pretrained_weights, arch=options.arch, - input_size=options.patch_size, + input_size=options.input_size, patch_size=options.token_size, normalize_embeddings=options.normalize_embeddings, ) @@ -131,13 +131,13 @@ def __init__( tile_encoder = PandaViT( arch="vit_small", pretrained_weights=options.pretrained_weights, - input_size=options.tile_size, + input_size=options.input_size, ) elif options.name is None and options.arch: tile_encoder = DINOViT( arch=options.arch, pretrained_weights=options.pretrained_weights, - input_size=options.patch_size, + input_size=options.input_size, patch_size=options.token_size, ) model = RegionFeatureExtractor(tile_encoder, tile_size=options.patch_size) @@ -861,7 +861,7 @@ class RegionFeatureExtractor(nn.Module): def __init__( self, tile_encoder: nn.Module, - tile_size: int = 256, + tile_size: int, ): super(RegionFeatureExtractor, self).__init__() self.tile_encoder = tile_encoder