monai-weekly 1.5.dev2448__py3-none-any.whl → 1.5.dev2449__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- monai/__init__.py +1 -1
- monai/_version.py +3 -3
- monai/losses/dice.py +33 -22
- monai/losses/tversky.py +11 -8
- monai/losses/utils.py +68 -0
- monai/networks/blocks/pos_embed_utils.py +2 -2
- monai/networks/nets/swin_unetr.py +2 -2
- monai/transforms/utility/array.py +5 -6
- {monai_weekly-1.5.dev2448.dist-info → monai_weekly-1.5.dev2449.dist-info}/METADATA +1 -1
- {monai_weekly-1.5.dev2448.dist-info → monai_weekly-1.5.dev2449.dist-info}/RECORD +13 -12
- {monai_weekly-1.5.dev2448.dist-info → monai_weekly-1.5.dev2449.dist-info}/LICENSE +0 -0
- {monai_weekly-1.5.dev2448.dist-info → monai_weekly-1.5.dev2449.dist-info}/WHEEL +0 -0
- {monai_weekly-1.5.dev2448.dist-info → monai_weekly-1.5.dev2449.dist-info}/top_level.txt +0 -0
monai/__init__.py
CHANGED
monai/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2024-12-
|
11
|
+
"date": "2024-12-08T02:32:52+0000",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "1.5.
|
14
|
+
"full-revisionid": "8cad248c8b374702245989507da1dd8430ef863f",
|
15
|
+
"version": "1.5.dev2449"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
monai/losses/dice.py
CHANGED
@@ -23,6 +23,7 @@ from torch.nn.modules.loss import _Loss
|
|
23
23
|
|
24
24
|
from monai.losses.focal_loss import FocalLoss
|
25
25
|
from monai.losses.spatial_mask import MaskedLoss
|
26
|
+
from monai.losses.utils import compute_tp_fp_fn
|
26
27
|
from monai.networks import one_hot
|
27
28
|
from monai.utils import DiceCEReduction, LossReduction, Weight, look_up_option, pytorch_after
|
28
29
|
|
@@ -39,8 +40,16 @@ class DiceLoss(_Loss):
|
|
39
40
|
The `smooth_nr` and `smooth_dr` parameters are values added to the intersection and union components of
|
40
41
|
the inter-over-union calculation to smooth results respectively, these values should be small.
|
41
42
|
|
42
|
-
The original
|
43
|
-
|
43
|
+
The original papers:
|
44
|
+
|
45
|
+
Milletari, F. et. al. (2016) V-Net: Fully Convolutional Neural Networks for Volumetric
|
46
|
+
Medical Image Segmentation. 3DV 2016.
|
47
|
+
|
48
|
+
Wang, Z. et. al. (2023) Jaccard Metric Losses: Optimizing the Jaccard Index with
|
49
|
+
Soft Labels. NeurIPS 2023.
|
50
|
+
|
51
|
+
Wang, Z. et. al. (2023) Dice Semimetric Losses: Optimizing the Dice Score with
|
52
|
+
Soft Labels. MICCAI 2023.
|
44
53
|
|
45
54
|
"""
|
46
55
|
|
@@ -58,6 +67,7 @@ class DiceLoss(_Loss):
|
|
58
67
|
smooth_dr: float = 1e-5,
|
59
68
|
batch: bool = False,
|
60
69
|
weight: Sequence[float] | float | int | torch.Tensor | None = None,
|
70
|
+
soft_label: bool = False,
|
61
71
|
) -> None:
|
62
72
|
"""
|
63
73
|
Args:
|
@@ -89,6 +99,8 @@ class DiceLoss(_Loss):
|
|
89
99
|
of the sequence should be the same as the number of classes. If not ``include_background``,
|
90
100
|
the number of classes should not include the background category class 0).
|
91
101
|
The value/values should be no less than 0. Defaults to None.
|
102
|
+
soft_label: whether the target contains non-binary values (soft labels) or not.
|
103
|
+
If True a soft label formulation of the loss will be used.
|
92
104
|
|
93
105
|
Raises:
|
94
106
|
TypeError: When ``other_act`` is not an ``Optional[Callable]``.
|
@@ -114,6 +126,7 @@ class DiceLoss(_Loss):
|
|
114
126
|
weight = torch.as_tensor(weight) if weight is not None else None
|
115
127
|
self.register_buffer("class_weight", weight)
|
116
128
|
self.class_weight: None | torch.Tensor
|
129
|
+
self.soft_label = soft_label
|
117
130
|
|
118
131
|
def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
|
119
132
|
"""
|
@@ -174,21 +187,15 @@ class DiceLoss(_Loss):
|
|
174
187
|
# reducing spatial dimensions and batch
|
175
188
|
reduce_axis = [0] + reduce_axis
|
176
189
|
|
177
|
-
|
178
|
-
|
179
|
-
if self.
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
pred_o = torch.sum(input, dim=reduce_axis)
|
185
|
-
|
186
|
-
denominator = ground_o + pred_o
|
187
|
-
|
188
|
-
if self.jaccard:
|
189
|
-
denominator = 2.0 * (denominator - intersection)
|
190
|
+
ord = 2 if self.squared_pred else 1
|
191
|
+
tp, fp, fn = compute_tp_fp_fn(input, target, reduce_axis, ord, self.soft_label)
|
192
|
+
if not self.jaccard:
|
193
|
+
fp *= 0.5
|
194
|
+
fn *= 0.5
|
195
|
+
numerator = 2 * tp + self.smooth_nr
|
196
|
+
denominator = 2 * (tp + fp + fn) + self.smooth_dr
|
190
197
|
|
191
|
-
f: torch.Tensor = 1
|
198
|
+
f: torch.Tensor = 1 - numerator / denominator
|
192
199
|
|
193
200
|
num_of_classes = target.shape[1]
|
194
201
|
if self.class_weight is not None and num_of_classes != 1:
|
@@ -272,6 +279,7 @@ class GeneralizedDiceLoss(_Loss):
|
|
272
279
|
smooth_nr: float = 1e-5,
|
273
280
|
smooth_dr: float = 1e-5,
|
274
281
|
batch: bool = False,
|
282
|
+
soft_label: bool = False,
|
275
283
|
) -> None:
|
276
284
|
"""
|
277
285
|
Args:
|
@@ -295,6 +303,8 @@ class GeneralizedDiceLoss(_Loss):
|
|
295
303
|
batch: whether to sum the intersection and union areas over the batch dimension before the dividing.
|
296
304
|
Defaults to False, intersection over union is computed from each item in the batch.
|
297
305
|
If True, the class-weighted intersection and union areas are first summed across the batches.
|
306
|
+
soft_label: whether the target contains non-binary values (soft labels) or not.
|
307
|
+
If True a soft label formulation of the loss will be used.
|
298
308
|
|
299
309
|
Raises:
|
300
310
|
TypeError: When ``other_act`` is not an ``Optional[Callable]``.
|
@@ -319,6 +329,7 @@ class GeneralizedDiceLoss(_Loss):
|
|
319
329
|
self.smooth_nr = float(smooth_nr)
|
320
330
|
self.smooth_dr = float(smooth_dr)
|
321
331
|
self.batch = batch
|
332
|
+
self.soft_label = soft_label
|
322
333
|
|
323
334
|
def w_func(self, grnd):
|
324
335
|
if self.w_type == str(Weight.SIMPLE):
|
@@ -370,13 +381,13 @@ class GeneralizedDiceLoss(_Loss):
|
|
370
381
|
reduce_axis: list[int] = torch.arange(2, len(input.shape)).tolist()
|
371
382
|
if self.batch:
|
372
383
|
reduce_axis = [0] + reduce_axis
|
373
|
-
intersection = torch.sum(target * input, reduce_axis)
|
374
384
|
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
denominator =
|
385
|
+
tp, fp, fn = compute_tp_fp_fn(input, target, reduce_axis, 1, self.soft_label)
|
386
|
+
fp *= 0.5
|
387
|
+
fn *= 0.5
|
388
|
+
denominator = 2 * (tp + fp + fn)
|
379
389
|
|
390
|
+
ground_o = torch.sum(target, reduce_axis)
|
380
391
|
w = self.w_func(ground_o.float())
|
381
392
|
infs = torch.isinf(w)
|
382
393
|
if self.batch:
|
@@ -388,7 +399,7 @@ class GeneralizedDiceLoss(_Loss):
|
|
388
399
|
w = w + infs * max_values
|
389
400
|
|
390
401
|
final_reduce_dim = 0 if self.batch else 1
|
391
|
-
numer = 2.0 * (
|
402
|
+
numer = 2.0 * (tp * w).sum(final_reduce_dim, keepdim=True) + self.smooth_nr
|
392
403
|
denom = (denominator * w).sum(final_reduce_dim, keepdim=True) + self.smooth_dr
|
393
404
|
f: torch.Tensor = 1.0 - (numer / denom)
|
394
405
|
|
monai/losses/tversky.py
CHANGED
@@ -17,6 +17,7 @@ from collections.abc import Callable
|
|
17
17
|
import torch
|
18
18
|
from torch.nn.modules.loss import _Loss
|
19
19
|
|
20
|
+
from monai.losses.utils import compute_tp_fp_fn
|
20
21
|
from monai.networks import one_hot
|
21
22
|
from monai.utils import LossReduction
|
22
23
|
|
@@ -28,6 +29,9 @@ class TverskyLoss(_Loss):
|
|
28
29
|
Sadegh et al. (2017) Tversky loss function for image segmentation
|
29
30
|
using 3D fully convolutional deep networks. (https://arxiv.org/abs/1706.05721)
|
30
31
|
|
32
|
+
Wang, Z. et. al. (2023) Dice Semimetric Losses: Optimizing the Dice Score with
|
33
|
+
Soft Labels. MICCAI 2023.
|
34
|
+
|
31
35
|
Adapted from:
|
32
36
|
https://github.com/NifTK/NiftyNet/blob/v0.6.0/niftynet/layer/loss_segmentation.py#L631
|
33
37
|
|
@@ -46,6 +50,7 @@ class TverskyLoss(_Loss):
|
|
46
50
|
smooth_nr: float = 1e-5,
|
47
51
|
smooth_dr: float = 1e-5,
|
48
52
|
batch: bool = False,
|
53
|
+
soft_label: bool = False,
|
49
54
|
) -> None:
|
50
55
|
"""
|
51
56
|
Args:
|
@@ -70,6 +75,8 @@ class TverskyLoss(_Loss):
|
|
70
75
|
batch: whether to sum the intersection and union areas over the batch dimension before the dividing.
|
71
76
|
Defaults to False, a Dice loss value is computed independently from each item in the batch
|
72
77
|
before any `reduction`.
|
78
|
+
soft_label: whether the target contains non-binary values (soft labels) or not.
|
79
|
+
If True a soft label formulation of the loss will be used.
|
73
80
|
|
74
81
|
Raises:
|
75
82
|
TypeError: When ``other_act`` is not an ``Optional[Callable]``.
|
@@ -93,6 +100,7 @@ class TverskyLoss(_Loss):
|
|
93
100
|
self.smooth_nr = float(smooth_nr)
|
94
101
|
self.smooth_dr = float(smooth_dr)
|
95
102
|
self.batch = batch
|
103
|
+
self.soft_label = soft_label
|
96
104
|
|
97
105
|
def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
|
98
106
|
"""
|
@@ -134,20 +142,15 @@ class TverskyLoss(_Loss):
|
|
134
142
|
if target.shape != input.shape:
|
135
143
|
raise AssertionError(f"ground truth has differing shape ({target.shape}) from input ({input.shape})")
|
136
144
|
|
137
|
-
p0 = input
|
138
|
-
p1 = 1 - p0
|
139
|
-
g0 = target
|
140
|
-
g1 = 1 - g0
|
141
|
-
|
142
145
|
# reducing only spatial dimensions (not batch nor channels)
|
143
146
|
reduce_axis: list[int] = torch.arange(2, len(input.shape)).tolist()
|
144
147
|
if self.batch:
|
145
148
|
# reducing spatial dimensions and batch
|
146
149
|
reduce_axis = [0] + reduce_axis
|
147
150
|
|
148
|
-
tp =
|
149
|
-
fp
|
150
|
-
fn
|
151
|
+
tp, fp, fn = compute_tp_fp_fn(input, target, reduce_axis, 1, self.soft_label, False)
|
152
|
+
fp *= self.alpha
|
153
|
+
fn *= self.beta
|
151
154
|
numerator = tp + self.smooth_nr
|
152
155
|
denominator = tp + fp + fn + self.smooth_dr
|
153
156
|
|
monai/losses/utils.py
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
# Copyright (c) MONAI Consortium
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
9
|
+
# See the License for the specific language governing permissions and
|
10
|
+
# limitations under the License.
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
import torch
|
15
|
+
import torch.linalg as LA
|
16
|
+
|
17
|
+
|
18
|
+
def compute_tp_fp_fn(
|
19
|
+
input: torch.Tensor,
|
20
|
+
target: torch.Tensor,
|
21
|
+
reduce_axis: list[int],
|
22
|
+
ord: int,
|
23
|
+
soft_label: bool,
|
24
|
+
decoupled: bool = True,
|
25
|
+
) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
|
26
|
+
"""
|
27
|
+
Args:
|
28
|
+
input: the shape should be BNH[WD], where N is the number of classes.
|
29
|
+
target: the shape should be BNH[WD] or B1H[WD], where N is the number of classes.
|
30
|
+
reduce_axis: the axis to be reduced.
|
31
|
+
ord: the order of the vector norm.
|
32
|
+
soft_label: whether the target contains non-binary values (soft labels) or not.
|
33
|
+
If True a soft label formulation of the loss will be used.
|
34
|
+
decoupled: whether the input and the target should be decoupled when computing fp and fn.
|
35
|
+
Only for the original implementation when soft_label is False.
|
36
|
+
|
37
|
+
Adapted from:
|
38
|
+
https://github.com/zifuwanggg/JDTLosses
|
39
|
+
"""
|
40
|
+
|
41
|
+
# the original implementation that is erroneous with soft labels
|
42
|
+
if ord == 1 and not soft_label:
|
43
|
+
tp = torch.sum(input * target, dim=reduce_axis)
|
44
|
+
# the original implementation of Dice and Jaccard loss
|
45
|
+
if decoupled:
|
46
|
+
fp = torch.sum(input, dim=reduce_axis) - tp
|
47
|
+
fn = torch.sum(target, dim=reduce_axis) - tp
|
48
|
+
# the original implementation of Tversky loss
|
49
|
+
else:
|
50
|
+
fp = torch.sum(input * (1 - target), dim=reduce_axis)
|
51
|
+
fn = torch.sum((1 - input) * target, dim=reduce_axis)
|
52
|
+
# the new implementation that is correct with soft labels
|
53
|
+
# and it is identical to the original implementation with hard labels
|
54
|
+
else:
|
55
|
+
pred_o = LA.vector_norm(input, ord=ord, dim=reduce_axis)
|
56
|
+
ground_o = LA.vector_norm(target, ord=ord, dim=reduce_axis)
|
57
|
+
difference = LA.vector_norm(input - target, ord=ord, dim=reduce_axis)
|
58
|
+
|
59
|
+
if ord > 1:
|
60
|
+
pred_o = torch.pow(pred_o, exponent=ord)
|
61
|
+
ground_o = torch.pow(ground_o, exponent=ord)
|
62
|
+
difference = torch.pow(difference, exponent=ord)
|
63
|
+
|
64
|
+
tp = (pred_o + ground_o - difference) / 2
|
65
|
+
fp = pred_o - tp
|
66
|
+
fn = ground_o - tp
|
67
|
+
|
68
|
+
return tp, fp, fn
|
@@ -56,7 +56,7 @@ def build_sincos_position_embedding(
|
|
56
56
|
grid_h = torch.arange(h, dtype=torch.float32)
|
57
57
|
grid_w = torch.arange(w, dtype=torch.float32)
|
58
58
|
|
59
|
-
grid_h, grid_w = torch.meshgrid(grid_h, grid_w
|
59
|
+
grid_h, grid_w = torch.meshgrid(grid_h, grid_w)
|
60
60
|
|
61
61
|
if embed_dim % 4 != 0:
|
62
62
|
raise AssertionError("Embed dimension must be divisible by 4 for 2D sin-cos position embedding")
|
@@ -75,7 +75,7 @@ def build_sincos_position_embedding(
|
|
75
75
|
grid_w = torch.arange(w, dtype=torch.float32)
|
76
76
|
grid_d = torch.arange(d, dtype=torch.float32)
|
77
77
|
|
78
|
-
grid_h, grid_w, grid_d = torch.meshgrid(grid_h, grid_w, grid_d
|
78
|
+
grid_h, grid_w, grid_d = torch.meshgrid(grid_h, grid_w, grid_d)
|
79
79
|
|
80
80
|
if embed_dim % 6 != 0:
|
81
81
|
raise AssertionError("Embed dimension must be divisible by 6 for 3D sin-cos position embedding")
|
@@ -75,7 +75,7 @@ class SwinUNETR(nn.Module):
|
|
75
75
|
dropout_path_rate: float = 0.0,
|
76
76
|
normalize: bool = True,
|
77
77
|
norm_layer: type[LayerNorm] = nn.LayerNorm,
|
78
|
-
patch_norm: bool =
|
78
|
+
patch_norm: bool = False,
|
79
79
|
use_checkpoint: bool = False,
|
80
80
|
spatial_dims: int = 3,
|
81
81
|
downsample: str | nn.Module = "merging",
|
@@ -102,7 +102,7 @@ class SwinUNETR(nn.Module):
|
|
102
102
|
dropout_path_rate: drop path rate.
|
103
103
|
normalize: normalize output intermediate features in each stage.
|
104
104
|
norm_layer: normalization layer.
|
105
|
-
patch_norm: whether to apply normalization to the patch embedding.
|
105
|
+
patch_norm: whether to apply normalization to the patch embedding. Default is False.
|
106
106
|
use_checkpoint: use gradient checkpointing for reduced memory usage.
|
107
107
|
spatial_dims: number of spatial dims.
|
108
108
|
downsample: module used for downsampling, available options are `"mergingv2"`, `"merging"` and a
|
@@ -1054,12 +1054,11 @@ class ClassesToIndices(Transform, MultiSampleTrait):
|
|
1054
1054
|
|
1055
1055
|
class ConvertToMultiChannelBasedOnBratsClasses(Transform):
|
1056
1056
|
"""
|
1057
|
-
Convert labels to multi channels based on brats18 classes
|
1058
|
-
|
1059
|
-
label
|
1060
|
-
label
|
1061
|
-
|
1062
|
-
and ET (Enhancing tumor).
|
1057
|
+
Convert labels to multi channels based on `brats18 <https://www.med.upenn.edu/sbia/brats2018/data.html>`_ classes,
|
1058
|
+
which include TC (Tumor core), WT (Whole tumor) and ET (Enhancing tumor):
|
1059
|
+
label 1 is the necrotic and non-enhancing tumor core, which should be counted under TC and WT subregion,
|
1060
|
+
label 2 is the peritumoral edema, which is counted only under WT subregion,
|
1061
|
+
label 4 is the GD-enhancing tumor, which should be counted under ET, TC, WT subregions.
|
1063
1062
|
"""
|
1064
1063
|
|
1065
1064
|
backend = [TransformBackends.TORCH, TransformBackends.NUMPY]
|
@@ -1,5 +1,5 @@
|
|
1
|
-
monai/__init__.py,sha256=
|
2
|
-
monai/_version.py,sha256=
|
1
|
+
monai/__init__.py,sha256=8nDtqXXT8g-2RkTMzJScb7J2ivFmb37BrqgM3S_NJ1k,4095
|
2
|
+
monai/_version.py,sha256=uJdYCwRIEg12C-k2c1DKHw0XzzOkPRe-G7r0glT9iYU,503
|
3
3
|
monai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
monai/_extensions/__init__.py,sha256=NEBPreRhQ8H9gVvgrLr_y52_TmqB96u_u4VQmeNT93I,642
|
5
5
|
monai/_extensions/loader.py,sha256=7SiKw36q-nOzH8CRbBurFrz7GM40GCu7rc93Tm8XpnI,3643
|
@@ -204,7 +204,7 @@ monai/losses/barlow_twins.py,sha256=prDdaY0vXAXMuVDmc9Tv6svRZzNwKA0LdsmRaUmusiI,
|
|
204
204
|
monai/losses/cldice.py,sha256=NeUVJuFjowlH90MSLtq8HJzhzLVwal_G7gaOyc1_5OY,6328
|
205
205
|
monai/losses/contrastive.py,sha256=-SCvgQOA1JADQaFl7S4wEoIFtNd4uFkfTPlkMkky_LQ,3261
|
206
206
|
monai/losses/deform.py,sha256=mBOvFgKyW1qw9267AZCd0h_xi10xvy_ybYfhzQzl5rI,9701
|
207
|
-
monai/losses/dice.py,sha256=
|
207
|
+
monai/losses/dice.py,sha256=U5SHjK4ja-Csb8ibqcrmbPu6ZVoCnBh7wx9j9Lm59bQ,52050
|
208
208
|
monai/losses/ds_loss.py,sha256=ts92Rc_YAkfb5WUUWxRTecpY32lVwC20pu7u-dJCgyY,3854
|
209
209
|
monai/losses/focal_loss.py,sha256=OhAtxzAwZ1CoNGH1S2dQbG7iDyowYUqv64KXi0GgMhk,11772
|
210
210
|
monai/losses/giou_loss.py,sha256=Mogq6fR0tO__Xj0Ul388QMEx03XrSS-Ue96i9ahY-uo,2795
|
@@ -217,8 +217,9 @@ monai/losses/spatial_mask.py,sha256=rPyW8fJPSdqHUS7YB7m30Sq4G-YYpobO_fvKsFSAFQ0,
|
|
217
217
|
monai/losses/spectral_loss.py,sha256=PqmZdmJOAzaarW0bzBu8SeL9sOy3XQhul7pnLY4Ih-I,3368
|
218
218
|
monai/losses/ssim_loss.py,sha256=v8LaVXtBzpTey80CBtsWTs5qWw7fiJwYAXqXcCgo5kA,5058
|
219
219
|
monai/losses/sure_loss.py,sha256=PDDNNeZm8SLPRCDUPbc8o4--ribHnY4nbo8y55nRo0w,8179
|
220
|
-
monai/losses/tversky.py,sha256=
|
220
|
+
monai/losses/tversky.py,sha256=uLuqCvsac8OabTJzKQEzAfAvlwrflYCh0s76rgbcVJ0,6955
|
221
221
|
monai/losses/unified_focal_loss.py,sha256=rCj8IpueYH_UMrOUXU0tjbXIN4Uix3bGnRZQtRvl7Sg,10224
|
222
|
+
monai/losses/utils.py,sha256=wrpKcEO0XhbFOHz_jJRqeAeIgpMiMxmepnRf31_DNRU,2786
|
222
223
|
monai/metrics/__init__.py,sha256=DUjK3_qfGZbw0zCv6OJgMSL3AfiYN47aYqLsxn69-HU,2174
|
223
224
|
monai/metrics/active_learning_metrics.py,sha256=uKID2O4mnY-9P2ZzyT4sqJd2NfgzjSpNKpAwulWCozU,8211
|
224
225
|
monai/metrics/confusion_matrix.py,sha256=Spb20jYPnbgGZfPKDQI36ePznPf1xujxhboNnW8HxdQ,15064
|
@@ -264,7 +265,7 @@ monai/networks/blocks/localnet_block.py,sha256=b2-ZZvkMPphHJZYTbwEZDhqA-mMBSFM5W
|
|
264
265
|
monai/networks/blocks/mednext_block.py,sha256=GKaFkRvmho79yxwfYyeSaJtHFtk185dY0tA4_rPnsQA,10487
|
265
266
|
monai/networks/blocks/mlp.py,sha256=qw_jgyrYwoQ5WYBM1rtSSaO4C837ZbctoRKhh_BQQFI,3341
|
266
267
|
monai/networks/blocks/patchembedding.py,sha256=tp0coxpi70LcUk03HbnygFeCxcBv5bNHJbw1crIG_Js,8956
|
267
|
-
monai/networks/blocks/pos_embed_utils.py,sha256=
|
268
|
+
monai/networks/blocks/pos_embed_utils.py,sha256=alvCh5x_OF2lv8fO6vvhAwkQJHV7TJT6V8cPJY0vbRg,4040
|
268
269
|
monai/networks/blocks/regunet_block.py,sha256=1FLIwVBtk66II6xQ7Q4LMY8DP0rMmeftN7HuaEgnf3A,8825
|
269
270
|
monai/networks/blocks/rel_pos_embedding.py,sha256=wuTJsk_NHSDX-3V0X9ctF99WIh2-SHLDbQxzrG7tz_4,2208
|
270
271
|
monai/networks/blocks/segresnet_block.py,sha256=dREFa0CWuSWlSOm53fT7vZz6UC2J_7JAEaeHB9rYjAk,3339
|
@@ -325,7 +326,7 @@ monai/networks/nets/senet.py,sha256=gulqPMYmSABbMbN39NElGzSU1TKGviJas7EPTBaZ60A,
|
|
325
326
|
monai/networks/nets/spade_autoencoderkl.py,sha256=-b2Sbl4jPpwo3ukTgsTcON26cSTB35K9sy1S9DKlZz0,19566
|
326
327
|
monai/networks/nets/spade_diffusion_model_unet.py,sha256=zYsXhkHNpHWWyal5ljAMxOICJ1loYQQMAOuzWzdLBCM,39007
|
327
328
|
monai/networks/nets/spade_network.py,sha256=GguYucjIRyT_rZa9DrvUmv00FtqXHZtY1VfJM9Rygns,16479
|
328
|
-
monai/networks/nets/swin_unetr.py,sha256=
|
329
|
+
monai/networks/nets/swin_unetr.py,sha256=ycqFgfR5skPJ885twQjS8OJKpA2ZkPgjWiTud6BLbb8,45541
|
329
330
|
monai/networks/nets/torchvision_fc.py,sha256=3g5PD7C1MSkQ8xndhnVd0b3aN8zfshT8uiFS0OHyQaY,6309
|
330
331
|
monai/networks/nets/transchex.py,sha256=uA_RfTDfPhwA1ecAPZ9EDnMyJKn2tUMLEWdyB_rU2v0,15726
|
331
332
|
monai/networks/nets/transformer.py,sha256=-nzl20Z5xdtn7xChOd_cRbbPVoPIFGVfTQw3fIEGMuE,6395
|
@@ -395,7 +396,7 @@ monai/transforms/spatial/array.py,sha256=5EKivdPYCP4i4qYUlkK1RpYQFzaU_baYyzgubid
|
|
395
396
|
monai/transforms/spatial/dictionary.py,sha256=t0SvEDSVNFUEw2fK66OVF20sqSzCNxil17HmvsMFBt8,133752
|
396
397
|
monai/transforms/spatial/functional.py,sha256=IwS0witCqbGkyuxzu_R4Ztp90S0pg9hY1irG7feXqig,33886
|
397
398
|
monai/transforms/utility/__init__.py,sha256=s9djSd6kvViPnFvMR11Dgd30Lv4oY6FaPJr4ZZJZLq0,573
|
398
|
-
monai/transforms/utility/array.py,sha256=
|
399
|
+
monai/transforms/utility/array.py,sha256=Rjfe1UOesH8ulh8q4rI4IfbC2t0e1KFq4AasZ3UvOwY,81848
|
399
400
|
monai/transforms/utility/dictionary.py,sha256=iOFdTSekvkAsBbbfHeffcRsOKRtNcnt3N1cVuUarZ1s,80549
|
400
401
|
monai/utils/__init__.py,sha256=2_AIpb1wqGMkmgoZ3r43muFTEsnMTCkPu3LtckipYHg,3793
|
401
402
|
monai/utils/component_store.py,sha256=Fe9jbHgwwBBAeJAw0nI02Ae13v17wlwF6N9uUue8tJg,4525
|
@@ -419,8 +420,8 @@ monai/visualize/img2tensorboard.py,sha256=NnMcyfIFqX-jD7TBO3Rn02zt5uug79d_7pIIaV
|
|
419
420
|
monai/visualize/occlusion_sensitivity.py,sha256=OQHEJLyIhB8zWqQsfKaX-1kvCjWFVYtLfS4dFC0nKFI,18160
|
420
421
|
monai/visualize/utils.py,sha256=B-MhTVs7sQbIqYS3yPnpBwPw2K82rE2PBtGIfpwZtWM,9894
|
421
422
|
monai/visualize/visualizer.py,sha256=qckyaMZCbezYUwE20k5yc-Pb7UozVavMDbrmyQwfYHY,1377
|
422
|
-
monai_weekly-1.5.
|
423
|
-
monai_weekly-1.5.
|
424
|
-
monai_weekly-1.5.
|
425
|
-
monai_weekly-1.5.
|
426
|
-
monai_weekly-1.5.
|
423
|
+
monai_weekly-1.5.dev2449.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
424
|
+
monai_weekly-1.5.dev2449.dist-info/METADATA,sha256=pkXaiu1fplwCSKbFQn3lkiY_rbmynZAw6dJmE2RhjNk,11293
|
425
|
+
monai_weekly-1.5.dev2449.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
426
|
+
monai_weekly-1.5.dev2449.dist-info/top_level.txt,sha256=UaNwRzLGORdus41Ip446s3bBfViLkdkDsXDo34J2P44,6
|
427
|
+
monai_weekly-1.5.dev2449.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|