quadra 2.3.0a2__py3-none-any.whl → 2.3.1__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.
- hydra_plugins/quadra_searchpath_plugin.py +0 -0
- quadra/__init__.py +1 -1
- quadra/callbacks/__init__.py +0 -0
- quadra/callbacks/anomalib.py +3 -2
- quadra/callbacks/lightning.py +3 -1
- quadra/callbacks/mlflow.py +0 -0
- quadra/callbacks/scheduler.py +0 -0
- quadra/configs/__init__.py +0 -0
- quadra/configs/backbone/caformer_m36.yaml +0 -0
- quadra/configs/backbone/caformer_s36.yaml +0 -0
- quadra/configs/backbone/convnextv2_base.yaml +0 -0
- quadra/configs/backbone/convnextv2_femto.yaml +0 -0
- quadra/configs/backbone/convnextv2_tiny.yaml +0 -0
- quadra/configs/backbone/dino_vitb8.yaml +0 -0
- quadra/configs/backbone/dino_vits8.yaml +0 -0
- quadra/configs/backbone/dinov2_vitb14.yaml +0 -0
- quadra/configs/backbone/dinov2_vits14.yaml +0 -0
- quadra/configs/backbone/efficientnet_b0.yaml +0 -0
- quadra/configs/backbone/efficientnet_b1.yaml +0 -0
- quadra/configs/backbone/efficientnet_b2.yaml +0 -0
- quadra/configs/backbone/efficientnet_b3.yaml +0 -0
- quadra/configs/backbone/efficientnetv2_s.yaml +0 -0
- quadra/configs/backbone/levit_128s.yaml +0 -0
- quadra/configs/backbone/mnasnet0_5.yaml +0 -0
- quadra/configs/backbone/resnet101.yaml +0 -0
- quadra/configs/backbone/resnet18.yaml +0 -0
- quadra/configs/backbone/resnet18_ssl.yaml +0 -0
- quadra/configs/backbone/resnet50.yaml +0 -0
- quadra/configs/backbone/smp.yaml +0 -0
- quadra/configs/backbone/tiny_vit_21m_224.yaml +0 -0
- quadra/configs/backbone/unetr.yaml +0 -0
- quadra/configs/backbone/vit16_base.yaml +0 -0
- quadra/configs/backbone/vit16_small.yaml +0 -0
- quadra/configs/backbone/vit16_tiny.yaml +0 -0
- quadra/configs/backbone/xcit_tiny_24_p8_224.yaml +0 -0
- quadra/configs/callbacks/all.yaml +0 -0
- quadra/configs/callbacks/default.yaml +0 -0
- quadra/configs/callbacks/default_anomalib.yaml +0 -0
- quadra/configs/config.yaml +0 -0
- quadra/configs/core/default.yaml +0 -0
- quadra/configs/datamodule/base/anomaly.yaml +0 -0
- quadra/configs/datamodule/base/classification.yaml +0 -0
- quadra/configs/datamodule/base/multilabel_classification.yaml +0 -0
- quadra/configs/datamodule/base/segmentation.yaml +0 -0
- quadra/configs/datamodule/base/segmentation_multiclass.yaml +0 -0
- quadra/configs/datamodule/base/sklearn_classification.yaml +0 -0
- quadra/configs/datamodule/base/sklearn_classification_patch.yaml +0 -0
- quadra/configs/datamodule/base/ssl.yaml +0 -0
- quadra/configs/datamodule/generic/imagenette/classification/base.yaml +0 -0
- quadra/configs/datamodule/generic/imagenette/ssl/base.yaml +0 -0
- quadra/configs/datamodule/generic/mnist/anomaly/base.yaml +0 -0
- quadra/configs/datamodule/generic/mvtec/anomaly/base.yaml +0 -0
- quadra/configs/datamodule/generic/oxford_pet/segmentation/base.yaml +0 -0
- quadra/configs/experiment/base/anomaly/cfa.yaml +0 -0
- quadra/configs/experiment/base/anomaly/cflow.yaml +0 -0
- quadra/configs/experiment/base/anomaly/csflow.yaml +0 -0
- quadra/configs/experiment/base/anomaly/draem.yaml +0 -0
- quadra/configs/experiment/base/anomaly/efficient_ad.yaml +0 -0
- quadra/configs/experiment/base/anomaly/fastflow.yaml +0 -0
- quadra/configs/experiment/base/anomaly/inference.yaml +0 -0
- quadra/configs/experiment/base/anomaly/padim.yaml +0 -0
- quadra/configs/experiment/base/anomaly/patchcore.yaml +0 -0
- quadra/configs/experiment/base/classification/classification.yaml +0 -0
- quadra/configs/experiment/base/classification/classification_evaluation.yaml +0 -0
- quadra/configs/experiment/base/classification/multilabel_classification.yaml +0 -0
- quadra/configs/experiment/base/classification/sklearn_classification.yaml +0 -0
- quadra/configs/experiment/base/classification/sklearn_classification_patch.yaml +0 -0
- quadra/configs/experiment/base/classification/sklearn_classification_patch_test.yaml +0 -0
- quadra/configs/experiment/base/classification/sklearn_classification_test.yaml +0 -0
- quadra/configs/experiment/base/segmentation/smp.yaml +0 -0
- quadra/configs/experiment/base/segmentation/smp_evaluation.yaml +0 -0
- quadra/configs/experiment/base/segmentation/smp_multiclass.yaml +0 -0
- quadra/configs/experiment/base/segmentation/smp_multiclass_evaluation.yaml +0 -0
- quadra/configs/experiment/base/ssl/barlow.yaml +0 -0
- quadra/configs/experiment/base/ssl/byol.yaml +0 -0
- quadra/configs/experiment/base/ssl/dino.yaml +0 -0
- quadra/configs/experiment/base/ssl/linear_eval.yaml +0 -0
- quadra/configs/experiment/base/ssl/simclr.yaml +0 -0
- quadra/configs/experiment/base/ssl/simsiam.yaml +0 -0
- quadra/configs/experiment/custom/cls.yaml +0 -0
- quadra/configs/experiment/default.yaml +0 -0
- quadra/configs/experiment/generic/imagenette/classification/default.yaml +0 -0
- quadra/configs/experiment/generic/imagenette/ssl/barlow.yaml +0 -0
- quadra/configs/experiment/generic/imagenette/ssl/byol.yaml +0 -0
- quadra/configs/experiment/generic/imagenette/ssl/dino.yaml +0 -0
- quadra/configs/experiment/generic/imagenette/ssl/simclr.yaml +0 -0
- quadra/configs/experiment/generic/imagenette/ssl/simsiam.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/cfa.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/cflow.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/csflow.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/draem.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/fastflow.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/inference.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/padim.yaml +0 -0
- quadra/configs/experiment/generic/mnist/anomaly/patchcore.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/cfa.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/cflow.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/csflow.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/draem.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/efficient_ad.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/fastflow.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/inference.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/padim.yaml +0 -0
- quadra/configs/experiment/generic/mvtec/anomaly/patchcore.yaml +0 -0
- quadra/configs/experiment/generic/oxford_pet/segmentation/smp.yaml +0 -0
- quadra/configs/export/default.yaml +0 -0
- quadra/configs/hydra/anomaly_custom.yaml +0 -0
- quadra/configs/hydra/default.yaml +0 -0
- quadra/configs/inference/default.yaml +0 -0
- quadra/configs/logger/comet.yaml +0 -0
- quadra/configs/logger/csv.yaml +0 -0
- quadra/configs/logger/mlflow.yaml +0 -0
- quadra/configs/logger/tensorboard.yaml +0 -0
- quadra/configs/loss/asl.yaml +0 -0
- quadra/configs/loss/barlow.yaml +0 -0
- quadra/configs/loss/bce.yaml +0 -0
- quadra/configs/loss/byol.yaml +0 -0
- quadra/configs/loss/cross_entropy.yaml +0 -0
- quadra/configs/loss/dino.yaml +0 -0
- quadra/configs/loss/simclr.yaml +0 -0
- quadra/configs/loss/simsiam.yaml +0 -0
- quadra/configs/loss/smp_ce.yaml +0 -0
- quadra/configs/loss/smp_dice.yaml +0 -0
- quadra/configs/loss/smp_dice_multiclass.yaml +0 -0
- quadra/configs/loss/smp_mcc.yaml +0 -0
- quadra/configs/loss/vicreg.yaml +0 -0
- quadra/configs/model/anomalib/cfa.yaml +0 -0
- quadra/configs/model/anomalib/cflow.yaml +0 -0
- quadra/configs/model/anomalib/csflow.yaml +0 -0
- quadra/configs/model/anomalib/dfm.yaml +0 -0
- quadra/configs/model/anomalib/draem.yaml +0 -0
- quadra/configs/model/anomalib/efficient_ad.yaml +0 -0
- quadra/configs/model/anomalib/fastflow.yaml +0 -0
- quadra/configs/model/anomalib/padim.yaml +0 -0
- quadra/configs/model/anomalib/patchcore.yaml +0 -0
- quadra/configs/model/barlow.yaml +0 -0
- quadra/configs/model/byol.yaml +0 -0
- quadra/configs/model/classification.yaml +0 -0
- quadra/configs/model/dino.yaml +0 -0
- quadra/configs/model/logistic_regression.yaml +0 -0
- quadra/configs/model/multilabel_classification.yaml +0 -0
- quadra/configs/model/simclr.yaml +0 -0
- quadra/configs/model/simsiam.yaml +0 -0
- quadra/configs/model/smp.yaml +0 -0
- quadra/configs/model/smp_multiclass.yaml +0 -0
- quadra/configs/model/vicreg.yaml +0 -0
- quadra/configs/optimizer/adam.yaml +0 -0
- quadra/configs/optimizer/adamw.yaml +0 -0
- quadra/configs/optimizer/default.yaml +0 -0
- quadra/configs/optimizer/lars.yaml +0 -0
- quadra/configs/optimizer/sgd.yaml +0 -0
- quadra/configs/scheduler/default.yaml +0 -0
- quadra/configs/scheduler/rop.yaml +0 -0
- quadra/configs/scheduler/step.yaml +0 -0
- quadra/configs/scheduler/warmrestart.yaml +0 -0
- quadra/configs/scheduler/warmup.yaml +0 -0
- quadra/configs/task/anomalib/cfa.yaml +0 -0
- quadra/configs/task/anomalib/cflow.yaml +0 -0
- quadra/configs/task/anomalib/csflow.yaml +0 -0
- quadra/configs/task/anomalib/draem.yaml +0 -0
- quadra/configs/task/anomalib/efficient_ad.yaml +0 -0
- quadra/configs/task/anomalib/fastflow.yaml +0 -0
- quadra/configs/task/anomalib/inference.yaml +0 -0
- quadra/configs/task/anomalib/padim.yaml +0 -0
- quadra/configs/task/anomalib/patchcore.yaml +0 -0
- quadra/configs/task/classification.yaml +0 -0
- quadra/configs/task/classification_evaluation.yaml +0 -0
- quadra/configs/task/default.yaml +0 -0
- quadra/configs/task/segmentation.yaml +0 -0
- quadra/configs/task/segmentation_evaluation.yaml +0 -0
- quadra/configs/task/sklearn_classification.yaml +0 -0
- quadra/configs/task/sklearn_classification_patch.yaml +0 -0
- quadra/configs/task/sklearn_classification_patch_test.yaml +0 -0
- quadra/configs/task/sklearn_classification_test.yaml +0 -0
- quadra/configs/task/ssl.yaml +0 -0
- quadra/configs/trainer/lightning_cpu.yaml +0 -0
- quadra/configs/trainer/lightning_gpu.yaml +0 -0
- quadra/configs/trainer/lightning_gpu_bf16.yaml +0 -0
- quadra/configs/trainer/lightning_gpu_fp16.yaml +0 -0
- quadra/configs/trainer/lightning_multigpu.yaml +0 -0
- quadra/configs/trainer/sklearn_classification.yaml +0 -0
- quadra/configs/transforms/byol.yaml +0 -0
- quadra/configs/transforms/byol_no_random_resize.yaml +0 -0
- quadra/configs/transforms/default.yaml +0 -0
- quadra/configs/transforms/default_numpy.yaml +0 -0
- quadra/configs/transforms/default_resize.yaml +0 -0
- quadra/configs/transforms/dino.yaml +0 -0
- quadra/configs/transforms/linear_eval.yaml +0 -0
- quadra/datamodules/__init__.py +0 -0
- quadra/datamodules/anomaly.py +0 -0
- quadra/datamodules/base.py +5 -5
- quadra/datamodules/classification.py +2 -2
- quadra/datamodules/generic/__init__.py +0 -0
- quadra/datamodules/generic/imagenette.py +0 -0
- quadra/datamodules/generic/mnist.py +0 -0
- quadra/datamodules/generic/mvtec.py +0 -0
- quadra/datamodules/generic/oxford_pet.py +0 -0
- quadra/datamodules/patch.py +0 -0
- quadra/datamodules/segmentation.py +6 -6
- quadra/datamodules/ssl.py +0 -0
- quadra/datasets/__init__.py +0 -0
- quadra/datasets/anomaly.py +2 -2
- quadra/datasets/classification.py +7 -7
- quadra/datasets/patch.py +1 -1
- quadra/datasets/segmentation.py +0 -0
- quadra/datasets/ssl.py +3 -3
- quadra/losses/__init__.py +0 -0
- quadra/losses/classification/__init__.py +0 -0
- quadra/losses/classification/asl.py +0 -0
- quadra/losses/classification/focal.py +0 -0
- quadra/losses/classification/prototypical.py +0 -0
- quadra/losses/ssl/__init__.py +0 -0
- quadra/losses/ssl/barlowtwins.py +0 -0
- quadra/losses/ssl/byol.py +0 -0
- quadra/losses/ssl/dino.py +0 -0
- quadra/losses/ssl/hyperspherical.py +0 -0
- quadra/losses/ssl/idmm.py +0 -0
- quadra/losses/ssl/simclr.py +0 -0
- quadra/losses/ssl/simsiam.py +0 -0
- quadra/losses/ssl/vicreg.py +0 -0
- quadra/main.py +0 -0
- quadra/metrics/__init__.py +0 -0
- quadra/metrics/segmentation.py +1 -1
- quadra/models/__init__.py +0 -0
- quadra/models/base.py +1 -1
- quadra/models/classification/__init__.py +0 -0
- quadra/models/classification/backbones.py +0 -0
- quadra/models/classification/base.py +0 -0
- quadra/models/evaluation.py +1 -1
- quadra/modules/__init__.py +0 -0
- quadra/modules/backbone.py +0 -0
- quadra/modules/base.py +3 -2
- quadra/modules/classification/__init__.py +0 -0
- quadra/modules/classification/base.py +0 -0
- quadra/modules/ssl/__init__.py +0 -0
- quadra/modules/ssl/barlowtwins.py +0 -0
- quadra/modules/ssl/byol.py +1 -0
- quadra/modules/ssl/common.py +0 -0
- quadra/modules/ssl/dino.py +0 -0
- quadra/modules/ssl/hyperspherical.py +0 -0
- quadra/modules/ssl/idmm.py +0 -0
- quadra/modules/ssl/simclr.py +0 -0
- quadra/modules/ssl/simsiam.py +0 -0
- quadra/modules/ssl/vicreg.py +0 -0
- quadra/optimizers/__init__.py +0 -0
- quadra/optimizers/lars.py +0 -0
- quadra/optimizers/sam.py +0 -0
- quadra/schedulers/__init__.py +0 -0
- quadra/schedulers/base.py +0 -0
- quadra/schedulers/warmup.py +0 -0
- quadra/tasks/__init__.py +0 -0
- quadra/tasks/anomaly.py +7 -4
- quadra/tasks/base.py +8 -4
- quadra/tasks/classification.py +6 -2
- quadra/tasks/patch.py +1 -1
- quadra/tasks/segmentation.py +7 -5
- quadra/tasks/ssl.py +2 -3
- quadra/trainers/README.md +0 -0
- quadra/trainers/__init__.py +0 -0
- quadra/trainers/classification.py +0 -0
- quadra/utils/__init__.py +0 -0
- quadra/utils/anomaly.py +0 -0
- quadra/utils/classification.py +8 -10
- quadra/utils/deprecation.py +0 -0
- quadra/utils/evaluation.py +12 -3
- quadra/utils/export.py +5 -5
- quadra/utils/imaging.py +0 -0
- quadra/utils/logger.py +0 -0
- quadra/utils/mlflow.py +2 -0
- quadra/utils/model_manager.py +0 -0
- quadra/utils/models.py +5 -7
- quadra/utils/patch/__init__.py +0 -0
- quadra/utils/patch/dataset.py +7 -6
- quadra/utils/patch/metrics.py +9 -6
- quadra/utils/patch/model.py +0 -0
- quadra/utils/patch/visualization.py +2 -2
- quadra/utils/resolver.py +0 -0
- quadra/utils/segmentation.py +0 -0
- quadra/utils/tests/__init__.py +0 -0
- quadra/utils/tests/fixtures/__init__.py +0 -0
- quadra/utils/tests/fixtures/dataset/__init__.py +0 -0
- quadra/utils/tests/fixtures/dataset/anomaly.py +0 -0
- quadra/utils/tests/fixtures/dataset/classification.py +0 -0
- quadra/utils/tests/fixtures/dataset/imagenette.py +1 -1
- quadra/utils/tests/fixtures/dataset/segmentation.py +0 -0
- quadra/utils/tests/fixtures/models/__init__.py +0 -0
- quadra/utils/tests/fixtures/models/anomaly.py +0 -0
- quadra/utils/tests/fixtures/models/classification.py +0 -0
- quadra/utils/tests/fixtures/models/segmentation.py +0 -0
- quadra/utils/tests/helpers.py +0 -0
- quadra/utils/tests/models.py +0 -0
- quadra/utils/utils.py +1 -1
- quadra/utils/validator.py +1 -3
- quadra/utils/visualization.py +8 -5
- quadra/utils/vit_explainability.py +1 -1
- {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/LICENSE +0 -0
- {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/METADATA +1 -1
- {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/RECORD +39 -39
- {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/WHEEL +1 -1
- {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/entry_points.txt +0 -0
quadra/utils/export.py
CHANGED
|
@@ -45,11 +45,11 @@ def generate_torch_inputs(
|
|
|
45
45
|
"""
|
|
46
46
|
inp = None
|
|
47
47
|
|
|
48
|
-
if isinstance(input_shapes,
|
|
48
|
+
if isinstance(input_shapes, ListConfig | DictConfig):
|
|
49
49
|
input_shapes = OmegaConf.to_container(input_shapes)
|
|
50
50
|
|
|
51
51
|
if isinstance(input_shapes, list):
|
|
52
|
-
if any(isinstance(inp,
|
|
52
|
+
if any(isinstance(inp, Sequence | dict) for inp in input_shapes):
|
|
53
53
|
return [generate_torch_inputs(inp, device, half_precision, dtype) for inp in input_shapes]
|
|
54
54
|
|
|
55
55
|
# Base case
|
|
@@ -59,7 +59,7 @@ def generate_torch_inputs(
|
|
|
59
59
|
return {k: generate_torch_inputs(v, device, half_precision, dtype) for k, v in input_shapes.items()}
|
|
60
60
|
|
|
61
61
|
if isinstance(input_shapes, tuple):
|
|
62
|
-
if any(isinstance(inp,
|
|
62
|
+
if any(isinstance(inp, Sequence | dict) for inp in input_shapes):
|
|
63
63
|
# The tuple contains a list, tuple or dict
|
|
64
64
|
return tuple(generate_torch_inputs(inp, device, half_precision, dtype) for inp in input_shapes)
|
|
65
65
|
|
|
@@ -324,7 +324,7 @@ def _safe_export_half_precision_onnx(
|
|
|
324
324
|
onnx_config: DictConfig,
|
|
325
325
|
input_shapes: list[Any],
|
|
326
326
|
input_names: list[str],
|
|
327
|
-
):
|
|
327
|
+
) -> bool:
|
|
328
328
|
"""Check that the exported half precision ONNX model does not contain NaN values. If it does, attempt to export
|
|
329
329
|
the model with a more stable export and overwrite the original model.
|
|
330
330
|
|
|
@@ -381,7 +381,7 @@ def _safe_export_half_precision_onnx(
|
|
|
381
381
|
with open(os.devnull, "w") as f, contextlib.redirect_stdout(f):
|
|
382
382
|
# This function prints a lot of information that is not useful for the user
|
|
383
383
|
model_fp16 = auto_convert_mixed_precision(
|
|
384
|
-
model_fp32, test_data, rtol=0.01, atol=
|
|
384
|
+
model_fp32, test_data, rtol=0.01, atol=5e-3, keep_io_types=False
|
|
385
385
|
)
|
|
386
386
|
onnx.save(model_fp16, export_model_path)
|
|
387
387
|
|
quadra/utils/imaging.py
CHANGED
|
File without changes
|
quadra/utils/logger.py
CHANGED
|
File without changes
|
quadra/utils/mlflow.py
CHANGED
|
@@ -11,6 +11,7 @@ except ImportError:
|
|
|
11
11
|
from collections.abc import Sequence
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
14
|
+
import numpy as np
|
|
14
15
|
import torch
|
|
15
16
|
from pytorch_lightning import Trainer
|
|
16
17
|
from pytorch_lightning.loggers import MLFlowLogger
|
|
@@ -45,6 +46,7 @@ def infer_signature_input(input_tensor: Any) -> Any:
|
|
|
45
46
|
Raises:
|
|
46
47
|
ValueError: If the input type is not supported or when nested dicts or sequences are encountered.
|
|
47
48
|
"""
|
|
49
|
+
signature: dict[str, Any] | np.ndarray
|
|
48
50
|
if isinstance(input_tensor, Sequence):
|
|
49
51
|
# Mlflow currently does not support sequence outputs, so we use a dict instead
|
|
50
52
|
signature = {}
|
quadra/utils/model_manager.py
CHANGED
|
File without changes
|
quadra/utils/models.py
CHANGED
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import math
|
|
4
4
|
import warnings
|
|
5
5
|
from collections.abc import Callable
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import cast
|
|
7
7
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import timm
|
|
@@ -114,7 +114,7 @@ def get_feature(
|
|
|
114
114
|
labels: input_labels
|
|
115
115
|
grayscale_cams: Gradcam output maps, None if gradcam arg is False
|
|
116
116
|
"""
|
|
117
|
-
if isinstance(feature_extractor,
|
|
117
|
+
if isinstance(feature_extractor, TorchEvaluationModel | TorchscriptEvaluationModel):
|
|
118
118
|
# If we are working with torch based evaluation models we need to extract the model
|
|
119
119
|
feature_extractor = feature_extractor.model
|
|
120
120
|
elif isinstance(feature_extractor, ONNXEvaluationModel):
|
|
@@ -160,9 +160,7 @@ def get_feature(
|
|
|
160
160
|
x1 = x1.to(feature_extractor.device).to(feature_extractor.model_dtype)
|
|
161
161
|
|
|
162
162
|
if gradcam:
|
|
163
|
-
y_hat = cast(
|
|
164
|
-
Union[list[torch.Tensor], tuple[torch.Tensor], torch.Tensor], feature_extractor(x1).detach()
|
|
165
|
-
)
|
|
163
|
+
y_hat = cast(list[torch.Tensor] | tuple[torch.Tensor] | torch.Tensor, feature_extractor(x1).detach())
|
|
166
164
|
# mypy can't detect that gradcam is true only if we have a features_extractor
|
|
167
165
|
if is_vision_transformer(feature_extractor.features_extractor): # type: ignore[union-attr]
|
|
168
166
|
grayscale_cam_low_res = grad_rollout(
|
|
@@ -177,10 +175,10 @@ def get_feature(
|
|
|
177
175
|
feature_extractor.zero_grad(set_to_none=True) # type: ignore[union-attr]
|
|
178
176
|
else:
|
|
179
177
|
with torch.no_grad():
|
|
180
|
-
y_hat = cast(
|
|
178
|
+
y_hat = cast(list[torch.Tensor] | tuple[torch.Tensor] | torch.Tensor, feature_extractor(x1))
|
|
181
179
|
grayscale_cams = None
|
|
182
180
|
|
|
183
|
-
if isinstance(y_hat,
|
|
181
|
+
if isinstance(y_hat, list | tuple):
|
|
184
182
|
y_hat = y_hat[0].cpu()
|
|
185
183
|
else:
|
|
186
184
|
y_hat = y_hat.cpu()
|
quadra/utils/patch/__init__.py
CHANGED
|
File without changes
|
quadra/utils/patch/dataset.py
CHANGED
|
@@ -566,7 +566,7 @@ def generate_patch_dataset(
|
|
|
566
566
|
num_workers=num_workers,
|
|
567
567
|
)
|
|
568
568
|
|
|
569
|
-
for phase, split_dict in zip(["val", "test"], [val_data_dictionary, test_data_dictionary]):
|
|
569
|
+
for phase, split_dict in zip(["val", "test"], [val_data_dictionary, test_data_dictionary], strict=False):
|
|
570
570
|
if len(split_dict) > 0:
|
|
571
571
|
log.info("Generating %s set", phase)
|
|
572
572
|
generate_patch_sliding_window_dataset(
|
|
@@ -908,9 +908,9 @@ def extract_patches(
|
|
|
908
908
|
patches = np.concatenate([patches, extra_patches_h], axis=0)
|
|
909
909
|
|
|
910
910
|
# If this is not true there's some strange case I didn't take into account
|
|
911
|
-
assert (
|
|
912
|
-
patches.shape
|
|
913
|
-
)
|
|
911
|
+
assert patches.shape[0] == patch_num_h and patches.shape[1] == patch_num_w, (
|
|
912
|
+
f"Patch shape {patches.shape} does not match the expected shape {patch_number}"
|
|
913
|
+
)
|
|
914
914
|
|
|
915
915
|
return patches
|
|
916
916
|
|
|
@@ -1059,11 +1059,12 @@ def create_h5(
|
|
|
1059
1059
|
h = img.shape[0]
|
|
1060
1060
|
w = img.shape[1]
|
|
1061
1061
|
|
|
1062
|
+
mask: np.ndarray
|
|
1062
1063
|
if item["mask"] is None:
|
|
1063
|
-
mask = np.zeros([h, w])
|
|
1064
|
+
mask = np.zeros([h, w], dtype=np.uint8)
|
|
1064
1065
|
else:
|
|
1065
1066
|
# this works even if item["mask"] is already an absolute path
|
|
1066
|
-
mask = cv2.imread(os.path.join(output_folder, item["mask"]), 0)
|
|
1067
|
+
mask = cv2.imread(os.path.join(output_folder, item["mask"]), 0)
|
|
1067
1068
|
|
|
1068
1069
|
if patch_size is not None:
|
|
1069
1070
|
patch_height = patch_size[1]
|
quadra/utils/patch/metrics.py
CHANGED
|
@@ -98,9 +98,9 @@ def compute_patch_metrics(
|
|
|
98
98
|
if (patch_h is not None and patch_w is not None) and (patch_num_h is not None and patch_num_w is not None):
|
|
99
99
|
raise ValueError("Either number of patches or patch size is required for reconstruction")
|
|
100
100
|
|
|
101
|
-
assert (patch_h is not None and patch_w is not None) or (
|
|
102
|
-
|
|
103
|
-
)
|
|
101
|
+
assert (patch_h is not None and patch_w is not None) or (patch_num_h is not None and patch_num_w is not None), (
|
|
102
|
+
"Either number of patches or patch size is required for reconstruction"
|
|
103
|
+
)
|
|
104
104
|
|
|
105
105
|
if patch_h is not None and patch_w is not None and patch_num_h is not None and patch_num_w is not None:
|
|
106
106
|
warnings.warn(
|
|
@@ -191,7 +191,7 @@ def compute_patch_metrics(
|
|
|
191
191
|
if annotated_good is not None:
|
|
192
192
|
gt_img[np.isin(gt_img, annotated_good)] = 0
|
|
193
193
|
|
|
194
|
-
gt_img_binary = (gt_img > 0).astype(bool)
|
|
194
|
+
gt_img_binary = (gt_img > 0).astype(bool)
|
|
195
195
|
regions_pred = label(output_mask).astype(np.uint8)
|
|
196
196
|
|
|
197
197
|
for k in range(1, regions_pred.max() + 1):
|
|
@@ -203,8 +203,11 @@ def compute_patch_metrics(
|
|
|
203
203
|
output_mask = (output_mask > 0).astype(np.uint8)
|
|
204
204
|
gt_img = label(gt_img)
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
|
|
206
|
+
if gt_img is None:
|
|
207
|
+
raise RuntimeError("Ground truth mask is None after label and it should not be")
|
|
208
|
+
|
|
209
|
+
for i in range(1, gt_img.max() + 1):
|
|
210
|
+
region = (gt_img == i).astype(bool)
|
|
208
211
|
if np.sum(np.bitwise_and(region, output_mask)) == 0:
|
|
209
212
|
false_region_good += 1
|
|
210
213
|
else:
|
quadra/utils/patch/model.py
CHANGED
|
File without changes
|
|
@@ -69,13 +69,13 @@ def plot_patch_reconstruction(
|
|
|
69
69
|
points = [[item["x"], item["y"]] for item in region["points"]]
|
|
70
70
|
c_label = region["label"]
|
|
71
71
|
|
|
72
|
-
out = cv2.drawContours(
|
|
72
|
+
out = cv2.drawContours( # type: ignore[call-overload]
|
|
73
73
|
out,
|
|
74
74
|
np.array([points], np.int32),
|
|
75
75
|
-1,
|
|
76
76
|
class_to_idx[c_label],
|
|
77
77
|
thickness=cv2.FILLED,
|
|
78
|
-
)
|
|
78
|
+
)
|
|
79
79
|
else:
|
|
80
80
|
out = reconstruction["prediction"]
|
|
81
81
|
|
quadra/utils/resolver.py
CHANGED
|
File without changes
|
quadra/utils/segmentation.py
CHANGED
|
File without changes
|
quadra/utils/tests/__init__.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
quadra/utils/tests/helpers.py
CHANGED
|
File without changes
|
quadra/utils/tests/models.py
CHANGED
|
File without changes
|
quadra/utils/utils.py
CHANGED
|
@@ -438,7 +438,7 @@ def flatten_list(input_list: Iterable[Any]) -> Iterator[Any]:
|
|
|
438
438
|
The iterator over the flattend list
|
|
439
439
|
"""
|
|
440
440
|
for v in input_list:
|
|
441
|
-
if isinstance(v, Iterable) and not isinstance(v,
|
|
441
|
+
if isinstance(v, Iterable) and not isinstance(v, str | bytes):
|
|
442
442
|
yield from flatten_list(v)
|
|
443
443
|
else:
|
|
444
444
|
yield v
|
quadra/utils/validator.py
CHANGED
|
@@ -72,9 +72,7 @@ def check_all_arguments(callable_variable: str, configuration_arguments: list[st
|
|
|
72
72
|
"""
|
|
73
73
|
for argument in configuration_arguments:
|
|
74
74
|
if argument not in argument_names:
|
|
75
|
-
error_string =
|
|
76
|
-
f"`{argument}` is not a valid argument passed " f"from configuration to `{callable_variable}`."
|
|
77
|
-
)
|
|
75
|
+
error_string = f"`{argument}` is not a valid argument passed from configuration to `{callable_variable}`."
|
|
78
76
|
closest_match = difflib.get_close_matches(argument, argument_names, n=1, cutoff=0.5)
|
|
79
77
|
if len(closest_match) > 0:
|
|
80
78
|
error_string += f" Did you mean `{closest_match[0]}`?"
|
quadra/utils/visualization.py
CHANGED
|
@@ -46,7 +46,7 @@ class UnNormalize:
|
|
|
46
46
|
new_t = tensor.detach().clone()
|
|
47
47
|
else:
|
|
48
48
|
new_t = tensor
|
|
49
|
-
for t, m, s in zip(new_t, self.mean, self.std):
|
|
49
|
+
for t, m, s in zip(new_t, self.mean, self.std, strict=False):
|
|
50
50
|
t.mul_(s).add_(m)
|
|
51
51
|
# The normalize code -> t.sub_(m).div_(s)
|
|
52
52
|
return new_t
|
|
@@ -82,7 +82,7 @@ def create_grid_figure(
|
|
|
82
82
|
ax[i][j].get_xaxis().set_ticks([])
|
|
83
83
|
ax[i][j].get_yaxis().set_ticks([])
|
|
84
84
|
if row_names is not None:
|
|
85
|
-
for ax, name in zip(ax[:, 0], row_names): # noqa: B020
|
|
85
|
+
for ax, name in zip(ax[:, 0], row_names, strict=False): # noqa: B020
|
|
86
86
|
ax.set_ylabel(name, rotation=90)
|
|
87
87
|
|
|
88
88
|
plt.tight_layout()
|
|
@@ -98,12 +98,12 @@ def create_visualization_dataset(dataset: torch.utils.data.Dataset):
|
|
|
98
98
|
"""Handle different types of transforms."""
|
|
99
99
|
if isinstance(transforms, albumentations.BaseCompose):
|
|
100
100
|
transforms.transforms = convert_transforms(transforms.transforms)
|
|
101
|
-
if isinstance(transforms,
|
|
101
|
+
if isinstance(transforms, list | ListConfig | TransformsSeqType):
|
|
102
102
|
transforms = [convert_transforms(t) for t in transforms]
|
|
103
|
-
if isinstance(transforms,
|
|
103
|
+
if isinstance(transforms, dict | DictConfig):
|
|
104
104
|
for tname, t in transforms.items():
|
|
105
105
|
transforms[tname] = convert_transforms(t)
|
|
106
|
-
if isinstance(transforms,
|
|
106
|
+
if isinstance(transforms, Normalize | ToTensorV2):
|
|
107
107
|
return NoOp(p=1)
|
|
108
108
|
return transforms
|
|
109
109
|
|
|
@@ -362,6 +362,9 @@ def plot_classification_results(
|
|
|
362
362
|
test_label = idx_to_class[test_labels[i]]
|
|
363
363
|
except Exception:
|
|
364
364
|
test_label = test_labels[i]
|
|
365
|
+
else:
|
|
366
|
+
pred_label = pred_labels[i]
|
|
367
|
+
test_label = test_labels[i]
|
|
365
368
|
|
|
366
369
|
ax.axis("off")
|
|
367
370
|
ax.set_title(f"True: {str(test_label)}\nPred {str(pred_label)}")
|
|
@@ -153,7 +153,7 @@ def grad_rollout(
|
|
|
153
153
|
"""
|
|
154
154
|
result = torch.eye(attentions[0].size(-1))
|
|
155
155
|
with torch.no_grad():
|
|
156
|
-
for attention, grad in zip(attentions, gradients):
|
|
156
|
+
for attention, grad in zip(attentions, gradients, strict=False):
|
|
157
157
|
weights = grad
|
|
158
158
|
attention_heads_fused = torch.mean((attention * weights), dim=1)
|
|
159
159
|
attention_heads_fused[attention_heads_fused < 0] = 0
|
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
quadra/__init__.py,sha256=
|
|
1
|
+
quadra/__init__.py,sha256=U4GXsdTR6bVbP904TotXxlsdWqOKNrh_fBTlXM3MR6w,112
|
|
2
2
|
quadra/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
quadra/callbacks/anomalib.py,sha256=
|
|
4
|
-
quadra/callbacks/lightning.py,sha256=
|
|
3
|
+
quadra/callbacks/anomalib.py,sha256=WLBEGhZA9HoP4Yh9UbbC2GzDOKYTkvU9EY1lkZcV7Fs,11971
|
|
4
|
+
quadra/callbacks/lightning.py,sha256=qvtzDiv8ZUV7K11gKHKWCyo-a9XR_Jm_M-IEicTM1Yo,20242
|
|
5
5
|
quadra/callbacks/mlflow.py,sha256=4LKjrgbRCHP5dOCoDpF7J25gaBgABa0Rof-EA61Iqug,10129
|
|
6
6
|
quadra/callbacks/scheduler.py,sha256=zrglcTUvMO236VchQFtCSlA-XXhc6a3HVWX0uDVQoyc,2656
|
|
7
7
|
quadra/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -187,22 +187,22 @@ quadra/configs/transforms/dino.yaml,sha256=NtEbtJPHYkR9DOBPwXR33uvrEdqv8WNyqRlXr
|
|
|
187
187
|
quadra/configs/transforms/linear_eval.yaml,sha256=fXmJBEwTWQ-QBMNV0mSG9wcrj31YGIV_czcRDczc1ss,488
|
|
188
188
|
quadra/datamodules/__init__.py,sha256=y00iX2YAy6CJzPstKSBNq8_1YsYTRr_sCvqaL-WI7Z8,636
|
|
189
189
|
quadra/datamodules/anomaly.py,sha256=_3FZNSwdMj-ECXlPQDslswtaMn0F1EgzA0q0UH-UgFY,6670
|
|
190
|
-
quadra/datamodules/base.py,sha256=
|
|
191
|
-
quadra/datamodules/classification.py,sha256=
|
|
190
|
+
quadra/datamodules/base.py,sha256=QGkJ8Lq6hznHvaXjD8mhJhrinrs4ZFlZD3-B5cLU0cQ,14010
|
|
191
|
+
quadra/datamodules/classification.py,sha256=VwQd-zhzJuLgq5Kg1niOY4pnRbO7Sk4B77dWiTFv4do,41622
|
|
192
192
|
quadra/datamodules/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
193
193
|
quadra/datamodules/generic/imagenette.py,sha256=3hOb-GmvnKx_hqrSqRcAcf22PjtCQ3CY_-5mlaZSTIM,5564
|
|
194
194
|
quadra/datamodules/generic/mnist.py,sha256=j4xWEWQb1utW3yyozgHD1tP0kOAtLpRsgeIBZ1cIiP0,3425
|
|
195
195
|
quadra/datamodules/generic/mvtec.py,sha256=3Ib8JyY1Eg7wbPL2dXw22YCoy_gsitksofFShLQ9Itw,2700
|
|
196
196
|
quadra/datamodules/generic/oxford_pet.py,sha256=tumWy9TBThvVQZ2JOyghosWJEEsYjyXN6pZMJ9C5dBY,6822
|
|
197
197
|
quadra/datamodules/patch.py,sha256=y7leDt1MyVg0LnqKgWCZ0i6cuVln10fiG4X8EFbl-_Q,7789
|
|
198
|
-
quadra/datamodules/segmentation.py,sha256=
|
|
198
|
+
quadra/datamodules/segmentation.py,sha256=hhfOs7QoYslHYfWfnAgZzSusj2tus8k-h7SBqGNVT8E,29004
|
|
199
199
|
quadra/datamodules/ssl.py,sha256=U63FCdcRJjx4K0RZzkKJfvYJhFpvWTnlBBCtXirn_F4,5709
|
|
200
200
|
quadra/datasets/__init__.py,sha256=nVpqp2ffQ6omqCMB3r1ajcUGgUad0eSkDt-kNWDGblU,669
|
|
201
|
-
quadra/datasets/anomaly.py,sha256=
|
|
202
|
-
quadra/datasets/classification.py,sha256=
|
|
203
|
-
quadra/datasets/patch.py,sha256=
|
|
201
|
+
quadra/datasets/anomaly.py,sha256=4rCd2-frgMH3RfQYVFYn5ZXxTKbPOk8GwE-BZIiLwFY,11892
|
|
202
|
+
quadra/datasets/classification.py,sha256=ISKcY2PwD3HNv1JPPbDIJRJWJmu3KR3hlx3HUxlXYpE,7530
|
|
203
|
+
quadra/datasets/patch.py,sha256=imNJONPoREivSZ-6WqYO2zE80PDEr-oCm3rdJuKlWz0,4803
|
|
204
204
|
quadra/datasets/segmentation.py,sha256=cDs45eRh_IBSLB0K5xDos-D4KySRQN64BzaPKGBF7OI,9056
|
|
205
|
-
quadra/datasets/ssl.py,sha256=
|
|
205
|
+
quadra/datasets/ssl.py,sha256=FLL3dYCKnMymtwZfPEi0TzXI6lh6X3HpbqVzaEoGbeU,3931
|
|
206
206
|
quadra/losses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
207
207
|
quadra/losses/classification/__init__.py,sha256=R1rhnZsksSrY0Tntc7ITViszbbW6i_705zyLlMpcjPs,153
|
|
208
208
|
quadra/losses/classification/asl.py,sha256=ywfT_ifkHoA7VpAhOiJty0OqzKwFqe0OU5Ands1cI0I,2844
|
|
@@ -219,21 +219,21 @@ quadra/losses/ssl/simsiam.py,sha256=uCCbqU9aYMwNa3re0qkeEK5Iz7Hxi0jAcEc-sCWZ8fc,
|
|
|
219
219
|
quadra/losses/ssl/vicreg.py,sha256=ANvhYJz6iPv1A-OBXgBSrZrDG-1VmPtK1IZDtyFqNHE,2427
|
|
220
220
|
quadra/main.py,sha256=6ZYKytVvCzQjgP_0QA6-3ICzVppsbRgPjF-csLKv85o,1407
|
|
221
221
|
quadra/metrics/__init__.py,sha256=HsTK1gxsjp8_MYgA5caa4OK8sXLqtK_tt9wYyjtFnOc,79
|
|
222
|
-
quadra/metrics/segmentation.py,sha256=
|
|
222
|
+
quadra/metrics/segmentation.py,sha256=tVRYEyMiwD0RJ7NtoGRoSbwb8sAKoVmvzEhV6-3iQT4,9465
|
|
223
223
|
quadra/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
|
-
quadra/models/base.py,sha256=
|
|
224
|
+
quadra/models/base.py,sha256=QqMRQWqIsUuUHeInqMHZv3wv7Xeqz-zKe4cAQeqaN3M,5544
|
|
225
225
|
quadra/models/classification/__init__.py,sha256=c03CGDyvipXgU7ybSosOaeTl1aM1ge6TqMUgMiTpQtA,243
|
|
226
226
|
quadra/models/classification/backbones.py,sha256=haHNPC-XZ8Jj1i47cfUj8JHy_I-rins-nNfccrPBffo,6281
|
|
227
227
|
quadra/models/classification/base.py,sha256=w-mDPQPtIrNclxjqsve5BTmNhNgnWGh7uJfE5HaTFPA,2996
|
|
228
|
-
quadra/models/evaluation.py,sha256=
|
|
228
|
+
quadra/models/evaluation.py,sha256=LQg2K6PDIKK0ZnkP4pHfRNnKO4WeaROoYoNFA3Bctg0,10709
|
|
229
229
|
quadra/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
230
230
|
quadra/modules/backbone.py,sha256=xiZBqgzr1S45GX9mydl29TFuahLDaHrU7Fy73LGIyGI,909
|
|
231
|
-
quadra/modules/base.py,sha256=
|
|
231
|
+
quadra/modules/base.py,sha256=y96PSFJeo4gswVj3a6uNnoirg-dMgS0MsYDN51fQQ9A,10382
|
|
232
232
|
quadra/modules/classification/__init__.py,sha256=6keltBhC1yzgbNttBuykNYJAUMyOrY-HDNgGZGfI93I,141
|
|
233
233
|
quadra/modules/classification/base.py,sha256=QdHtHY2tF_qh2wU01Oo0TWjh9CTqa46tyF4VgcLd__M,11937
|
|
234
234
|
quadra/modules/ssl/__init__.py,sha256=oeUoGHrsESZ0595-JxPxURBP124jtNfrITbVovBpANA,302
|
|
235
235
|
quadra/modules/ssl/barlowtwins.py,sha256=iW6f7ADSEkbs7z-88x680204-Ez-iF1Yd2SdQzcLpRY,1884
|
|
236
|
-
quadra/modules/ssl/byol.py,sha256=
|
|
236
|
+
quadra/modules/ssl/byol.py,sha256=3UhUr72kpI2lM9JtVPqrTcpTo60NsAHNu3SIwD5_RrI,7114
|
|
237
237
|
quadra/modules/ssl/common.py,sha256=nQMsYEu4PUueMq0KNe898h3wGS2RVQBN0NCpYnMyRqI,9898
|
|
238
238
|
quadra/modules/ssl/dino.py,sha256=Xs4wRYvvxeLuHtOW5Gf-xaqAvT97cIuOG6PlYduPDm4,7300
|
|
239
239
|
quadra/modules/ssl/hyperspherical.py,sha256=yEY0WvYFLvKCeKKJDAWCEttYwNVjB5ai6N2FxXKqYQ4,6356
|
|
@@ -248,31 +248,31 @@ quadra/schedulers/__init__.py,sha256=mQivr18c0j36hpV3Lm8nlyBVKFevWp8TtLuTfvI9kQc
|
|
|
248
248
|
quadra/schedulers/base.py,sha256=T1EdrLOJ0i9MzWoLCkrNA0uypm7hJ-L6NFhjIXFB6NE,1462
|
|
249
249
|
quadra/schedulers/warmup.py,sha256=chzzrK7OqqlicBCxiF4CqMYNrWu6nflIbRE-C86Jrw0,4962
|
|
250
250
|
quadra/tasks/__init__.py,sha256=tmAfMoH0k3UC7r2pNrgbBa1Pfc3tpLl3IObFF6Z0eRE,820
|
|
251
|
-
quadra/tasks/anomaly.py,sha256=
|
|
252
|
-
quadra/tasks/base.py,sha256=
|
|
253
|
-
quadra/tasks/classification.py,sha256=
|
|
254
|
-
quadra/tasks/patch.py,sha256=
|
|
255
|
-
quadra/tasks/segmentation.py,sha256=
|
|
256
|
-
quadra/tasks/ssl.py,sha256=
|
|
251
|
+
quadra/tasks/anomaly.py,sha256=RHeiM1vZF1zsva37iYdiGx_HLgdAp8lXnmUzXja69YU,24638
|
|
252
|
+
quadra/tasks/base.py,sha256=piYlTFtvqH-4s4oEq4GczdAs_gL29UHAJGsOC5Sd3Bc,14187
|
|
253
|
+
quadra/tasks/classification.py,sha256=05l3QM3dsU2yTWhXxNAcJ8sZM0Vbfgey-e5EV6p1TX8,52816
|
|
254
|
+
quadra/tasks/patch.py,sha256=nzo8o-ei7iF1Iarvd8-c08s0Rs_lPvVPDLAbkFMx-Qw,20251
|
|
255
|
+
quadra/tasks/segmentation.py,sha256=9Qy-V0Wvoofl7IrfotnSMgBIXcZd-WfZZtetyqmB0FY,16260
|
|
256
|
+
quadra/tasks/ssl.py,sha256=XsaC9hbhvTA5UfHeRaaCstx9mTYacLRmgoCF5Tj9R5M,20547
|
|
257
257
|
quadra/trainers/README.md,sha256=XtpbUOxwvPpOUL7E5s2JHjRgwT-CRKTxsBeUSXrg9BU,248
|
|
258
258
|
quadra/trainers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
259
259
|
quadra/trainers/classification.py,sha256=YeJ0z7Vk0-dsMTcoKBxSdSA0rxtilEcQTp-Zq9Xi1hw,7042
|
|
260
260
|
quadra/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
261
261
|
quadra/utils/anomaly.py,sha256=49vFvT5-4SxczsEM2Akcut_M1DDwKlOVdGv36oLTgR0,4067
|
|
262
|
-
quadra/utils/classification.py,sha256=
|
|
262
|
+
quadra/utils/classification.py,sha256=dKFuv4RywWhvhstOnEOnaf-6qcViUK0dTgah9m9mw2Q,24917
|
|
263
263
|
quadra/utils/deprecation.py,sha256=zF_S-yqenaZxRBOudhXts0mX763WjEUWCnHd09TZnwY,852
|
|
264
|
-
quadra/utils/evaluation.py,sha256=
|
|
265
|
-
quadra/utils/export.py,sha256=
|
|
264
|
+
quadra/utils/evaluation.py,sha256=oooRJPu1AaHhOwvB1Y6SFjQ645OkgrDzKtUvwWq8oq4,19005
|
|
265
|
+
quadra/utils/export.py,sha256=ghNF8mQw-JjZiVeBJ0y8yIQkx8EG8ssPorn3aaIsgcA,20840
|
|
266
266
|
quadra/utils/imaging.py,sha256=Cz7sGb_axEmnGcwQJP2djFZpIpGCPFIBGT8NWVV-OOE,866
|
|
267
267
|
quadra/utils/logger.py,sha256=tQJ4xpTAFKx1g-UUm5K1x7zgoP6qoXpcUHQyu0rOr1w,556
|
|
268
|
-
quadra/utils/mlflow.py,sha256=
|
|
268
|
+
quadra/utils/mlflow.py,sha256=DVso1lxn126hil8i4tTf5WFUPJ8uJNAzNU8OXbXwOzw,3586
|
|
269
269
|
quadra/utils/model_manager.py,sha256=P5JtY95p6giQ6mb4TUnWsNwUh5ClzHBillnG5SA56QY,12546
|
|
270
|
-
quadra/utils/models.py,sha256=
|
|
270
|
+
quadra/utils/models.py,sha256=49AXecNN7mg8uqO-YW0sLbPxbvWfTI4E4NNpTesW6HE,19699
|
|
271
271
|
quadra/utils/patch/__init__.py,sha256=YenDdsI937kyAJiE0dP3_Xua8gHIoFjheoWMnpx_TGU,509
|
|
272
|
-
quadra/utils/patch/dataset.py,sha256=
|
|
273
|
-
quadra/utils/patch/metrics.py,sha256=
|
|
272
|
+
quadra/utils/patch/dataset.py,sha256=tRwrc01p0sj4nLQ-6b9mvnkTQrjtFSv5qMYiTJRSXKU,61401
|
|
273
|
+
quadra/utils/patch/metrics.py,sha256=r7zxGXC2hU6EiMbfNoUmi6BC0EEUZs9Jy_mtI5Q1x5g,17693
|
|
274
274
|
quadra/utils/patch/model.py,sha256=F-wbMZvM8nS_ZSYewg2SofD7H0I6DH1DBA2ACSr0fCY,5746
|
|
275
|
-
quadra/utils/patch/visualization.py,sha256=
|
|
275
|
+
quadra/utils/patch/visualization.py,sha256=V64SsXcQ2UhBVH2gzzrjF_OaxL58ktEo1Jdzcos3AT8,7044
|
|
276
276
|
quadra/utils/resolver.py,sha256=p8t95b__htcR3hdnF9RtlWNKLTVUWYjADozYNj9lIzQ,1397
|
|
277
277
|
quadra/utils/segmentation.py,sha256=rWOE1qw2RS0dpgJyHqfQURw86K6G2Hst6mpu97PI5Ac,920
|
|
278
278
|
quadra/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -280,7 +280,7 @@ quadra/utils/tests/fixtures/__init__.py,sha256=5KHMpKGK31PRWfdaiM5gmcs3gyTcCQQEv
|
|
|
280
280
|
quadra/utils/tests/fixtures/dataset/__init__.py,sha256=hfNtCxu3PPAzqKcKw40BnsIsUHNDlGjYhLuQ5n48deA,1298
|
|
281
281
|
quadra/utils/tests/fixtures/dataset/anomaly.py,sha256=x9X_zafn7Kvjya0_ztCwYRXVEoubND_9yoHxYgn9pkY,3899
|
|
282
282
|
quadra/utils/tests/fixtures/dataset/classification.py,sha256=Mh4t1fTS3thd0hdfh-jWD04WKCIBTeU2x1Ds5pJnZmM,15422
|
|
283
|
-
quadra/utils/tests/fixtures/dataset/imagenette.py,sha256=
|
|
283
|
+
quadra/utils/tests/fixtures/dataset/imagenette.py,sha256=ICwgvYWngEfjaU2JP3riaHHf0FXlOOEyeUtpJ1fYEds,1460
|
|
284
284
|
quadra/utils/tests/fixtures/dataset/segmentation.py,sha256=mSe93hJEpjDdFM69yGoYUzGa-M5T2P8XE4_Z1ZiORuM,5855
|
|
285
285
|
quadra/utils/tests/fixtures/models/__init__.py,sha256=5cxfDtbV-_prBlVu9L2tC34C8QGyng9chUbJYGFv0J0,123
|
|
286
286
|
quadra/utils/tests/fixtures/models/anomaly.py,sha256=J5dG95RlWNds5xqArQY4JlpmqUcLgoESxVC7K5O7ez4,2942
|
|
@@ -288,13 +288,13 @@ quadra/utils/tests/fixtures/models/classification.py,sha256=5qpyOonqK6W2LCUWEHhm
|
|
|
288
288
|
quadra/utils/tests/fixtures/models/segmentation.py,sha256=CTNXeEPcFxFq-YcNfQi5DbbytPZwBQaZn5dQq3L41j0,765
|
|
289
289
|
quadra/utils/tests/helpers.py,sha256=9PJlwozUl_lpQW-Ck-tN7sGFcgeieEd3q56aYuwMIlk,2381
|
|
290
290
|
quadra/utils/tests/models.py,sha256=KbAlv_ukxaUYsyVNUO_dM0NyIosx8RpC0EVyF1HvPkM,507
|
|
291
|
-
quadra/utils/utils.py,sha256=
|
|
292
|
-
quadra/utils/validator.py,sha256=
|
|
293
|
-
quadra/utils/visualization.py,sha256=
|
|
294
|
-
quadra/utils/vit_explainability.py,sha256=
|
|
291
|
+
quadra/utils/utils.py,sha256=3tgj_tFFhKsGNJ9jrmULI9rWxFyhuUe53Y5SBJFkwSM,19124
|
|
292
|
+
quadra/utils/validator.py,sha256=wmVXycB90VNyAbKBUVncFCxK4nsYiOWJIY3ISXwxYCY,4632
|
|
293
|
+
quadra/utils/visualization.py,sha256=yYm7lPziUOlybxigZ2qTycNewb67Q80H4hjQGWUh788,16094
|
|
294
|
+
quadra/utils/vit_explainability.py,sha256=Gh6BHaDEzWxOjJp1aqvCxLt9Rb8TXd5uKXOAx7-acUk,13351
|
|
295
295
|
hydra_plugins/quadra_searchpath_plugin.py,sha256=AAn4TzR87zUK7nwSsK-KoqALiPtfQ8FvX3fgZPTGIJ0,1189
|
|
296
|
-
quadra-2.3.
|
|
297
|
-
quadra-2.3.
|
|
298
|
-
quadra-2.3.
|
|
299
|
-
quadra-2.3.
|
|
300
|
-
quadra-2.3.
|
|
296
|
+
quadra-2.3.1.dist-info/LICENSE,sha256=8cTbQtcWa02YJoSpMeV_gxj3jpMTkxvl-w3WJ5gV_QE,11342
|
|
297
|
+
quadra-2.3.1.dist-info/METADATA,sha256=A3ykpI_-NCzmuMhhkGt7Z2Qs6qJT_xz9w4nOfwoZnJg,17598
|
|
298
|
+
quadra-2.3.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
299
|
+
quadra-2.3.1.dist-info/entry_points.txt,sha256=sRYonBZyx-sAJeWcQNQoVQIU5lm02cnCQt6b15k0WHU,43
|
|
300
|
+
quadra-2.3.1.dist-info/RECORD,,
|
|
File without changes
|