quadra 2.6.2__tar.gz → 2.7.1__tar.gz

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 (299) hide show
  1. {quadra-2.6.2 → quadra-2.7.1}/PKG-INFO +3 -3
  2. {quadra-2.6.2 → quadra-2.7.1}/pyproject.toml +3 -3
  3. {quadra-2.6.2 → quadra-2.7.1}/quadra/__init__.py +1 -1
  4. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/inference.yaml +1 -0
  5. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/anomaly.py +31 -4
  6. {quadra-2.6.2 → quadra-2.7.1}/LICENSE +0 -0
  7. {quadra-2.6.2 → quadra-2.7.1}/README.md +0 -0
  8. {quadra-2.6.2 → quadra-2.7.1}/quadra/callbacks/__init__.py +0 -0
  9. {quadra-2.6.2 → quadra-2.7.1}/quadra/callbacks/anomalib.py +0 -0
  10. {quadra-2.6.2 → quadra-2.7.1}/quadra/callbacks/lightning.py +0 -0
  11. {quadra-2.6.2 → quadra-2.7.1}/quadra/callbacks/mlflow.py +0 -0
  12. {quadra-2.6.2 → quadra-2.7.1}/quadra/callbacks/scheduler.py +0 -0
  13. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/__init__.py +0 -0
  14. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/caformer_m36.yaml +0 -0
  15. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/caformer_s36.yaml +0 -0
  16. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/convnextv2_base.yaml +0 -0
  17. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/convnextv2_femto.yaml +0 -0
  18. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/convnextv2_tiny.yaml +0 -0
  19. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/dino_vitb8.yaml +0 -0
  20. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/dino_vits8.yaml +0 -0
  21. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/dinov2_vitb14.yaml +0 -0
  22. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/dinov2_vits14.yaml +0 -0
  23. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/efficientnet_b0.yaml +0 -0
  24. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/efficientnet_b1.yaml +0 -0
  25. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/efficientnet_b2.yaml +0 -0
  26. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/efficientnet_b3.yaml +0 -0
  27. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/efficientnetv2_s.yaml +0 -0
  28. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/levit_128s.yaml +0 -0
  29. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/mnasnet0_5.yaml +0 -0
  30. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/resnet101.yaml +0 -0
  31. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/resnet18.yaml +0 -0
  32. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/resnet18_ssl.yaml +0 -0
  33. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/resnet50.yaml +0 -0
  34. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/smp.yaml +0 -0
  35. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/tiny_vit_21m_224.yaml +0 -0
  36. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/unetr.yaml +0 -0
  37. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/vit16_base.yaml +0 -0
  38. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/vit16_small.yaml +0 -0
  39. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/vit16_tiny.yaml +0 -0
  40. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/backbone/xcit_tiny_24_p8_224.yaml +0 -0
  41. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/callbacks/all.yaml +0 -0
  42. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/callbacks/default.yaml +0 -0
  43. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/callbacks/default_anomalib.yaml +0 -0
  44. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/config.yaml +0 -0
  45. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/core/default.yaml +0 -0
  46. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/anomaly.yaml +0 -0
  47. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/classification.yaml +0 -0
  48. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/multilabel_classification.yaml +0 -0
  49. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/segmentation.yaml +0 -0
  50. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/segmentation_multiclass.yaml +0 -0
  51. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/sklearn_classification.yaml +0 -0
  52. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/sklearn_classification_patch.yaml +0 -0
  53. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/base/ssl.yaml +0 -0
  54. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/generic/imagenette/classification/base.yaml +0 -0
  55. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/generic/imagenette/ssl/base.yaml +0 -0
  56. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/generic/mnist/anomaly/base.yaml +0 -0
  57. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/generic/mvtec/anomaly/base.yaml +0 -0
  58. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/datamodule/generic/oxford_pet/segmentation/base.yaml +0 -0
  59. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/cfa.yaml +0 -0
  60. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/cflow.yaml +0 -0
  61. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/csflow.yaml +0 -0
  62. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/draem.yaml +0 -0
  63. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/efficient_ad.yaml +0 -0
  64. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/fastflow.yaml +0 -0
  65. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/padim.yaml +0 -0
  66. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/anomaly/patchcore.yaml +0 -0
  67. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/classification.yaml +0 -0
  68. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/classification_evaluation.yaml +0 -0
  69. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/multilabel_classification.yaml +0 -0
  70. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/sklearn_classification.yaml +0 -0
  71. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/sklearn_classification_patch.yaml +0 -0
  72. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/sklearn_classification_patch_test.yaml +0 -0
  73. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/classification/sklearn_classification_test.yaml +0 -0
  74. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/segmentation/smp.yaml +0 -0
  75. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/segmentation/smp_evaluation.yaml +0 -0
  76. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/segmentation/smp_multiclass.yaml +0 -0
  77. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/segmentation/smp_multiclass_evaluation.yaml +0 -0
  78. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/ssl/barlow.yaml +0 -0
  79. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/ssl/byol.yaml +0 -0
  80. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/ssl/dino.yaml +0 -0
  81. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/ssl/linear_eval.yaml +0 -0
  82. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/ssl/simclr.yaml +0 -0
  83. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/base/ssl/simsiam.yaml +0 -0
  84. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/custom/cls.yaml +0 -0
  85. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/default.yaml +0 -0
  86. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/imagenette/classification/default.yaml +0 -0
  87. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/imagenette/ssl/barlow.yaml +0 -0
  88. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/imagenette/ssl/byol.yaml +0 -0
  89. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/imagenette/ssl/dino.yaml +0 -0
  90. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/imagenette/ssl/simclr.yaml +0 -0
  91. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/imagenette/ssl/simsiam.yaml +0 -0
  92. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/cfa.yaml +0 -0
  93. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/cflow.yaml +0 -0
  94. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/csflow.yaml +0 -0
  95. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/draem.yaml +0 -0
  96. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/fastflow.yaml +0 -0
  97. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/inference.yaml +0 -0
  98. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/padim.yaml +0 -0
  99. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mnist/anomaly/patchcore.yaml +0 -0
  100. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/cfa.yaml +0 -0
  101. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/cflow.yaml +0 -0
  102. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/csflow.yaml +0 -0
  103. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/draem.yaml +0 -0
  104. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/efficient_ad.yaml +0 -0
  105. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/fastflow.yaml +0 -0
  106. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/inference.yaml +0 -0
  107. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/padim.yaml +0 -0
  108. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/mvtec/anomaly/patchcore.yaml +0 -0
  109. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/experiment/generic/oxford_pet/segmentation/smp.yaml +0 -0
  110. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/export/default.yaml +0 -0
  111. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/hydra/anomaly_custom.yaml +0 -0
  112. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/hydra/default.yaml +0 -0
  113. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/inference/default.yaml +0 -0
  114. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/logger/comet.yaml +0 -0
  115. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/logger/csv.yaml +0 -0
  116. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/logger/mlflow.yaml +0 -0
  117. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/logger/tensorboard.yaml +0 -0
  118. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/asl.yaml +0 -0
  119. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/barlow.yaml +0 -0
  120. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/bce.yaml +0 -0
  121. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/byol.yaml +0 -0
  122. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/cross_entropy.yaml +0 -0
  123. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/dino.yaml +0 -0
  124. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/simclr.yaml +0 -0
  125. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/simsiam.yaml +0 -0
  126. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/smp_ce.yaml +0 -0
  127. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/smp_dice.yaml +0 -0
  128. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/smp_dice_multiclass.yaml +0 -0
  129. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/smp_mcc.yaml +0 -0
  130. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/loss/vicreg.yaml +0 -0
  131. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/cfa.yaml +0 -0
  132. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/cflow.yaml +0 -0
  133. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/csflow.yaml +0 -0
  134. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/dfm.yaml +0 -0
  135. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/draem.yaml +0 -0
  136. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/efficient_ad.yaml +0 -0
  137. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/fastflow.yaml +0 -0
  138. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/padim.yaml +0 -0
  139. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/anomalib/patchcore.yaml +0 -0
  140. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/barlow.yaml +0 -0
  141. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/byol.yaml +0 -0
  142. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/classification.yaml +0 -0
  143. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/dino.yaml +0 -0
  144. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/logistic_regression.yaml +0 -0
  145. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/multilabel_classification.yaml +0 -0
  146. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/simclr.yaml +0 -0
  147. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/simsiam.yaml +0 -0
  148. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/smp.yaml +0 -0
  149. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/smp_multiclass.yaml +0 -0
  150. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/model/vicreg.yaml +0 -0
  151. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/optimizer/adam.yaml +0 -0
  152. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/optimizer/adamw.yaml +0 -0
  153. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/optimizer/default.yaml +0 -0
  154. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/optimizer/lars.yaml +0 -0
  155. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/optimizer/sgd.yaml +0 -0
  156. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/scheduler/default.yaml +0 -0
  157. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/scheduler/rop.yaml +0 -0
  158. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/scheduler/step.yaml +0 -0
  159. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/scheduler/warmrestart.yaml +0 -0
  160. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/scheduler/warmup.yaml +0 -0
  161. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/cfa.yaml +0 -0
  162. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/cflow.yaml +0 -0
  163. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/csflow.yaml +0 -0
  164. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/draem.yaml +0 -0
  165. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/efficient_ad.yaml +0 -0
  166. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/fastflow.yaml +0 -0
  167. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/inference.yaml +0 -0
  168. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/padim.yaml +0 -0
  169. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/anomalib/patchcore.yaml +0 -0
  170. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/classification.yaml +0 -0
  171. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/classification_evaluation.yaml +0 -0
  172. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/default.yaml +0 -0
  173. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/segmentation.yaml +0 -0
  174. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/segmentation_evaluation.yaml +0 -0
  175. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/sklearn_classification.yaml +0 -0
  176. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/sklearn_classification_patch.yaml +0 -0
  177. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/sklearn_classification_patch_test.yaml +0 -0
  178. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/sklearn_classification_test.yaml +0 -0
  179. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/task/ssl.yaml +0 -0
  180. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/trainer/lightning_cpu.yaml +0 -0
  181. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/trainer/lightning_gpu.yaml +0 -0
  182. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/trainer/lightning_gpu_bf16.yaml +0 -0
  183. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/trainer/lightning_gpu_fp16.yaml +0 -0
  184. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/trainer/lightning_multigpu.yaml +0 -0
  185. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/trainer/sklearn_classification.yaml +0 -0
  186. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/byol.yaml +0 -0
  187. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/byol_no_random_resize.yaml +0 -0
  188. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/default.yaml +0 -0
  189. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/default_numpy.yaml +0 -0
  190. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/default_resize.yaml +0 -0
  191. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/dino.yaml +0 -0
  192. {quadra-2.6.2 → quadra-2.7.1}/quadra/configs/transforms/linear_eval.yaml +0 -0
  193. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/__init__.py +0 -0
  194. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/anomaly.py +0 -0
  195. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/base.py +0 -0
  196. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/classification.py +0 -0
  197. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/generic/__init__.py +0 -0
  198. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/generic/imagenette.py +0 -0
  199. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/generic/mnist.py +0 -0
  200. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/generic/mvtec.py +0 -0
  201. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/generic/oxford_pet.py +0 -0
  202. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/patch.py +0 -0
  203. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/segmentation.py +0 -0
  204. {quadra-2.6.2 → quadra-2.7.1}/quadra/datamodules/ssl.py +0 -0
  205. {quadra-2.6.2 → quadra-2.7.1}/quadra/datasets/__init__.py +0 -0
  206. {quadra-2.6.2 → quadra-2.7.1}/quadra/datasets/anomaly.py +0 -0
  207. {quadra-2.6.2 → quadra-2.7.1}/quadra/datasets/classification.py +0 -0
  208. {quadra-2.6.2 → quadra-2.7.1}/quadra/datasets/patch.py +0 -0
  209. {quadra-2.6.2 → quadra-2.7.1}/quadra/datasets/segmentation.py +0 -0
  210. {quadra-2.6.2 → quadra-2.7.1}/quadra/datasets/ssl.py +0 -0
  211. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/__init__.py +0 -0
  212. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/classification/__init__.py +0 -0
  213. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/classification/asl.py +0 -0
  214. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/classification/focal.py +0 -0
  215. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/classification/prototypical.py +0 -0
  216. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/__init__.py +0 -0
  217. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/barlowtwins.py +0 -0
  218. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/byol.py +0 -0
  219. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/dino.py +0 -0
  220. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/hyperspherical.py +0 -0
  221. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/idmm.py +0 -0
  222. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/simclr.py +0 -0
  223. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/simsiam.py +0 -0
  224. {quadra-2.6.2 → quadra-2.7.1}/quadra/losses/ssl/vicreg.py +0 -0
  225. {quadra-2.6.2 → quadra-2.7.1}/quadra/main.py +0 -0
  226. {quadra-2.6.2 → quadra-2.7.1}/quadra/metrics/__init__.py +0 -0
  227. {quadra-2.6.2 → quadra-2.7.1}/quadra/metrics/segmentation.py +0 -0
  228. {quadra-2.6.2 → quadra-2.7.1}/quadra/models/__init__.py +0 -0
  229. {quadra-2.6.2 → quadra-2.7.1}/quadra/models/base.py +0 -0
  230. {quadra-2.6.2 → quadra-2.7.1}/quadra/models/classification/__init__.py +0 -0
  231. {quadra-2.6.2 → quadra-2.7.1}/quadra/models/classification/backbones.py +0 -0
  232. {quadra-2.6.2 → quadra-2.7.1}/quadra/models/classification/base.py +0 -0
  233. {quadra-2.6.2 → quadra-2.7.1}/quadra/models/evaluation.py +0 -0
  234. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/__init__.py +0 -0
  235. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/backbone.py +0 -0
  236. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/base.py +0 -0
  237. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/classification/__init__.py +0 -0
  238. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/classification/base.py +0 -0
  239. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/__init__.py +0 -0
  240. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/barlowtwins.py +0 -0
  241. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/byol.py +0 -0
  242. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/common.py +0 -0
  243. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/dino.py +0 -0
  244. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/hyperspherical.py +0 -0
  245. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/idmm.py +0 -0
  246. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/simclr.py +0 -0
  247. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/simsiam.py +0 -0
  248. {quadra-2.6.2 → quadra-2.7.1}/quadra/modules/ssl/vicreg.py +0 -0
  249. {quadra-2.6.2 → quadra-2.7.1}/quadra/optimizers/__init__.py +0 -0
  250. {quadra-2.6.2 → quadra-2.7.1}/quadra/optimizers/lars.py +0 -0
  251. {quadra-2.6.2 → quadra-2.7.1}/quadra/optimizers/sam.py +0 -0
  252. {quadra-2.6.2 → quadra-2.7.1}/quadra/schedulers/__init__.py +0 -0
  253. {quadra-2.6.2 → quadra-2.7.1}/quadra/schedulers/base.py +0 -0
  254. {quadra-2.6.2 → quadra-2.7.1}/quadra/schedulers/warmup.py +0 -0
  255. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/__init__.py +0 -0
  256. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/base.py +0 -0
  257. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/classification.py +0 -0
  258. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/patch.py +0 -0
  259. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/segmentation.py +0 -0
  260. {quadra-2.6.2 → quadra-2.7.1}/quadra/tasks/ssl.py +0 -0
  261. {quadra-2.6.2 → quadra-2.7.1}/quadra/trainers/README.md +0 -0
  262. {quadra-2.6.2 → quadra-2.7.1}/quadra/trainers/__init__.py +0 -0
  263. {quadra-2.6.2 → quadra-2.7.1}/quadra/trainers/classification.py +0 -0
  264. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/__init__.py +0 -0
  265. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/anomaly.py +0 -0
  266. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/classification.py +0 -0
  267. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/deprecation.py +0 -0
  268. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/evaluation.py +0 -0
  269. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/export.py +0 -0
  270. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/imaging.py +0 -0
  271. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/logger.py +0 -0
  272. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/mlflow.py +0 -0
  273. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/model_manager.py +0 -0
  274. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/models.py +0 -0
  275. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/patch/__init__.py +0 -0
  276. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/patch/dataset.py +0 -0
  277. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/patch/metrics.py +0 -0
  278. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/patch/model.py +0 -0
  279. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/patch/visualization.py +0 -0
  280. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/resolver.py +0 -0
  281. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/segmentation.py +0 -0
  282. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/__init__.py +0 -0
  283. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/__init__.py +0 -0
  284. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/dataset/__init__.py +0 -0
  285. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/dataset/anomaly.py +0 -0
  286. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/dataset/classification.py +0 -0
  287. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/dataset/imagenette.py +0 -0
  288. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/dataset/segmentation.py +0 -0
  289. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/models/__init__.py +0 -0
  290. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/models/anomaly.py +0 -0
  291. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/models/classification.py +0 -0
  292. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/fixtures/models/segmentation.py +0 -0
  293. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/helpers.py +0 -0
  294. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/tests/models.py +0 -0
  295. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/utils.py +0 -0
  296. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/validator.py +0 -0
  297. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/visualization.py +0 -0
  298. {quadra-2.6.2 → quadra-2.7.1}/quadra/utils/vit_explainability.py +0 -0
  299. {quadra-2.6.2 → quadra-2.7.1}/quadra_hydra_plugin/hydra_plugins/quadra_searchpath_plugin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quadra
3
- Version: 2.6.2
3
+ Version: 2.7.1
4
4
  Summary: Deep Learning experiment orchestration library
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -47,8 +47,8 @@ Requires-Dist: rich (>=13.2,<13.3)
47
47
  Requires-Dist: scikit_learn (>=1.6,<1.7)
48
48
  Requires-Dist: scikit_multilearn (>=0.2,<0.3)
49
49
  Requires-Dist: seaborn (>=0.12,<0.13)
50
- Requires-Dist: segmentation_models_pytorch-orobix (==0.3.3.dev1)
51
- Requires-Dist: tensorboard (>=2.11,<2.12)
50
+ Requires-Dist: segmentation_models_pytorch (==0.5.0)
51
+ Requires-Dist: tensorboard (>=2.20,<2.21)
52
52
  Requires-Dist: timm (==0.9.12)
53
53
  Requires-Dist: torch (==2.8.0)
54
54
  Requires-Dist: torchinfo (>=1.8,<1.9)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "quadra"
3
- version = "2.6.2"
3
+ version = "2.7.1"
4
4
  description = "Deep Learning experiment orchestration library"
5
5
  authors = [
6
6
  "Federico Belotti <federico.belotti@orobix.com>",
@@ -53,7 +53,7 @@ hydra_optuna_sweeper = "~1.2"
53
53
  mlflow-skinny = "^2.3.1"
54
54
  boto3 = "~1.26"
55
55
  minio = "~7.1"
56
- tensorboard = "~2.11"
56
+ tensorboard = "~2.20"
57
57
  pillow = "^10"
58
58
  pandas = "<2.0"
59
59
  opencv_python_headless = "~4.7.0"
@@ -71,8 +71,8 @@ scikit_multilearn = "~0.2"
71
71
  tripy = "~1.0"
72
72
  h5py = "~3.8"
73
73
  timm = "0.9.12"
74
+ segmentation_models_pytorch = "0.5.0"
74
75
 
75
- segmentation_models_pytorch-orobix = "0.3.3.dev1"
76
76
  anomalib-orobix = "0.7.0.dev150"
77
77
  xxhash = "~3.2"
78
78
  torchinfo = "~1.8"
@@ -1,4 +1,4 @@
1
- __version__ = "2.6.2"
1
+ __version__ = "2.7.1"
2
2
 
3
3
 
4
4
  def get_version():
@@ -19,3 +19,4 @@ task:
19
19
  model_path: ???
20
20
  use_training_threshold: false
21
21
  training_threshold_type: image
22
+ custom_normalized_threshold: null # Optional: Custom normalized threshold (e.g., 110 for 10% above training threshold)
@@ -354,6 +354,9 @@ class AnomalibEvaluation(Evaluation[AnomalyDataModule]):
354
354
  use_training_threshold: Whether to use the training threshold for the evaluation or use the one that
355
355
  maximizes the F1 score on the test set.
356
356
  device: Device to use for evaluation. If None, the device is automatically determined.
357
+ custom_normalized_threshold: Custom normalized threshold to use for evaluation. If provided, this threshold
358
+ will be used instead of the training threshold or the optimal F1 threshold. The threshold should be
359
+ in the normalized scale (e.g., 100 means the training threshold, 110 means 10% higher than training).
357
360
  """
358
361
 
359
362
  def __init__(
@@ -363,6 +366,7 @@ class AnomalibEvaluation(Evaluation[AnomalyDataModule]):
363
366
  use_training_threshold: bool = False,
364
367
  device: str | None = None,
365
368
  training_threshold_type: Literal["image", "pixel"] | None = None,
369
+ custom_normalized_threshold: float | None = None,
366
370
  ):
367
371
  super().__init__(config=config, model_path=model_path, device=device)
368
372
 
@@ -375,7 +379,20 @@ class AnomalibEvaluation(Evaluation[AnomalyDataModule]):
375
379
  log.warning("Using training threshold but no training threshold type is provided, defaulting to image")
376
380
  training_threshold_type = "image"
377
381
 
382
+ # Default to image threshold type if custom threshold is provided but type is not specified
383
+ if training_threshold_type is None and custom_normalized_threshold is not None:
384
+ log.warning("Using custom threshold but no training threshold type is provided, defaulting to image")
385
+ training_threshold_type = "image"
386
+
378
387
  self.training_threshold_type = training_threshold_type
388
+ self.custom_normalized_threshold = custom_normalized_threshold
389
+
390
+ if self.use_training_threshold and self.custom_normalized_threshold is not None:
391
+ self.use_training_threshold = False
392
+ log.warning("Ignoring use_training_threshold since custom_normalized_threshold is provided")
393
+
394
+ if custom_normalized_threshold is not None and custom_normalized_threshold <= 0:
395
+ raise ValueError("Custom normalized threshold must be greater than 0")
379
396
 
380
397
  def prepare(self) -> None:
381
398
  """Prepare the evaluation."""
@@ -421,11 +438,18 @@ class AnomalibEvaluation(Evaluation[AnomalyDataModule]):
421
438
 
422
439
  anomaly_scores = torch.cat(anomaly_scores)
423
440
  anomaly_maps = torch.cat(anomaly_maps)
441
+ training_threshold = float(self.model_data[f"{self.training_threshold_type}_threshold"])
424
442
 
425
443
  if any(x != -1 for x in image_labels):
426
- if self.use_training_threshold:
444
+ threshold = None
445
+ if self.custom_normalized_threshold is not None:
446
+ # normalized = (raw / training) * 100, so raw = (normalized * training) / 100
447
+ threshold = torch.tensor((self.custom_normalized_threshold * training_threshold) / 100.0)
448
+ elif self.use_training_threshold:
449
+ threshold = torch.tensor(training_threshold)
450
+
451
+ if threshold is not None:
427
452
  _image_labels = torch.tensor(image_labels)
428
- threshold = torch.tensor(float(self.model_data[f"{self.training_threshold_type}_threshold"]))
429
453
  known_labels = torch.where(_image_labels != -1)[0]
430
454
 
431
455
  _image_labels = _image_labels[known_labels]
@@ -438,9 +462,12 @@ class AnomalibEvaluation(Evaluation[AnomalyDataModule]):
438
462
  optimal_f1_score = optimal_f1.compute()
439
463
  threshold = optimal_f1.threshold
440
464
  else:
441
- log.warning("No ground truth available during evaluation, use training image threshold for reporting")
442
465
  optimal_f1_score = torch.tensor(0)
443
- threshold = torch.tensor(float(self.model_data["image_threshold"]))
466
+ if self.custom_normalized_threshold is None:
467
+ log.warning("No ground truth available during evaluation, use training image threshold for reporting")
468
+ threshold = torch.tensor(training_threshold)
469
+ else:
470
+ threshold = torch.tensor((self.custom_normalized_threshold * training_threshold) / 100.0)
444
471
 
445
472
  log.info("Computed F1 score: %s", optimal_f1_score.item())
446
473
  self.metadata["anomaly_scores"] = anomaly_scores
File without changes
File without changes