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.
Files changed (300) hide show
  1. hydra_plugins/quadra_searchpath_plugin.py +0 -0
  2. quadra/__init__.py +1 -1
  3. quadra/callbacks/__init__.py +0 -0
  4. quadra/callbacks/anomalib.py +3 -2
  5. quadra/callbacks/lightning.py +3 -1
  6. quadra/callbacks/mlflow.py +0 -0
  7. quadra/callbacks/scheduler.py +0 -0
  8. quadra/configs/__init__.py +0 -0
  9. quadra/configs/backbone/caformer_m36.yaml +0 -0
  10. quadra/configs/backbone/caformer_s36.yaml +0 -0
  11. quadra/configs/backbone/convnextv2_base.yaml +0 -0
  12. quadra/configs/backbone/convnextv2_femto.yaml +0 -0
  13. quadra/configs/backbone/convnextv2_tiny.yaml +0 -0
  14. quadra/configs/backbone/dino_vitb8.yaml +0 -0
  15. quadra/configs/backbone/dino_vits8.yaml +0 -0
  16. quadra/configs/backbone/dinov2_vitb14.yaml +0 -0
  17. quadra/configs/backbone/dinov2_vits14.yaml +0 -0
  18. quadra/configs/backbone/efficientnet_b0.yaml +0 -0
  19. quadra/configs/backbone/efficientnet_b1.yaml +0 -0
  20. quadra/configs/backbone/efficientnet_b2.yaml +0 -0
  21. quadra/configs/backbone/efficientnet_b3.yaml +0 -0
  22. quadra/configs/backbone/efficientnetv2_s.yaml +0 -0
  23. quadra/configs/backbone/levit_128s.yaml +0 -0
  24. quadra/configs/backbone/mnasnet0_5.yaml +0 -0
  25. quadra/configs/backbone/resnet101.yaml +0 -0
  26. quadra/configs/backbone/resnet18.yaml +0 -0
  27. quadra/configs/backbone/resnet18_ssl.yaml +0 -0
  28. quadra/configs/backbone/resnet50.yaml +0 -0
  29. quadra/configs/backbone/smp.yaml +0 -0
  30. quadra/configs/backbone/tiny_vit_21m_224.yaml +0 -0
  31. quadra/configs/backbone/unetr.yaml +0 -0
  32. quadra/configs/backbone/vit16_base.yaml +0 -0
  33. quadra/configs/backbone/vit16_small.yaml +0 -0
  34. quadra/configs/backbone/vit16_tiny.yaml +0 -0
  35. quadra/configs/backbone/xcit_tiny_24_p8_224.yaml +0 -0
  36. quadra/configs/callbacks/all.yaml +0 -0
  37. quadra/configs/callbacks/default.yaml +0 -0
  38. quadra/configs/callbacks/default_anomalib.yaml +0 -0
  39. quadra/configs/config.yaml +0 -0
  40. quadra/configs/core/default.yaml +0 -0
  41. quadra/configs/datamodule/base/anomaly.yaml +0 -0
  42. quadra/configs/datamodule/base/classification.yaml +0 -0
  43. quadra/configs/datamodule/base/multilabel_classification.yaml +0 -0
  44. quadra/configs/datamodule/base/segmentation.yaml +0 -0
  45. quadra/configs/datamodule/base/segmentation_multiclass.yaml +0 -0
  46. quadra/configs/datamodule/base/sklearn_classification.yaml +0 -0
  47. quadra/configs/datamodule/base/sklearn_classification_patch.yaml +0 -0
  48. quadra/configs/datamodule/base/ssl.yaml +0 -0
  49. quadra/configs/datamodule/generic/imagenette/classification/base.yaml +0 -0
  50. quadra/configs/datamodule/generic/imagenette/ssl/base.yaml +0 -0
  51. quadra/configs/datamodule/generic/mnist/anomaly/base.yaml +0 -0
  52. quadra/configs/datamodule/generic/mvtec/anomaly/base.yaml +0 -0
  53. quadra/configs/datamodule/generic/oxford_pet/segmentation/base.yaml +0 -0
  54. quadra/configs/experiment/base/anomaly/cfa.yaml +0 -0
  55. quadra/configs/experiment/base/anomaly/cflow.yaml +0 -0
  56. quadra/configs/experiment/base/anomaly/csflow.yaml +0 -0
  57. quadra/configs/experiment/base/anomaly/draem.yaml +0 -0
  58. quadra/configs/experiment/base/anomaly/efficient_ad.yaml +0 -0
  59. quadra/configs/experiment/base/anomaly/fastflow.yaml +0 -0
  60. quadra/configs/experiment/base/anomaly/inference.yaml +0 -0
  61. quadra/configs/experiment/base/anomaly/padim.yaml +0 -0
  62. quadra/configs/experiment/base/anomaly/patchcore.yaml +0 -0
  63. quadra/configs/experiment/base/classification/classification.yaml +0 -0
  64. quadra/configs/experiment/base/classification/classification_evaluation.yaml +0 -0
  65. quadra/configs/experiment/base/classification/multilabel_classification.yaml +0 -0
  66. quadra/configs/experiment/base/classification/sklearn_classification.yaml +0 -0
  67. quadra/configs/experiment/base/classification/sklearn_classification_patch.yaml +0 -0
  68. quadra/configs/experiment/base/classification/sklearn_classification_patch_test.yaml +0 -0
  69. quadra/configs/experiment/base/classification/sklearn_classification_test.yaml +0 -0
  70. quadra/configs/experiment/base/segmentation/smp.yaml +0 -0
  71. quadra/configs/experiment/base/segmentation/smp_evaluation.yaml +0 -0
  72. quadra/configs/experiment/base/segmentation/smp_multiclass.yaml +0 -0
  73. quadra/configs/experiment/base/segmentation/smp_multiclass_evaluation.yaml +0 -0
  74. quadra/configs/experiment/base/ssl/barlow.yaml +0 -0
  75. quadra/configs/experiment/base/ssl/byol.yaml +0 -0
  76. quadra/configs/experiment/base/ssl/dino.yaml +0 -0
  77. quadra/configs/experiment/base/ssl/linear_eval.yaml +0 -0
  78. quadra/configs/experiment/base/ssl/simclr.yaml +0 -0
  79. quadra/configs/experiment/base/ssl/simsiam.yaml +0 -0
  80. quadra/configs/experiment/custom/cls.yaml +0 -0
  81. quadra/configs/experiment/default.yaml +0 -0
  82. quadra/configs/experiment/generic/imagenette/classification/default.yaml +0 -0
  83. quadra/configs/experiment/generic/imagenette/ssl/barlow.yaml +0 -0
  84. quadra/configs/experiment/generic/imagenette/ssl/byol.yaml +0 -0
  85. quadra/configs/experiment/generic/imagenette/ssl/dino.yaml +0 -0
  86. quadra/configs/experiment/generic/imagenette/ssl/simclr.yaml +0 -0
  87. quadra/configs/experiment/generic/imagenette/ssl/simsiam.yaml +0 -0
  88. quadra/configs/experiment/generic/mnist/anomaly/cfa.yaml +0 -0
  89. quadra/configs/experiment/generic/mnist/anomaly/cflow.yaml +0 -0
  90. quadra/configs/experiment/generic/mnist/anomaly/csflow.yaml +0 -0
  91. quadra/configs/experiment/generic/mnist/anomaly/draem.yaml +0 -0
  92. quadra/configs/experiment/generic/mnist/anomaly/fastflow.yaml +0 -0
  93. quadra/configs/experiment/generic/mnist/anomaly/inference.yaml +0 -0
  94. quadra/configs/experiment/generic/mnist/anomaly/padim.yaml +0 -0
  95. quadra/configs/experiment/generic/mnist/anomaly/patchcore.yaml +0 -0
  96. quadra/configs/experiment/generic/mvtec/anomaly/cfa.yaml +0 -0
  97. quadra/configs/experiment/generic/mvtec/anomaly/cflow.yaml +0 -0
  98. quadra/configs/experiment/generic/mvtec/anomaly/csflow.yaml +0 -0
  99. quadra/configs/experiment/generic/mvtec/anomaly/draem.yaml +0 -0
  100. quadra/configs/experiment/generic/mvtec/anomaly/efficient_ad.yaml +0 -0
  101. quadra/configs/experiment/generic/mvtec/anomaly/fastflow.yaml +0 -0
  102. quadra/configs/experiment/generic/mvtec/anomaly/inference.yaml +0 -0
  103. quadra/configs/experiment/generic/mvtec/anomaly/padim.yaml +0 -0
  104. quadra/configs/experiment/generic/mvtec/anomaly/patchcore.yaml +0 -0
  105. quadra/configs/experiment/generic/oxford_pet/segmentation/smp.yaml +0 -0
  106. quadra/configs/export/default.yaml +0 -0
  107. quadra/configs/hydra/anomaly_custom.yaml +0 -0
  108. quadra/configs/hydra/default.yaml +0 -0
  109. quadra/configs/inference/default.yaml +0 -0
  110. quadra/configs/logger/comet.yaml +0 -0
  111. quadra/configs/logger/csv.yaml +0 -0
  112. quadra/configs/logger/mlflow.yaml +0 -0
  113. quadra/configs/logger/tensorboard.yaml +0 -0
  114. quadra/configs/loss/asl.yaml +0 -0
  115. quadra/configs/loss/barlow.yaml +0 -0
  116. quadra/configs/loss/bce.yaml +0 -0
  117. quadra/configs/loss/byol.yaml +0 -0
  118. quadra/configs/loss/cross_entropy.yaml +0 -0
  119. quadra/configs/loss/dino.yaml +0 -0
  120. quadra/configs/loss/simclr.yaml +0 -0
  121. quadra/configs/loss/simsiam.yaml +0 -0
  122. quadra/configs/loss/smp_ce.yaml +0 -0
  123. quadra/configs/loss/smp_dice.yaml +0 -0
  124. quadra/configs/loss/smp_dice_multiclass.yaml +0 -0
  125. quadra/configs/loss/smp_mcc.yaml +0 -0
  126. quadra/configs/loss/vicreg.yaml +0 -0
  127. quadra/configs/model/anomalib/cfa.yaml +0 -0
  128. quadra/configs/model/anomalib/cflow.yaml +0 -0
  129. quadra/configs/model/anomalib/csflow.yaml +0 -0
  130. quadra/configs/model/anomalib/dfm.yaml +0 -0
  131. quadra/configs/model/anomalib/draem.yaml +0 -0
  132. quadra/configs/model/anomalib/efficient_ad.yaml +0 -0
  133. quadra/configs/model/anomalib/fastflow.yaml +0 -0
  134. quadra/configs/model/anomalib/padim.yaml +0 -0
  135. quadra/configs/model/anomalib/patchcore.yaml +0 -0
  136. quadra/configs/model/barlow.yaml +0 -0
  137. quadra/configs/model/byol.yaml +0 -0
  138. quadra/configs/model/classification.yaml +0 -0
  139. quadra/configs/model/dino.yaml +0 -0
  140. quadra/configs/model/logistic_regression.yaml +0 -0
  141. quadra/configs/model/multilabel_classification.yaml +0 -0
  142. quadra/configs/model/simclr.yaml +0 -0
  143. quadra/configs/model/simsiam.yaml +0 -0
  144. quadra/configs/model/smp.yaml +0 -0
  145. quadra/configs/model/smp_multiclass.yaml +0 -0
  146. quadra/configs/model/vicreg.yaml +0 -0
  147. quadra/configs/optimizer/adam.yaml +0 -0
  148. quadra/configs/optimizer/adamw.yaml +0 -0
  149. quadra/configs/optimizer/default.yaml +0 -0
  150. quadra/configs/optimizer/lars.yaml +0 -0
  151. quadra/configs/optimizer/sgd.yaml +0 -0
  152. quadra/configs/scheduler/default.yaml +0 -0
  153. quadra/configs/scheduler/rop.yaml +0 -0
  154. quadra/configs/scheduler/step.yaml +0 -0
  155. quadra/configs/scheduler/warmrestart.yaml +0 -0
  156. quadra/configs/scheduler/warmup.yaml +0 -0
  157. quadra/configs/task/anomalib/cfa.yaml +0 -0
  158. quadra/configs/task/anomalib/cflow.yaml +0 -0
  159. quadra/configs/task/anomalib/csflow.yaml +0 -0
  160. quadra/configs/task/anomalib/draem.yaml +0 -0
  161. quadra/configs/task/anomalib/efficient_ad.yaml +0 -0
  162. quadra/configs/task/anomalib/fastflow.yaml +0 -0
  163. quadra/configs/task/anomalib/inference.yaml +0 -0
  164. quadra/configs/task/anomalib/padim.yaml +0 -0
  165. quadra/configs/task/anomalib/patchcore.yaml +0 -0
  166. quadra/configs/task/classification.yaml +0 -0
  167. quadra/configs/task/classification_evaluation.yaml +0 -0
  168. quadra/configs/task/default.yaml +0 -0
  169. quadra/configs/task/segmentation.yaml +0 -0
  170. quadra/configs/task/segmentation_evaluation.yaml +0 -0
  171. quadra/configs/task/sklearn_classification.yaml +0 -0
  172. quadra/configs/task/sklearn_classification_patch.yaml +0 -0
  173. quadra/configs/task/sklearn_classification_patch_test.yaml +0 -0
  174. quadra/configs/task/sklearn_classification_test.yaml +0 -0
  175. quadra/configs/task/ssl.yaml +0 -0
  176. quadra/configs/trainer/lightning_cpu.yaml +0 -0
  177. quadra/configs/trainer/lightning_gpu.yaml +0 -0
  178. quadra/configs/trainer/lightning_gpu_bf16.yaml +0 -0
  179. quadra/configs/trainer/lightning_gpu_fp16.yaml +0 -0
  180. quadra/configs/trainer/lightning_multigpu.yaml +0 -0
  181. quadra/configs/trainer/sklearn_classification.yaml +0 -0
  182. quadra/configs/transforms/byol.yaml +0 -0
  183. quadra/configs/transforms/byol_no_random_resize.yaml +0 -0
  184. quadra/configs/transforms/default.yaml +0 -0
  185. quadra/configs/transforms/default_numpy.yaml +0 -0
  186. quadra/configs/transforms/default_resize.yaml +0 -0
  187. quadra/configs/transforms/dino.yaml +0 -0
  188. quadra/configs/transforms/linear_eval.yaml +0 -0
  189. quadra/datamodules/__init__.py +0 -0
  190. quadra/datamodules/anomaly.py +0 -0
  191. quadra/datamodules/base.py +5 -5
  192. quadra/datamodules/classification.py +2 -2
  193. quadra/datamodules/generic/__init__.py +0 -0
  194. quadra/datamodules/generic/imagenette.py +0 -0
  195. quadra/datamodules/generic/mnist.py +0 -0
  196. quadra/datamodules/generic/mvtec.py +0 -0
  197. quadra/datamodules/generic/oxford_pet.py +0 -0
  198. quadra/datamodules/patch.py +0 -0
  199. quadra/datamodules/segmentation.py +6 -6
  200. quadra/datamodules/ssl.py +0 -0
  201. quadra/datasets/__init__.py +0 -0
  202. quadra/datasets/anomaly.py +2 -2
  203. quadra/datasets/classification.py +7 -7
  204. quadra/datasets/patch.py +1 -1
  205. quadra/datasets/segmentation.py +0 -0
  206. quadra/datasets/ssl.py +3 -3
  207. quadra/losses/__init__.py +0 -0
  208. quadra/losses/classification/__init__.py +0 -0
  209. quadra/losses/classification/asl.py +0 -0
  210. quadra/losses/classification/focal.py +0 -0
  211. quadra/losses/classification/prototypical.py +0 -0
  212. quadra/losses/ssl/__init__.py +0 -0
  213. quadra/losses/ssl/barlowtwins.py +0 -0
  214. quadra/losses/ssl/byol.py +0 -0
  215. quadra/losses/ssl/dino.py +0 -0
  216. quadra/losses/ssl/hyperspherical.py +0 -0
  217. quadra/losses/ssl/idmm.py +0 -0
  218. quadra/losses/ssl/simclr.py +0 -0
  219. quadra/losses/ssl/simsiam.py +0 -0
  220. quadra/losses/ssl/vicreg.py +0 -0
  221. quadra/main.py +0 -0
  222. quadra/metrics/__init__.py +0 -0
  223. quadra/metrics/segmentation.py +1 -1
  224. quadra/models/__init__.py +0 -0
  225. quadra/models/base.py +1 -1
  226. quadra/models/classification/__init__.py +0 -0
  227. quadra/models/classification/backbones.py +0 -0
  228. quadra/models/classification/base.py +0 -0
  229. quadra/models/evaluation.py +1 -1
  230. quadra/modules/__init__.py +0 -0
  231. quadra/modules/backbone.py +0 -0
  232. quadra/modules/base.py +3 -2
  233. quadra/modules/classification/__init__.py +0 -0
  234. quadra/modules/classification/base.py +0 -0
  235. quadra/modules/ssl/__init__.py +0 -0
  236. quadra/modules/ssl/barlowtwins.py +0 -0
  237. quadra/modules/ssl/byol.py +1 -0
  238. quadra/modules/ssl/common.py +0 -0
  239. quadra/modules/ssl/dino.py +0 -0
  240. quadra/modules/ssl/hyperspherical.py +0 -0
  241. quadra/modules/ssl/idmm.py +0 -0
  242. quadra/modules/ssl/simclr.py +0 -0
  243. quadra/modules/ssl/simsiam.py +0 -0
  244. quadra/modules/ssl/vicreg.py +0 -0
  245. quadra/optimizers/__init__.py +0 -0
  246. quadra/optimizers/lars.py +0 -0
  247. quadra/optimizers/sam.py +0 -0
  248. quadra/schedulers/__init__.py +0 -0
  249. quadra/schedulers/base.py +0 -0
  250. quadra/schedulers/warmup.py +0 -0
  251. quadra/tasks/__init__.py +0 -0
  252. quadra/tasks/anomaly.py +7 -4
  253. quadra/tasks/base.py +8 -4
  254. quadra/tasks/classification.py +6 -2
  255. quadra/tasks/patch.py +1 -1
  256. quadra/tasks/segmentation.py +7 -5
  257. quadra/tasks/ssl.py +2 -3
  258. quadra/trainers/README.md +0 -0
  259. quadra/trainers/__init__.py +0 -0
  260. quadra/trainers/classification.py +0 -0
  261. quadra/utils/__init__.py +0 -0
  262. quadra/utils/anomaly.py +0 -0
  263. quadra/utils/classification.py +8 -10
  264. quadra/utils/deprecation.py +0 -0
  265. quadra/utils/evaluation.py +12 -3
  266. quadra/utils/export.py +5 -5
  267. quadra/utils/imaging.py +0 -0
  268. quadra/utils/logger.py +0 -0
  269. quadra/utils/mlflow.py +2 -0
  270. quadra/utils/model_manager.py +0 -0
  271. quadra/utils/models.py +5 -7
  272. quadra/utils/patch/__init__.py +0 -0
  273. quadra/utils/patch/dataset.py +7 -6
  274. quadra/utils/patch/metrics.py +9 -6
  275. quadra/utils/patch/model.py +0 -0
  276. quadra/utils/patch/visualization.py +2 -2
  277. quadra/utils/resolver.py +0 -0
  278. quadra/utils/segmentation.py +0 -0
  279. quadra/utils/tests/__init__.py +0 -0
  280. quadra/utils/tests/fixtures/__init__.py +0 -0
  281. quadra/utils/tests/fixtures/dataset/__init__.py +0 -0
  282. quadra/utils/tests/fixtures/dataset/anomaly.py +0 -0
  283. quadra/utils/tests/fixtures/dataset/classification.py +0 -0
  284. quadra/utils/tests/fixtures/dataset/imagenette.py +1 -1
  285. quadra/utils/tests/fixtures/dataset/segmentation.py +0 -0
  286. quadra/utils/tests/fixtures/models/__init__.py +0 -0
  287. quadra/utils/tests/fixtures/models/anomaly.py +0 -0
  288. quadra/utils/tests/fixtures/models/classification.py +0 -0
  289. quadra/utils/tests/fixtures/models/segmentation.py +0 -0
  290. quadra/utils/tests/helpers.py +0 -0
  291. quadra/utils/tests/models.py +0 -0
  292. quadra/utils/utils.py +1 -1
  293. quadra/utils/validator.py +1 -3
  294. quadra/utils/visualization.py +8 -5
  295. quadra/utils/vit_explainability.py +1 -1
  296. {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/LICENSE +0 -0
  297. {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/METADATA +1 -1
  298. {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/RECORD +39 -39
  299. {quadra-2.3.0a2.dist-info → quadra-2.3.1.dist-info}/WHEEL +1 -1
  300. {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, (ListConfig, DictConfig)):
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, (Sequence, dict)) for inp in input_shapes):
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, (Sequence, dict)) for inp in input_shapes):
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=0.001, keep_io_types=False
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 = {}
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 Union, cast
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, (TorchEvaluationModel, TorchscriptEvaluationModel)):
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(Union[list[torch.Tensor], tuple[torch.Tensor], torch.Tensor], feature_extractor(x1))
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, (list, tuple)):
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()
File without changes
@@ -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[0] == patch_num_h and patches.shape[1] == patch_num_w
913
- ), f"Patch shape {patches.shape} does not match the expected shape {patch_number}"
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) # type: ignore[assignment]
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]
@@ -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
- patch_num_h is not None and patch_num_w is not None
103
- ), "Either number of patches or patch size is required for reconstruction"
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) # type: ignore[operator]
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
- for i in range(1, gt_img.max() + 1): # type: ignore[union-attr]
207
- region = (gt_img == i).astype(bool) # type: ignore[union-attr]
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:
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
- ) # type: ignore[call-overload]
78
+ )
79
79
  else:
80
80
  out = reconstruction["prediction"]
81
81
 
quadra/utils/resolver.py CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -43,7 +43,7 @@ def imagenette_dataset(tmp_path: Path) -> str:
43
43
 
44
44
  Args:
45
45
  tmp_path: Path to temporary directory
46
- request: Pytest SubRequest object
46
+
47
47
  Yields:
48
48
  Path to imagenette dataset folder
49
49
  """
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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, (str, bytes)):
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]}`?"
@@ -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, (list, ListConfig, TransformsSeqType)):
101
+ if isinstance(transforms, list | ListConfig | TransformsSeqType):
102
102
  transforms = [convert_transforms(t) for t in transforms]
103
- if isinstance(transforms, (dict, DictConfig)):
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, (Normalize, ToTensorV2)):
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: quadra
3
- Version: 2.3.0a2
3
+ Version: 2.3.1
4
4
  Summary: Deep Learning experiment orchestration library
5
5
  Home-page: https://orobix.github.io/quadra
6
6
  License: Apache-2.0
@@ -1,7 +1,7 @@
1
- quadra/__init__.py,sha256=H1Lj8bTwd7z9j_afVDcFqTV6qqbn3GX9RHFirYGp7zQ,114
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=Z0Xx3M9UEMYGY0BpSsqemgQSQ6jAr4SrvlbDg_oG9C8,11913
4
- quadra/callbacks/lightning.py,sha256=1OTM6fB7qBVLPWNBAZJOb3B00q0kAxMWkPjTEn9YgF0,20182
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=vDKyoZMMzKUn9dSU1hNiCW4Tt7G6xFTxuZn6c8CQxIc,14001
191
- quadra/datamodules/classification.py,sha256=UfszA_14TmS-9xQLdVLVJAjUT2PG1KLzfOX2w9mFKzg,41594
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=eWS_v7H4ea9h05KW1nMpLMJjCGVZEnzBU-vuKlVAdeY,28920
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=Guxb39aZkne5Qp_pEhjPACdzYSkLdLbu5AUXP0Gf1aE,11944
202
- quadra/datasets/classification.py,sha256=e-hNFh76aFnvbtkQLq1ljJ9Q3a6ymOmFziNjNK8VM4U,7512
203
- quadra/datasets/patch.py,sha256=bloUJS_qzzSfVqZaFpQd0uJMhRKRCfEwnSqCJaVtyZQ,4789
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=bbGWM-mQvr5xqXtmanr6HKC1Hgq42asu7wx2prb5NVo,3925
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=jkQzCUz0ibkEoF95-uL-4wwxybs5SAs2VHiT5ZGckso,9451
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=nYbZ1JRmhgcORZhAJoV6d2_L5C5yds_X-PQAFIDoHWk,5514
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=dEazagyUvlnnEq16IdM25qAdDXZR-BUhApDF_YUdO-E,10695
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=fS_kbOAfEihHFfiTcyuyDXTzkmkJr2ivtAMiZqjOUog,10303
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=8sviU7MS9MXDbS9Ogu9-qJCZrkTI2pPxgEwNvc7EqIo,7084
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=rl3F39kABt5deSLOeY2s_1t2mR4x1-42VdP0flRrZMs,24583
252
- quadra/tasks/base.py,sha256=5Rsjdothqb4YXMIN_s98HdoPmJBfQKV0ZwnyvUuihYI,14101
253
- quadra/tasks/classification.py,sha256=I4NEsNVn1lOu-HLaD_hqowfnedhD4l-wZ4JPI1eD4pg,52735
254
- quadra/tasks/patch.py,sha256=EJvbtvlebyOtk6m47juW8XMXr1v_bLFTIKqI1KC0HRA,20244
255
- quadra/tasks/segmentation.py,sha256=5GF7CZjm1dQGQ-Q0kAc68GSsNv6FTxBsl_rbEZQwjmU,16213
256
- quadra/tasks/ssl.py,sha256=SVZeAW5xVkfeGTwMqRhGKLagMC2kHrxoOaNEDzbCZ0A,20552
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=7Phbywpd1CNzwLM5F7zV9FrzdHGd6EkR6LRTRpkerTc,24882
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=5Occ6ONsjnvMkaFFjohtgSvffxEKfjdvMbxqzgtmiHQ,18538
265
- quadra/utils/export.py,sha256=PoKaADeSwGPIW5TEHP3Klw_SUSV1gP1dIN4CN-AgDm0,20836
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=7E09JShGm2qO7bLb_8srA_RYdVAudxeDYmX7pMdjoVU,3524
268
+ quadra/utils/mlflow.py,sha256=DVso1lxn126hil8i4tTf5WFUPJ8uJNAzNU8OXbXwOzw,3586
269
269
  quadra/utils/model_manager.py,sha256=P5JtY95p6giQ6mb4TUnWsNwUh5ClzHBillnG5SA56QY,12546
270
- quadra/utils/models.py,sha256=xLOT6Sorpc54dYn9XG8RpqoLupvNrMCiE_QvvIMLwHA,19756
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=hqM7XyPNDmI9_uJSrAxNYOasdNlEHcg-npP1S9Bb05Y,61374
273
- quadra/utils/patch/metrics.py,sha256=E1PeHFp10pPgkb6484fDvRLn2E9NDy9xIqEmMBeusOw,17644
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=HwO67vRMvhQAKN_FRFv4AAqvYMeOpg0dod3DwGpgTfo,7044
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=gADjmgiyQNA2CrtjCITlJTqgQG2StL3bUVnADOFSZfQ,1501
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=AjVsJvqACj5Bo8aOF8Itkwqhzws3bwfLnptxosbgzl4,19125
292
- quadra/utils/validator.py,sha256=eFCGr0ss1gYSpsL31JbsCXPZUMJAI9_H-mGodt6UGsU,4668
293
- quadra/utils/visualization.py,sha256=UvGHX0dumfjpT_KX3Yc1W2B5sAXXaZZWIwXQAi4sdoQ,15950
294
- quadra/utils/vit_explainability.py,sha256=hY0awehj6UkyBhnBlW5uWoJTsBfgow5Nll9fAqrzmMo,13337
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.0a2.dist-info/LICENSE,sha256=8cTbQtcWa02YJoSpMeV_gxj3jpMTkxvl-w3WJ5gV_QE,11342
297
- quadra-2.3.0a2.dist-info/METADATA,sha256=6sS_JtaCenmsM14a9s7_R8LadWrppBFXz5QaNOL_hDA,17600
298
- quadra-2.3.0a2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
299
- quadra-2.3.0a2.dist-info/entry_points.txt,sha256=sRYonBZyx-sAJeWcQNQoVQIU5lm02cnCQt6b15k0WHU,43
300
- quadra-2.3.0a2.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any