Skip to content
Open
Changes from 5 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b1e4a50
Perceptual loss changes.
Nov 26, 2025
0aeb4d9
Merge branch '8627-perceptual-loss-errors-out-after-hitting-the-maxim…
Nov 26, 2025
fa0639b
Fixes
Nov 26, 2025
685aee2
Merge branch 'dev' into 8627-perceptual-loss-errors-out-after-hitting…
virginiafdez Dec 2, 2025
915de5f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Dec 2, 2025
5594bfe
Unnecessary import
Nov 26, 2025
b065de7
Merge branch '8627-perceptual-loss-errors-out-after-hitting-the-maxim…
Dec 5, 2025
c99e16e
Add check of network name
Dec 5, 2025
717b99b
Update monai/losses/perceptual.py
ericspod Dec 5, 2025
b276f3c
Update monai/losses/perceptual.py
ericspod Dec 5, 2025
2156b84
Update monai/losses/perceptual.py
ericspod Dec 5, 2025
e2b982e
Update monai/losses/perceptual.py
virginiafdez Dec 9, 2025
e3be8de
Bug
Dec 9, 2025
b02053b
Merge branch '8627-perceptual-loss-errors-out-after-hitting-the-maxim…
Dec 9, 2025
6dfc209
DCO Remediation Commit for Virginia Fernandez <virginia.fernandez@kcl…
Dec 9, 2025
d258390
Reformatting
Dec 9, 2025
2520920
fix no space left issue
KumoLiu Dec 26, 2025
d2ab308
fix typo in error message
KumoLiu Dec 26, 2025
081a673
try fix no space left in packaging pipeline
KumoLiu Dec 26, 2025
cff03d6
fix setup
KumoLiu Dec 26, 2025
f140c16
Merge branch 'dev' into 8627-perceptual-loss-errors-out-after-hitting…
garciadias Mar 19, 2026
11cd023
Merge branch 'dev' into 8627-perceptual-loss-errors-out-after-hitting…
ericspod Mar 30, 2026
2eb05ff
Merge branch 'dev' into 8627-perceptual-loss-errors-out-after-hitting…
ericspod Mar 30, 2026
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
26 changes: 19 additions & 7 deletions monai/losses/perceptual.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@


class PercetualNetworkType(StrEnum):
Comment thread
virginiafdez marked this conversation as resolved.
Outdated
"""Types of neural networks that are supported by perceptua loss."""
Comment thread
ericspod marked this conversation as resolved.
Outdated

alex = "alex"
vgg = "vgg"
squeeze = "squeeze"
Expand Down Expand Up @@ -108,9 +110,11 @@ def __init__(

self.spatial_dims = spatial_dims
self.perceptual_function: nn.Module

# If spatial_dims is 3, only MedicalNet supports 3D models, otherwise, spatial_dims=2 and fake_3D must be used.
if spatial_dims == 3 and is_fake_3d is False:
self.perceptual_function = MedicalNetPerceptualSimilarity(
net=network_type, verbose=False, channel_wise=channel_wise
net=network_type, verbose=False, channel_wise=channel_wise, cache_dir=cache_dir
)
elif "radimagenet_" in network_type:
self.perceptual_function = RadImageNetPerceptualSimilarity(net=network_type, verbose=False)
Comment thread
virginiafdez marked this conversation as resolved.
Outdated
Expand All @@ -122,7 +126,9 @@ def __init__(
pretrained_state_dict_key=pretrained_state_dict_key,
)
else:
# VGG, AlexNet and SqueezeNet are independently handled by LPIPS.
self.perceptual_function = LPIPS(pretrained=pretrained, net=network_type, verbose=False)

self.is_fake_3d = is_fake_3d
self.fake_3d_ratio = fake_3d_ratio
self.channel_wise = channel_wise
Expand Down Expand Up @@ -194,7 +200,7 @@ class MedicalNetPerceptualSimilarity(nn.Module):
"""
Component to perform the perceptual evaluation with the networks pretrained by Chen, et al. "Med3D: Transfer
Learning for 3D Medical Image Analysis". This class uses torch Hub to download the networks from
"Warvito/MedicalNet-models".
"Project-MONAI/perceptual-models".

Args:
net: {``"medicalnet_resnet10_23datasets"``, ``"medicalnet_resnet50_23datasets"``}
Expand All @@ -205,11 +211,17 @@ class MedicalNetPerceptualSimilarity(nn.Module):
"""

def __init__(
Comment thread
virginiafdez marked this conversation as resolved.
self, net: str = "medicalnet_resnet10_23datasets", verbose: bool = False, channel_wise: bool = False
self,
net: str = "medicalnet_resnet_10_23datasets",
Comment thread
virginiafdez marked this conversation as resolved.
Outdated
Comment thread
ericspod marked this conversation as resolved.
Outdated
verbose: bool = False,
channel_wise: bool = False,
cache_dir: str | None = None,
) -> None:
super().__init__()
torch.hub._validate_not_a_forked_repo = lambda a, b, c: True
Comment thread
virginiafdez marked this conversation as resolved.
Outdated
self.model = torch.hub.load("warvito/MedicalNet-models", model=net, verbose=verbose, trust_repo=True)
self.model = torch.hub.load(
Comment thread
virginiafdez marked this conversation as resolved.
"Project-MONAI/perceptual-models:main", model=net, verbose=verbose, cache_dir=cache_dir
)
self.eval()

self.channel_wise = channel_wise
Expand Down Expand Up @@ -287,17 +299,17 @@ class RadImageNetPerceptualSimilarity(nn.Module):
"""
Component to perform the perceptual evaluation with the networks pretrained on RadImagenet (pretrained by Mei, et
al. "RadImageNet: An Open Radiologic Deep Learning Research Dataset for Effective Transfer Learning"). This class
uses torch Hub to download the networks from "Warvito/radimagenet-models".
uses torch Hub to download the networks from "Project-MONAI/perceptual-models".

Args:
net: {``"radimagenet_resnet50"``}
Specifies the network architecture to use. Defaults to ``"radimagenet_resnet50"``.
verbose: if false, mute messages from torch Hub load function.
"""

def __init__(self, net: str = "radimagenet_resnet50", verbose: bool = False) -> None:
def __init__(self, net: str = "radimagenet_resnet50", verbose: bool = False, cache_dir: str | None = None) -> None:
super().__init__()
self.model = torch.hub.load("Warvito/radimagenet-models", model=net, verbose=verbose, trust_repo=True)
self.model = torch.hub.load("Project-MONAI/perceptual-models", model=net, verbose=verbose, cache_dir=cache_dir)
self.eval()

for param in self.parameters():
Expand Down
Loading