Skip to content
Snippets Groups Projects
Commit 37e0eeb1 authored by André Anjos's avatar André Anjos :speech_balloon:
Browse files

Merge branch 'update-dependencies' into 'main'

Update dependence to lightning (closes #61)

Closes #61

See merge request biosignal/software/mednet!20
parents 09ca9f9a e1f31348
No related branches found
No related tags found
1 merge request!20Update dependence to lightning (closes #61)
Pipeline #84423 passed
...@@ -23,6 +23,7 @@ requirements: ...@@ -23,6 +23,7 @@ requirements:
host: host:
- python >=3.10 - python >=3.10
- pip - pip
- clapper {{ clapper }}
- click {{ click }} - click {{ click }}
- grad-cam {{ grad_cam }} - grad-cam {{ grad_cam }}
- matplotlib {{ matplotlib }} - matplotlib {{ matplotlib }}
...@@ -38,10 +39,10 @@ requirements: ...@@ -38,10 +39,10 @@ requirements:
- tqdm {{ tqdm }} - tqdm {{ tqdm }}
- tensorboard {{ tensorboard }} - tensorboard {{ tensorboard }}
- lightning {{ lightning }} - lightning {{ lightning }}
- lightning >=2.1.0,!=2.1.3 - lightning >=2.2.0
- clapper
run: run:
- python >=3.10 - python >=3.10
- {{ pin_compatible('clapper') }}
- {{ pin_compatible('click') }} - {{ pin_compatible('click') }}
- {{ pin_compatible('grad-cam', max_pin='x.x') }} - {{ pin_compatible('grad-cam', max_pin='x.x') }}
- {{ pin_compatible('matplotlib') }} - {{ pin_compatible('matplotlib') }}
...@@ -57,8 +58,7 @@ requirements: ...@@ -57,8 +58,7 @@ requirements:
- {{ pin_compatible('tqdm') }} - {{ pin_compatible('tqdm') }}
- {{ pin_compatible('tensorboard') }} - {{ pin_compatible('tensorboard') }}
- {{ pin_compatible('lightning', max_pin='x.x') }} - {{ pin_compatible('lightning', max_pin='x.x') }}
- lightning >=2.1.0,!=2.1.3 - lightning >=2.2.0
- clapper
test: test:
source_files: source_files:
......
...@@ -40,10 +40,9 @@ dependencies = [ ...@@ -40,10 +40,9 @@ dependencies = [
"pillow", "pillow",
"torch>=1.8", "torch>=1.8",
"torchvision>=0.10", "torchvision>=0.10",
"lightning <2.2.0a0,>=2.1.0", "lightning>=2.2.0",
"tensorboard", "tensorboard",
"grad-cam>=1.4.8", "grad-cam>=1.4.8",
"numpydoc",
] ]
[project.urls] [project.urls]
......
...@@ -22,7 +22,6 @@ def _create_saliency_map_callable( ...@@ -22,7 +22,6 @@ def _create_saliency_map_callable(
algo_type: SaliencyMapAlgorithm, algo_type: SaliencyMapAlgorithm,
model: torch.nn.Module, model: torch.nn.Module,
target_layers: list[torch.nn.Module] | None, target_layers: list[torch.nn.Module] | None,
use_cuda: bool,
): ):
"""Create a class activation map (CAM) instance for a given model. """Create a class activation map (CAM) instance for a given model.
...@@ -34,8 +33,6 @@ def _create_saliency_map_callable( ...@@ -34,8 +33,6 @@ def _create_saliency_map_callable(
Neural network model (e.g. pasa). Neural network model (e.g. pasa).
target_layers target_layers
The target layers to compute CAM for. The target layers to compute CAM for.
use_cuda
Whether to use cuda or not.
Returns Returns
------- -------
...@@ -47,54 +44,54 @@ def _create_saliency_map_callable( ...@@ -47,54 +44,54 @@ def _create_saliency_map_callable(
match algo_type: match algo_type:
case "gradcam": case "gradcam":
return pytorch_grad_cam.GradCAM( return pytorch_grad_cam.GradCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "scorecam": case "scorecam":
return pytorch_grad_cam.ScoreCAM( return pytorch_grad_cam.ScoreCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "fullgrad": case "fullgrad":
return pytorch_grad_cam.FullGrad( return pytorch_grad_cam.FullGrad(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "randomcam": case "randomcam":
return pytorch_grad_cam.RandomCAM( return pytorch_grad_cam.RandomCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "hirescam": case "hirescam":
return pytorch_grad_cam.HiResCAM( return pytorch_grad_cam.HiResCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "gradcamelementwise": case "gradcamelementwise":
return pytorch_grad_cam.GradCAMElementWise( return pytorch_grad_cam.GradCAMElementWise(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "gradcam++", "gradcamplusplus": case "gradcam++", "gradcamplusplus":
return pytorch_grad_cam.GradCAMPlusPlus( return pytorch_grad_cam.GradCAMPlusPlus(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "xgradcam": case "xgradcam":
return pytorch_grad_cam.XGradCAM( return pytorch_grad_cam.XGradCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "ablationcam": case "ablationcam":
assert ( assert (
target_layers is not None target_layers is not None
), "AblationCAM cannot have target_layers=None" ), "AblationCAM cannot have target_layers=None"
return pytorch_grad_cam.AblationCAM( return pytorch_grad_cam.AblationCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "eigencam": case "eigencam":
return pytorch_grad_cam.EigenCAM( return pytorch_grad_cam.EigenCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "eigengradcam": case "eigengradcam":
return pytorch_grad_cam.EigenGradCAM( return pytorch_grad_cam.EigenGradCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case "layercam": case "layercam":
return pytorch_grad_cam.LayerCAM( return pytorch_grad_cam.LayerCAM(
model=model, target_layers=target_layers, use_cuda=use_cuda model=model, target_layers=target_layers
) )
case _: case _:
raise ValueError( raise ValueError(
...@@ -180,8 +177,6 @@ def run( ...@@ -180,8 +177,6 @@ def run(
else: else:
raise TypeError(f"Model of type `{type(model)}` is not yet supported.") raise TypeError(f"Model of type `{type(model)}` is not yet supported.")
use_cuda = device_manager.device_type == "cuda"
# prepares model for evaluation, cast to target device # prepares model for evaluation, cast to target device
device = device_manager.torch_device() device = device_manager.torch_device()
model = model.to(device) model = model.to(device)
...@@ -191,7 +186,6 @@ def run( ...@@ -191,7 +186,6 @@ def run(
saliency_map_algorithm, saliency_map_algorithm,
model, model,
target_layers, # type: ignore target_layers, # type: ignore
use_cuda,
) )
for k, v in datamodule.predict_dataloader().items(): for k, v in datamodule.predict_dataloader().items():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment