Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow bbox in occ sens constructor #5169

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions monai/visualize/occlusion_sensitivity.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ def __init__(
per_channel: bool = True,
upsampler: Optional[Callable] = default_upsampler,
verbose: bool = True,
bbox: Optional[Sequence] = None
) -> None:
"""Occlusion sensitivity constructor.

Expand All @@ -172,6 +173,12 @@ def __init__(
N-dimensional linear (bilinear, trilinear, etc.) depending on num spatial
dimensions of input.
verbose: Use ``tqdm.trange`` output (if available).
b_box: Bounding box on which to perform the analysis. The output image will be limited to this size.
There should be a minimum and maximum for all dimensions except batch: ``[min1, max1, min2, max2,...]``.
* By default, the whole image will be used. Decreasing the size will speed the analysis up, which might
be useful for larger images.
* Min and max are inclusive, so ``[0, 63, ...]`` will have size ``(64, ...)``.
* Use -ve to use ``min=0`` and ``max=im.shape[x]-1`` for xth dimension.
"""

self.nn_module = nn_module
Expand All @@ -182,6 +189,7 @@ def __init__(
self.stride = stride
self.per_channel = per_channel
self.verbose = verbose
self.bbox = bbox
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make the doc-string and code in consistent: "bbox" vs "b_box".
I would suggest b_box as the existing arg is b_box.

Thanks.


def _compute_occlusion_sensitivity(self, x, b_box):

Expand Down Expand Up @@ -298,6 +306,7 @@ def __call__(self, x: torch.Tensor, b_box: Optional[Sequence] = None) -> Tuple[t
* The most probable class when the corresponding part of the image is occluded (``argmax(dim=-1)``).
Both images will be cropped if a bounding box used, but voxel sizes will always match the input.
"""
bbox = bbox if bbox is not None else self.bbox
Copy link
Contributor

@wyli wyli Sep 16, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the method is currently using b_box

Suggested change
bbox = bbox if bbox is not None else self.bbox
bbox = b_box if b_box is not None else self.bbox


with eval_mode(self.nn_module):

Expand Down