quadra 0.0.1__py3-none-any.whl → 2.1.13__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 (302) hide show
  1. hydra_plugins/quadra_searchpath_plugin.py +30 -0
  2. quadra/__init__.py +6 -0
  3. quadra/callbacks/__init__.py +0 -0
  4. quadra/callbacks/anomalib.py +289 -0
  5. quadra/callbacks/lightning.py +501 -0
  6. quadra/callbacks/mlflow.py +291 -0
  7. quadra/callbacks/scheduler.py +69 -0
  8. quadra/configs/__init__.py +0 -0
  9. quadra/configs/backbone/caformer_m36.yaml +8 -0
  10. quadra/configs/backbone/caformer_s36.yaml +8 -0
  11. quadra/configs/backbone/convnextv2_base.yaml +8 -0
  12. quadra/configs/backbone/convnextv2_femto.yaml +8 -0
  13. quadra/configs/backbone/convnextv2_tiny.yaml +8 -0
  14. quadra/configs/backbone/dino_vitb8.yaml +12 -0
  15. quadra/configs/backbone/dino_vits8.yaml +12 -0
  16. quadra/configs/backbone/dinov2_vitb14.yaml +12 -0
  17. quadra/configs/backbone/dinov2_vits14.yaml +12 -0
  18. quadra/configs/backbone/efficientnet_b0.yaml +8 -0
  19. quadra/configs/backbone/efficientnet_b1.yaml +8 -0
  20. quadra/configs/backbone/efficientnet_b2.yaml +8 -0
  21. quadra/configs/backbone/efficientnet_b3.yaml +8 -0
  22. quadra/configs/backbone/efficientnetv2_s.yaml +8 -0
  23. quadra/configs/backbone/levit_128s.yaml +8 -0
  24. quadra/configs/backbone/mnasnet0_5.yaml +9 -0
  25. quadra/configs/backbone/resnet101.yaml +8 -0
  26. quadra/configs/backbone/resnet18.yaml +8 -0
  27. quadra/configs/backbone/resnet18_ssl.yaml +8 -0
  28. quadra/configs/backbone/resnet50.yaml +8 -0
  29. quadra/configs/backbone/smp.yaml +9 -0
  30. quadra/configs/backbone/tiny_vit_21m_224.yaml +9 -0
  31. quadra/configs/backbone/unetr.yaml +15 -0
  32. quadra/configs/backbone/vit16_base.yaml +9 -0
  33. quadra/configs/backbone/vit16_small.yaml +9 -0
  34. quadra/configs/backbone/vit16_tiny.yaml +9 -0
  35. quadra/configs/backbone/xcit_tiny_24_p8_224.yaml +9 -0
  36. quadra/configs/callbacks/all.yaml +32 -0
  37. quadra/configs/callbacks/default.yaml +37 -0
  38. quadra/configs/callbacks/default_anomalib.yaml +67 -0
  39. quadra/configs/config.yaml +33 -0
  40. quadra/configs/core/default.yaml +11 -0
  41. quadra/configs/datamodule/base/anomaly.yaml +16 -0
  42. quadra/configs/datamodule/base/classification.yaml +21 -0
  43. quadra/configs/datamodule/base/multilabel_classification.yaml +23 -0
  44. quadra/configs/datamodule/base/segmentation.yaml +18 -0
  45. quadra/configs/datamodule/base/segmentation_multiclass.yaml +20 -0
  46. quadra/configs/datamodule/base/sklearn_classification.yaml +23 -0
  47. quadra/configs/datamodule/base/sklearn_classification_patch.yaml +17 -0
  48. quadra/configs/datamodule/base/ssl.yaml +21 -0
  49. quadra/configs/datamodule/generic/imagenette/classification/base.yaml +9 -0
  50. quadra/configs/datamodule/generic/imagenette/ssl/base.yaml +10 -0
  51. quadra/configs/datamodule/generic/mnist/anomaly/base.yaml +14 -0
  52. quadra/configs/datamodule/generic/mvtec/anomaly/base.yaml +14 -0
  53. quadra/configs/datamodule/generic/oxford_pet/segmentation/base.yaml +9 -0
  54. quadra/configs/experiment/base/anomaly/cfa.yaml +47 -0
  55. quadra/configs/experiment/base/anomaly/cflow.yaml +47 -0
  56. quadra/configs/experiment/base/anomaly/csflow.yaml +48 -0
  57. quadra/configs/experiment/base/anomaly/draem.yaml +51 -0
  58. quadra/configs/experiment/base/anomaly/efficient_ad.yaml +43 -0
  59. quadra/configs/experiment/base/anomaly/fastflow.yaml +46 -0
  60. quadra/configs/experiment/base/anomaly/inference.yaml +21 -0
  61. quadra/configs/experiment/base/anomaly/padim.yaml +37 -0
  62. quadra/configs/experiment/base/anomaly/patchcore.yaml +37 -0
  63. quadra/configs/experiment/base/classification/classification.yaml +73 -0
  64. quadra/configs/experiment/base/classification/classification_evaluation.yaml +25 -0
  65. quadra/configs/experiment/base/classification/multilabel_classification.yaml +41 -0
  66. quadra/configs/experiment/base/classification/sklearn_classification.yaml +27 -0
  67. quadra/configs/experiment/base/classification/sklearn_classification_patch.yaml +25 -0
  68. quadra/configs/experiment/base/classification/sklearn_classification_patch_test.yaml +18 -0
  69. quadra/configs/experiment/base/classification/sklearn_classification_test.yaml +25 -0
  70. quadra/configs/experiment/base/segmentation/smp.yaml +30 -0
  71. quadra/configs/experiment/base/segmentation/smp_evaluation.yaml +17 -0
  72. quadra/configs/experiment/base/segmentation/smp_multiclass.yaml +26 -0
  73. quadra/configs/experiment/base/segmentation/smp_multiclass_evaluation.yaml +18 -0
  74. quadra/configs/experiment/base/ssl/barlow.yaml +48 -0
  75. quadra/configs/experiment/base/ssl/byol.yaml +43 -0
  76. quadra/configs/experiment/base/ssl/dino.yaml +46 -0
  77. quadra/configs/experiment/base/ssl/linear_eval.yaml +52 -0
  78. quadra/configs/experiment/base/ssl/simclr.yaml +48 -0
  79. quadra/configs/experiment/base/ssl/simsiam.yaml +53 -0
  80. quadra/configs/experiment/custom/cls.yaml +12 -0
  81. quadra/configs/experiment/default.yaml +15 -0
  82. quadra/configs/experiment/generic/imagenette/classification/default.yaml +20 -0
  83. quadra/configs/experiment/generic/imagenette/ssl/barlow.yaml +14 -0
  84. quadra/configs/experiment/generic/imagenette/ssl/byol.yaml +14 -0
  85. quadra/configs/experiment/generic/imagenette/ssl/dino.yaml +14 -0
  86. quadra/configs/experiment/generic/imagenette/ssl/simclr.yaml +14 -0
  87. quadra/configs/experiment/generic/imagenette/ssl/simsiam.yaml +14 -0
  88. quadra/configs/experiment/generic/mnist/anomaly/cfa.yaml +34 -0
  89. quadra/configs/experiment/generic/mnist/anomaly/cflow.yaml +33 -0
  90. quadra/configs/experiment/generic/mnist/anomaly/csflow.yaml +33 -0
  91. quadra/configs/experiment/generic/mnist/anomaly/draem.yaml +33 -0
  92. quadra/configs/experiment/generic/mnist/anomaly/fastflow.yaml +29 -0
  93. quadra/configs/experiment/generic/mnist/anomaly/inference.yaml +27 -0
  94. quadra/configs/experiment/generic/mnist/anomaly/padim.yaml +37 -0
  95. quadra/configs/experiment/generic/mnist/anomaly/patchcore.yaml +37 -0
  96. quadra/configs/experiment/generic/mvtec/anomaly/cfa.yaml +34 -0
  97. quadra/configs/experiment/generic/mvtec/anomaly/cflow.yaml +33 -0
  98. quadra/configs/experiment/generic/mvtec/anomaly/csflow.yaml +33 -0
  99. quadra/configs/experiment/generic/mvtec/anomaly/draem.yaml +33 -0
  100. quadra/configs/experiment/generic/mvtec/anomaly/efficient_ad.yaml +38 -0
  101. quadra/configs/experiment/generic/mvtec/anomaly/fastflow.yaml +29 -0
  102. quadra/configs/experiment/generic/mvtec/anomaly/inference.yaml +27 -0
  103. quadra/configs/experiment/generic/mvtec/anomaly/padim.yaml +37 -0
  104. quadra/configs/experiment/generic/mvtec/anomaly/patchcore.yaml +37 -0
  105. quadra/configs/experiment/generic/oxford_pet/segmentation/smp.yaml +27 -0
  106. quadra/configs/export/default.yaml +13 -0
  107. quadra/configs/hydra/anomaly_custom.yaml +15 -0
  108. quadra/configs/hydra/default.yaml +14 -0
  109. quadra/configs/inference/default.yaml +26 -0
  110. quadra/configs/logger/comet.yaml +10 -0
  111. quadra/configs/logger/csv.yaml +5 -0
  112. quadra/configs/logger/mlflow.yaml +12 -0
  113. quadra/configs/logger/tensorboard.yaml +8 -0
  114. quadra/configs/loss/asl.yaml +7 -0
  115. quadra/configs/loss/barlow.yaml +2 -0
  116. quadra/configs/loss/bce.yaml +1 -0
  117. quadra/configs/loss/byol.yaml +1 -0
  118. quadra/configs/loss/cross_entropy.yaml +1 -0
  119. quadra/configs/loss/dino.yaml +8 -0
  120. quadra/configs/loss/simclr.yaml +2 -0
  121. quadra/configs/loss/simsiam.yaml +1 -0
  122. quadra/configs/loss/smp_ce.yaml +3 -0
  123. quadra/configs/loss/smp_dice.yaml +2 -0
  124. quadra/configs/loss/smp_dice_multiclass.yaml +2 -0
  125. quadra/configs/loss/smp_mcc.yaml +2 -0
  126. quadra/configs/loss/vicreg.yaml +5 -0
  127. quadra/configs/model/anomalib/cfa.yaml +35 -0
  128. quadra/configs/model/anomalib/cflow.yaml +30 -0
  129. quadra/configs/model/anomalib/csflow.yaml +34 -0
  130. quadra/configs/model/anomalib/dfm.yaml +19 -0
  131. quadra/configs/model/anomalib/draem.yaml +29 -0
  132. quadra/configs/model/anomalib/efficient_ad.yaml +31 -0
  133. quadra/configs/model/anomalib/fastflow.yaml +32 -0
  134. quadra/configs/model/anomalib/padim.yaml +32 -0
  135. quadra/configs/model/anomalib/patchcore.yaml +36 -0
  136. quadra/configs/model/barlow.yaml +16 -0
  137. quadra/configs/model/byol.yaml +25 -0
  138. quadra/configs/model/classification.yaml +10 -0
  139. quadra/configs/model/dino.yaml +26 -0
  140. quadra/configs/model/logistic_regression.yaml +4 -0
  141. quadra/configs/model/multilabel_classification.yaml +9 -0
  142. quadra/configs/model/simclr.yaml +18 -0
  143. quadra/configs/model/simsiam.yaml +24 -0
  144. quadra/configs/model/smp.yaml +4 -0
  145. quadra/configs/model/smp_multiclass.yaml +4 -0
  146. quadra/configs/model/vicreg.yaml +16 -0
  147. quadra/configs/optimizer/adam.yaml +5 -0
  148. quadra/configs/optimizer/adamw.yaml +3 -0
  149. quadra/configs/optimizer/default.yaml +4 -0
  150. quadra/configs/optimizer/lars.yaml +8 -0
  151. quadra/configs/optimizer/sgd.yaml +4 -0
  152. quadra/configs/scheduler/default.yaml +5 -0
  153. quadra/configs/scheduler/rop.yaml +5 -0
  154. quadra/configs/scheduler/step.yaml +3 -0
  155. quadra/configs/scheduler/warmrestart.yaml +2 -0
  156. quadra/configs/scheduler/warmup.yaml +6 -0
  157. quadra/configs/task/anomalib/cfa.yaml +5 -0
  158. quadra/configs/task/anomalib/cflow.yaml +5 -0
  159. quadra/configs/task/anomalib/csflow.yaml +5 -0
  160. quadra/configs/task/anomalib/draem.yaml +5 -0
  161. quadra/configs/task/anomalib/efficient_ad.yaml +5 -0
  162. quadra/configs/task/anomalib/fastflow.yaml +5 -0
  163. quadra/configs/task/anomalib/inference.yaml +3 -0
  164. quadra/configs/task/anomalib/padim.yaml +5 -0
  165. quadra/configs/task/anomalib/patchcore.yaml +5 -0
  166. quadra/configs/task/classification.yaml +6 -0
  167. quadra/configs/task/classification_evaluation.yaml +6 -0
  168. quadra/configs/task/default.yaml +1 -0
  169. quadra/configs/task/segmentation.yaml +9 -0
  170. quadra/configs/task/segmentation_evaluation.yaml +3 -0
  171. quadra/configs/task/sklearn_classification.yaml +13 -0
  172. quadra/configs/task/sklearn_classification_patch.yaml +11 -0
  173. quadra/configs/task/sklearn_classification_patch_test.yaml +8 -0
  174. quadra/configs/task/sklearn_classification_test.yaml +8 -0
  175. quadra/configs/task/ssl.yaml +2 -0
  176. quadra/configs/trainer/lightning_cpu.yaml +36 -0
  177. quadra/configs/trainer/lightning_gpu.yaml +35 -0
  178. quadra/configs/trainer/lightning_gpu_bf16.yaml +36 -0
  179. quadra/configs/trainer/lightning_gpu_fp16.yaml +36 -0
  180. quadra/configs/trainer/lightning_multigpu.yaml +37 -0
  181. quadra/configs/trainer/sklearn_classification.yaml +7 -0
  182. quadra/configs/transforms/byol.yaml +47 -0
  183. quadra/configs/transforms/byol_no_random_resize.yaml +61 -0
  184. quadra/configs/transforms/default.yaml +37 -0
  185. quadra/configs/transforms/default_numpy.yaml +24 -0
  186. quadra/configs/transforms/default_resize.yaml +22 -0
  187. quadra/configs/transforms/dino.yaml +63 -0
  188. quadra/configs/transforms/linear_eval.yaml +18 -0
  189. quadra/datamodules/__init__.py +20 -0
  190. quadra/datamodules/anomaly.py +180 -0
  191. quadra/datamodules/base.py +375 -0
  192. quadra/datamodules/classification.py +1003 -0
  193. quadra/datamodules/generic/__init__.py +0 -0
  194. quadra/datamodules/generic/imagenette.py +144 -0
  195. quadra/datamodules/generic/mnist.py +81 -0
  196. quadra/datamodules/generic/mvtec.py +58 -0
  197. quadra/datamodules/generic/oxford_pet.py +163 -0
  198. quadra/datamodules/patch.py +190 -0
  199. quadra/datamodules/segmentation.py +742 -0
  200. quadra/datamodules/ssl.py +140 -0
  201. quadra/datasets/__init__.py +17 -0
  202. quadra/datasets/anomaly.py +287 -0
  203. quadra/datasets/classification.py +241 -0
  204. quadra/datasets/patch.py +138 -0
  205. quadra/datasets/segmentation.py +239 -0
  206. quadra/datasets/ssl.py +110 -0
  207. quadra/losses/__init__.py +0 -0
  208. quadra/losses/classification/__init__.py +6 -0
  209. quadra/losses/classification/asl.py +83 -0
  210. quadra/losses/classification/focal.py +320 -0
  211. quadra/losses/classification/prototypical.py +148 -0
  212. quadra/losses/ssl/__init__.py +17 -0
  213. quadra/losses/ssl/barlowtwins.py +47 -0
  214. quadra/losses/ssl/byol.py +37 -0
  215. quadra/losses/ssl/dino.py +129 -0
  216. quadra/losses/ssl/hyperspherical.py +45 -0
  217. quadra/losses/ssl/idmm.py +50 -0
  218. quadra/losses/ssl/simclr.py +67 -0
  219. quadra/losses/ssl/simsiam.py +30 -0
  220. quadra/losses/ssl/vicreg.py +76 -0
  221. quadra/main.py +46 -0
  222. quadra/metrics/__init__.py +3 -0
  223. quadra/metrics/segmentation.py +251 -0
  224. quadra/models/__init__.py +0 -0
  225. quadra/models/base.py +151 -0
  226. quadra/models/classification/__init__.py +8 -0
  227. quadra/models/classification/backbones.py +149 -0
  228. quadra/models/classification/base.py +92 -0
  229. quadra/models/evaluation.py +322 -0
  230. quadra/modules/__init__.py +0 -0
  231. quadra/modules/backbone.py +30 -0
  232. quadra/modules/base.py +312 -0
  233. quadra/modules/classification/__init__.py +3 -0
  234. quadra/modules/classification/base.py +331 -0
  235. quadra/modules/ssl/__init__.py +17 -0
  236. quadra/modules/ssl/barlowtwins.py +59 -0
  237. quadra/modules/ssl/byol.py +172 -0
  238. quadra/modules/ssl/common.py +285 -0
  239. quadra/modules/ssl/dino.py +186 -0
  240. quadra/modules/ssl/hyperspherical.py +206 -0
  241. quadra/modules/ssl/idmm.py +98 -0
  242. quadra/modules/ssl/simclr.py +73 -0
  243. quadra/modules/ssl/simsiam.py +68 -0
  244. quadra/modules/ssl/vicreg.py +67 -0
  245. quadra/optimizers/__init__.py +4 -0
  246. quadra/optimizers/lars.py +153 -0
  247. quadra/optimizers/sam.py +127 -0
  248. quadra/schedulers/__init__.py +3 -0
  249. quadra/schedulers/base.py +44 -0
  250. quadra/schedulers/warmup.py +127 -0
  251. quadra/tasks/__init__.py +24 -0
  252. quadra/tasks/anomaly.py +582 -0
  253. quadra/tasks/base.py +397 -0
  254. quadra/tasks/classification.py +1264 -0
  255. quadra/tasks/patch.py +492 -0
  256. quadra/tasks/segmentation.py +389 -0
  257. quadra/tasks/ssl.py +560 -0
  258. quadra/trainers/README.md +3 -0
  259. quadra/trainers/__init__.py +0 -0
  260. quadra/trainers/classification.py +179 -0
  261. quadra/utils/__init__.py +0 -0
  262. quadra/utils/anomaly.py +112 -0
  263. quadra/utils/classification.py +618 -0
  264. quadra/utils/deprecation.py +31 -0
  265. quadra/utils/evaluation.py +474 -0
  266. quadra/utils/export.py +579 -0
  267. quadra/utils/imaging.py +32 -0
  268. quadra/utils/logger.py +15 -0
  269. quadra/utils/mlflow.py +98 -0
  270. quadra/utils/model_manager.py +320 -0
  271. quadra/utils/models.py +524 -0
  272. quadra/utils/patch/__init__.py +15 -0
  273. quadra/utils/patch/dataset.py +1433 -0
  274. quadra/utils/patch/metrics.py +449 -0
  275. quadra/utils/patch/model.py +153 -0
  276. quadra/utils/patch/visualization.py +217 -0
  277. quadra/utils/resolver.py +42 -0
  278. quadra/utils/segmentation.py +31 -0
  279. quadra/utils/tests/__init__.py +0 -0
  280. quadra/utils/tests/fixtures/__init__.py +1 -0
  281. quadra/utils/tests/fixtures/dataset/__init__.py +39 -0
  282. quadra/utils/tests/fixtures/dataset/anomaly.py +124 -0
  283. quadra/utils/tests/fixtures/dataset/classification.py +406 -0
  284. quadra/utils/tests/fixtures/dataset/imagenette.py +53 -0
  285. quadra/utils/tests/fixtures/dataset/segmentation.py +161 -0
  286. quadra/utils/tests/fixtures/models/__init__.py +3 -0
  287. quadra/utils/tests/fixtures/models/anomaly.py +89 -0
  288. quadra/utils/tests/fixtures/models/classification.py +45 -0
  289. quadra/utils/tests/fixtures/models/segmentation.py +33 -0
  290. quadra/utils/tests/helpers.py +70 -0
  291. quadra/utils/tests/models.py +27 -0
  292. quadra/utils/utils.py +525 -0
  293. quadra/utils/validator.py +115 -0
  294. quadra/utils/visualization.py +422 -0
  295. quadra/utils/vit_explainability.py +349 -0
  296. quadra-2.1.13.dist-info/LICENSE +201 -0
  297. quadra-2.1.13.dist-info/METADATA +386 -0
  298. quadra-2.1.13.dist-info/RECORD +300 -0
  299. {quadra-0.0.1.dist-info → quadra-2.1.13.dist-info}/WHEEL +1 -1
  300. quadra-2.1.13.dist-info/entry_points.txt +3 -0
  301. quadra-0.0.1.dist-info/METADATA +0 -14
  302. quadra-0.0.1.dist-info/RECORD +0 -4
@@ -0,0 +1,32 @@
1
+ model_checkpoint:
2
+ _target_: pytorch_lightning.callbacks.ModelCheckpoint
3
+ monitor: "val_loss" # name of the logged metric which determines when model is improving
4
+ mode: "min" # can be "max" or "min"
5
+ save_top_k: 1 # save k best models (determined by above metric)
6
+ save_last: True # additionaly always save model from last epoch
7
+ verbose: False
8
+ dirpath: "checkpoints/"
9
+ filename: "epoch_{epoch:03d}"
10
+ auto_insert_metric_name: False
11
+
12
+ upload_code_as_artifact:
13
+ _target_: quadra.callbacks.mlflow.UploadCodeAsArtifact
14
+ source_dir: ${work_dir}/quadra/
15
+
16
+ upload_ckpts_as_artifact:
17
+ _target_: quadra.callbacks.mlflow.UploadCheckpointsAsArtifact
18
+ ckpt_dir: "checkpoints/"
19
+ upload_best_only: true
20
+ delete_after_upload: false
21
+ upload: true
22
+ log_gradients:
23
+ _target_: quadra.callbacks.mlflow.LogGradients
24
+ norm: 2
25
+ lr_monitor:
26
+ _target_: pytorch_lightning.callbacks.LearningRateMonitor
27
+ logging_interval: "epoch"
28
+ progress_bar:
29
+ _target_: pytorch_lightning.callbacks.progress.TQDMProgressBar
30
+ lightning_trainer_setup:
31
+ _target_: quadra.callbacks.lightning.LightningTrainerBaseSetup
32
+ log_every_n_steps: 1
@@ -0,0 +1,37 @@
1
+ model_checkpoint:
2
+ _target_: pytorch_lightning.callbacks.ModelCheckpoint
3
+ monitor: "val_loss" # name of the logged metric which determines when model is improving
4
+ mode: "min" # can be "max" or "min"
5
+ save_top_k: 1 # save k best models (determined by above metric)
6
+ save_last: True # additionaly always save model from last epoch
7
+ verbose: False
8
+ dirpath: "checkpoints/"
9
+ filename: "epoch_{epoch:03d}"
10
+ auto_insert_metric_name: False
11
+
12
+ log_gradients:
13
+ _target_: quadra.callbacks.mlflow.LogGradients
14
+ norm: 2
15
+ lr_monitor:
16
+ _target_: pytorch_lightning.callbacks.LearningRateMonitor
17
+ logging_interval: "epoch"
18
+ progress_bar:
19
+ _target_: pytorch_lightning.callbacks.progress.TQDMProgressBar
20
+ lightning_trainer_setup:
21
+ _target_: quadra.callbacks.lightning.LightningTrainerBaseSetup
22
+ log_every_n_steps: 1
23
+
24
+ batch_size_finder:
25
+ _target_: quadra.callbacks.lightning.BatchSizeFinder
26
+ mode: power
27
+ steps_per_trial: 3
28
+ init_val: 2
29
+ max_trials: 5 # Max 64
30
+ batch_arg_name: batch_size
31
+ disable: true
32
+ find_train_batch_size: true
33
+ find_validation_batch_size: false
34
+ find_test_batch_size: false
35
+ find_predict_batch_size: false
36
+ #gpu_stats: TODO: This is not working with the current PL version
37
+ # _target_: nvitop.callbacks.lightning.GpuStatsLogger
@@ -0,0 +1,67 @@
1
+ # Anomalib specific callbacks
2
+ score_normalization:
3
+ _target_: quadra.utils.anomaly.ThresholdNormalizationCallback
4
+ threshold_type: image
5
+ post_processing_configuration:
6
+ _target_: anomalib.utils.callbacks.post_processing_configuration.PostProcessingConfigurationCallback
7
+ threshold_method: ${model.metrics.threshold.method}
8
+ manual_image_threshold: ${model.metrics.threshold.manual_image}
9
+ manual_pixel_threshold: ${model.metrics.threshold.manual_pixel}
10
+ metrics:
11
+ _target_: anomalib.utils.callbacks.metrics_configuration.MetricsConfigurationCallback
12
+ task: ${model.dataset.task}
13
+ image_metrics: ${model.metrics.image}
14
+ pixel_metrics: ${model.metrics.pixel}
15
+ visualizer:
16
+ _target_: quadra.callbacks.anomalib.VisualizerCallback
17
+ inputs_are_normalized: true
18
+ output_path: anomaly_output
19
+ threshold_type: ${callbacks.score_normalization.threshold_type}
20
+ disable: true
21
+ plot_only_wrong: false
22
+ plot_raw_outputs: false
23
+ # Standard callbacks
24
+ early_stopping:
25
+ _target_: pytorch_lightning.callbacks.EarlyStopping
26
+ monitor: validation_image_F1
27
+ mode: max
28
+ patience: 5
29
+ verbose: false
30
+ stopping_threshold: 1
31
+ model_checkpoint:
32
+ _target_: pytorch_lightning.callbacks.ModelCheckpoint
33
+ monitor: validation_image_F1 # name of the logged metric which determines when model is improving
34
+ mode: "max"
35
+ verbose: false
36
+ dirpath: "checkpoints/"
37
+ filename: "final_model"
38
+ auto_insert_metric_name: false
39
+ save_last: true
40
+ save_on_train_epoch_end: false
41
+ upload_ckpts_as_artifact:
42
+ _target_: quadra.callbacks.mlflow.UploadCheckpointsAsArtifact
43
+ ckpt_dir: "checkpoints/"
44
+ upload_best_only: true
45
+ delete_after_upload: true
46
+ upload: false
47
+ log_gradients:
48
+ _target_: quadra.callbacks.mlflow.LogGradients
49
+ norm: 2
50
+ lr_monitor:
51
+ _target_: pytorch_lightning.callbacks.LearningRateMonitor
52
+ logging_interval: "epoch"
53
+ progress_bar:
54
+ _target_: pytorch_lightning.callbacks.progress.TQDMProgressBar
55
+ lightning_trainer_setup:
56
+ _target_: quadra.callbacks.lightning.LightningTrainerBaseSetup
57
+ log_every_n_steps: 1
58
+ batch_size_finder:
59
+ _target_: quadra.callbacks.lightning.BatchSizeFinder
60
+ mode: power
61
+ steps_per_trial: 3
62
+ init_val: 2
63
+ max_trials: 5 # Max 64
64
+ batch_arg_name: train_batch_size
65
+ disable: true
66
+ #gpu_stats: TODO: This is not working with the current PL version
67
+ # _target_: nvitop.callbacks.lightning.GpuStatsLogger
@@ -0,0 +1,33 @@
1
+ # @package _global_
2
+
3
+ # specify here default training configuration
4
+ defaults:
5
+ - _self_
6
+ - core: default
7
+ - loss: null
8
+ - optimizer: null
9
+ - scheduler: null
10
+ - task: default
11
+ - transforms: default
12
+ - trainer: lightning_gpu
13
+ - backbone: null
14
+ - model: null
15
+ - datamodule: null
16
+ - callbacks: default
17
+ - logger: mlflow
18
+ - export: default
19
+ - inference: default
20
+ - hparams_search: null
21
+ - hydra: default
22
+ # BE CAREFUL TO KEEP EXPERIMENT LAST
23
+ - experiment: null
24
+
25
+ # enable color logging
26
+ - override hydra/hydra_logging: colorlog
27
+ - override hydra/job_logging: colorlog
28
+
29
+ work_dir: ${hydra:runtime.cwd}
30
+ debug: False
31
+ print_config: true
32
+ ignore_warnings: true
33
+ validate: true
@@ -0,0 +1,11 @@
1
+ version:
2
+ _target_: quadra.get_version
3
+ seed: 42
4
+ tag: null
5
+ name: null
6
+ cv2_num_threads: 1
7
+ command: "python "
8
+ experiment_path: null
9
+ upload_artifacts: False
10
+ upload_models: ${export.types} # Default behavior in quadra <= 1.5.6
11
+ log_level: info
@@ -0,0 +1,16 @@
1
+ _target_: quadra.datamodules.AnomalyDataModule
2
+ data_path: ???
3
+ category:
4
+ num_workers: 8
5
+ train_batch_size: 32
6
+ test_batch_size: 32
7
+ seed: ${core.seed}
8
+ train_transform: ${transforms.train_transform}
9
+ test_transform: ${transforms.test_transform}
10
+ val_transform: ${transforms.val_transform}
11
+ phase: train
12
+ valid_area_mask:
13
+ crop_area:
14
+ enable_hashing: true
15
+ hash_size: 64
16
+ hash_type: content
@@ -0,0 +1,21 @@
1
+ _target_: quadra.datamodules.classification.ClassificationDataModule
2
+ data_path: ???
3
+ exclude_filter: [".ipynb_checkpoints"]
4
+ seed: ${core.seed}
5
+ num_workers: 8
6
+ batch_size: 16
7
+ val_size: 0.2
8
+ train_transform: ${transforms.train_transform}
9
+ test_transform: ${transforms.test_transform}
10
+ val_transform: ${transforms.val_transform}
11
+ train_split_file:
12
+ test_split_file:
13
+ label_map:
14
+ class_to_idx:
15
+ name:
16
+ dataset:
17
+ _target_: hydra.utils.get_method
18
+ path: quadra.datasets.classification.ClassificationDataset
19
+ enable_hashing: true
20
+ hash_size: 64
21
+ hash_type: content
@@ -0,0 +1,23 @@
1
+ _target_: quadra.datamodules.MultilabelClassificationDataModule
2
+ data_path: ???
3
+ images_and_labels_file: null
4
+ train_split_file: null
5
+ test_split_file: null
6
+ val_split_file: null
7
+ dataset:
8
+ _target_: hydra.utils.get_method
9
+ path: quadra.datasets.classification.MultilabelClassificationDataset
10
+ num_classes: null
11
+ num_workers: 8
12
+ batch_size: 64
13
+ test_batch_size: 64
14
+ seed: ${core.seed}
15
+ val_size: 0.2
16
+ test_size: 0.2
17
+ train_transform: ${transforms.train_transform}
18
+ test_transform: ${transforms.test_transform}
19
+ val_transform: ${transforms.val_transform}
20
+ class_to_idx: null
21
+ enable_hashing: true
22
+ hash_size: 64
23
+ hash_type: content
@@ -0,0 +1,18 @@
1
+ _target_: quadra.datamodules.SegmentationDataModule
2
+ data_path: ???
3
+ test_size: 0.3
4
+ val_size: 0.3
5
+ seed: ${core.seed}
6
+ batch_size: 32
7
+ num_workers: 6
8
+ train_transform: ${transforms.train_transform}
9
+ test_transform: ${transforms.test_transform}
10
+ val_transform: ${transforms.val_transform}
11
+ train_split_file:
12
+ test_split_file:
13
+ val_split_file:
14
+ num_data_class:
15
+ exclude_good: false
16
+ enable_hashing: true
17
+ hash_size: 64
18
+ hash_type: content
@@ -0,0 +1,20 @@
1
+ _target_: quadra.datamodules.SegmentationMulticlassDataModule
2
+ data_path: ???
3
+ idx_to_class:
4
+ test_size: 0.3
5
+ val_size: 0.3
6
+ seed: 42
7
+ batch_size: 32
8
+ num_workers: 6
9
+ train_transform: ${transforms.train_transform}
10
+ test_transform: ${transforms.test_transform}
11
+ val_transform: ${transforms.val_transform}
12
+ train_split_file:
13
+ test_split_file:
14
+ val_split_file:
15
+ exclude_good: false
16
+ num_data_train:
17
+ one_hot_encoding:
18
+ enable_hashing: true
19
+ hash_size: 64
20
+ hash_type: content
@@ -0,0 +1,23 @@
1
+ _target_: quadra.datamodules.SklearnClassificationDataModule
2
+ data_path: ???
3
+ exclude_filter:
4
+ include_filter:
5
+ val_size: 0.3
6
+ class_to_idx:
7
+ label_map:
8
+ seed: ${core.seed}
9
+ batch_size: 32
10
+ num_workers: 8
11
+ train_transform: ${transforms.train_transform}
12
+ val_transform: ${transforms.val_transform}
13
+ test_transform: ${transforms.test_transform}
14
+ roi:
15
+ n_splits: 1
16
+ phase:
17
+ cache: false
18
+ limit_training_data:
19
+ train_split_file:
20
+ test_split_file:
21
+ enable_hashing: true
22
+ hash_size: 64
23
+ hash_type: content
@@ -0,0 +1,17 @@
1
+ _target_: quadra.datamodules.PatchSklearnClassificationDataModule
2
+ data_path: ???
3
+ train_filename: dataset.txt
4
+ exclude_filter:
5
+ include_filter:
6
+ class_to_idx:
7
+ seed: 42
8
+ batch_size: 32
9
+ num_workers: 8
10
+ train_transform: ${transforms.train_transform}
11
+ test_transform: ${transforms.test_transform}
12
+ val_transform: ${transforms.val_transform}
13
+ balance_classes: false
14
+ class_to_skip_training:
15
+ enable_hashing: true
16
+ hash_size: 64
17
+ hash_type: content
@@ -0,0 +1,21 @@
1
+ _target_: quadra.datamodules.SSLDataModule
2
+ data_path: ???
3
+ exclude_filter:
4
+ include_filter:
5
+ seed: ${core.seed}
6
+ num_workers: 8
7
+ batch_size: 16
8
+ augmentation_dataset: null
9
+ train_transform: null
10
+ test_transform: ${transforms.test_transform}
11
+ val_transform: ${transforms.val_transform}
12
+ train_split_file:
13
+ val_split_file:
14
+ test_split_file:
15
+ val_size: 0.3
16
+ test_size: 0.1
17
+ split_validation: true
18
+ class_to_idx:
19
+ enable_hashing: true
20
+ hash_size: 64
21
+ hash_type: content
@@ -0,0 +1,9 @@
1
+ _target_: quadra.datamodules.generic.imagenette.ImagenetteClassificationDataModule
2
+ data_path: ${oc.env:HOME}/.quadra/datasets/imagenette
3
+ imagenette_version: "320"
4
+ num_workers: 8
5
+ batch_size: 32
6
+ seed: ${core.seed}
7
+ train_transform: ${transforms.train_transform}
8
+ test_transform: ${transforms.test_transform}
9
+ val_transform: ${transforms.val_transform}
@@ -0,0 +1,10 @@
1
+ _target_: quadra.datamodules.generic.imagenette.ImagenetteSSLDataModule
2
+ data_path: ${oc.env:HOME}/.quadra/datasets/imagenette
3
+ imagenette_version: "320"
4
+ num_workers: 8
5
+ batch_size: 32
6
+ seed: ${core.seed}
7
+ augmentation_dataset: null
8
+ train_transform: null
9
+ test_transform: ${transforms.test_transform}
10
+ val_transform: ${transforms.val_transform}
@@ -0,0 +1,14 @@
1
+ _target_: quadra.datamodules.generic.mnist.MNISTAnomalyDataModule
2
+ data_path: ${oc.env:HOME}/.quadra/datasets/MNIST
3
+ good_number: 9
4
+ num_workers: 8
5
+ limit_data: 100
6
+ train_batch_size: 32
7
+ test_batch_size: 32
8
+ seed: ${core.seed}
9
+ train_transform: ${transforms.train_transform}
10
+ test_transform: ${transforms.test_transform}
11
+ val_transform: ${transforms.val_transform}
12
+ phase: train
13
+ valid_area_mask:
14
+ crop_area:
@@ -0,0 +1,14 @@
1
+ _target_: quadra.datamodules.generic.mvtec.MVTecDataModule
2
+ data_path: ${oc.env:HOME}/.quadra/datasets/mvtec-dataset
3
+ category: bottle
4
+ num_workers: 8
5
+ train_batch_size: 32
6
+ test_batch_size: 32
7
+ seed: ${core.seed}
8
+ train_transform: ${transforms.train_transform}
9
+ test_transform: ${transforms.test_transform}
10
+ val_transform: ${transforms.val_transform}
11
+ phase: train
12
+ mask_suffix: _mask
13
+ valid_area_mask:
14
+ crop_area:
@@ -0,0 +1,9 @@
1
+ _target_: quadra.datamodules.generic.oxford_pet.OxfordPetSegmentationDataModule
2
+ idx_to_class:
3
+ 1: cat_or_dog
4
+ data_path: ${oc.env:HOME}/.quadra/datasets/oxford-pet
5
+ test_size: 0.2
6
+ val_size: 0.2
7
+ train_transform: ${transforms.train_transform}
8
+ test_transform: ${transforms.test_transform}
9
+ val_transform: ${transforms.val_transform}
@@ -0,0 +1,47 @@
1
+ # @package _global_
2
+
3
+ defaults:
4
+ - override /datamodule: base/anomaly
5
+ - override /model: anomalib/cfa
6
+ - override /optimizer: null
7
+ - override /scheduler: null
8
+ - override /transforms: default_resize
9
+ - override /loss: null
10
+ - override /task: anomalib/cfa
11
+ - override /backbone: null
12
+ - override /trainer: lightning_gpu
13
+ - override /callbacks: default_anomalib
14
+ - _self_
15
+
16
+ transforms:
17
+ input_height: 224
18
+ input_width: 224
19
+
20
+ datamodule:
21
+ num_workers: 12
22
+ train_batch_size: 32
23
+ test_batch_size: 32
24
+ task: ${model.dataset.task}
25
+ phase: train
26
+
27
+ callbacks:
28
+ early_stopping:
29
+ patience: 5
30
+ monitor: validation_image_AUROC
31
+ mode: max
32
+
33
+ core:
34
+ tag: "run"
35
+ name: cfa_${model.model.backbone}_${trainer.max_epochs}
36
+ test_after_training: true
37
+
38
+ logger:
39
+ mlflow:
40
+ experiment_name:
41
+ run_name: ${core.name}
42
+
43
+ # PL Trainer Args. Don't add extra parameter here.
44
+ trainer:
45
+ devices: [0]
46
+ check_val_every_n_epoch: 1 # Don't validate before extracting features.
47
+ val_check_interval: 1.0 # Don't validate before extracting features.
@@ -0,0 +1,47 @@
1
+ # @package _global_
2
+
3
+ defaults:
4
+ - override /datamodule: base/anomaly
5
+ - override /model: anomalib/cflow
6
+ - override /optimizer: null
7
+ - override /scheduler: null
8
+ - override /transforms: default_resize
9
+ - override /loss: null
10
+ - override /task: anomalib/cflow
11
+ - override /backbone: null
12
+ - override /trainer: lightning_gpu
13
+ - override /callbacks: default_anomalib
14
+ - _self_
15
+
16
+ transforms:
17
+ input_height: 256
18
+ input_width: 256
19
+
20
+ datamodule:
21
+ num_workers: 12
22
+ train_batch_size: 32
23
+ test_batch_size: 32
24
+ task: ${model.dataset.task}
25
+ phase: train
26
+
27
+ callbacks:
28
+ early_stopping:
29
+ patience: 2
30
+ monitor: validation_image_F1
31
+
32
+ core:
33
+ tag: "run"
34
+ name: cflow_${model.model.backbone}_${trainer.max_epochs}
35
+ test_after_training: true
36
+
37
+ logger:
38
+ mlflow:
39
+ experiment_name:
40
+ run_name: ${core.name}
41
+
42
+ # PL Trainer Args. Don't add extra parameter here.
43
+ trainer:
44
+ devices: [0]
45
+ check_val_every_n_epoch: 1 # Don't validate before extracting features.
46
+ val_check_interval: 1.0 # Don't validate before extracting features.
47
+ max_epochs: 50
@@ -0,0 +1,48 @@
1
+ # @package _global_
2
+
3
+ defaults:
4
+ - override /datamodule: base/anomaly
5
+ - override /model: anomalib/csflow
6
+ - override /optimizer: null
7
+ - override /scheduler: null
8
+ - override /transforms: default_resize
9
+ - override /loss: null
10
+ - override /task: anomalib/csflow
11
+ - override /backbone: null
12
+ - override /trainer: lightning_gpu
13
+ - override /callbacks: default_anomalib
14
+ - _self_
15
+
16
+ transforms:
17
+ input_height: 256
18
+ input_width: 256
19
+
20
+ datamodule:
21
+ num_workers: 12
22
+ train_batch_size: 4
23
+ test_batch_size: 4
24
+ task: ${model.dataset.task}
25
+
26
+ callbacks:
27
+ early_stopping:
28
+ patience: 3
29
+ monitor: validation_image_AUROC
30
+
31
+ core:
32
+ tag: "run"
33
+ name: csflow_${trainer.max_epochs}
34
+ test_after_training: true
35
+
36
+ logger:
37
+ mlflow:
38
+ experiment_name:
39
+ run_name: ${core.name}
40
+
41
+ # PL Trainer Args. Don't add extra parameter here.
42
+ trainer:
43
+ devices: [0]
44
+ gradient_clip_val: 1 # Grad clip value set based on the official implementation
45
+ gradient_clip_algorithm: norm
46
+ check_val_every_n_epoch: 1 # Don't validate before extracting features.
47
+ val_check_interval: 1.0 # Don't validate before extracting features.
48
+ max_epochs: 240
@@ -0,0 +1,51 @@
1
+ # @package _global_
2
+
3
+ defaults:
4
+ - override /datamodule: base/anomaly
5
+ - override /model: anomalib/draem
6
+ - override /optimizer: null
7
+ - override /scheduler: null
8
+ - override /transforms: default_resize
9
+ - override /loss: null
10
+ - override /task: anomalib/draem
11
+ - override /backbone: null
12
+ - override /trainer: lightning_gpu
13
+ - override /callbacks: default_anomalib
14
+ - _self_
15
+
16
+ transforms:
17
+ input_height: 256
18
+ input_width: 256
19
+
20
+ datamodule:
21
+ num_workers: 12
22
+ train_batch_size: 16
23
+ test_batch_size: 32
24
+ task: ${model.dataset.task}
25
+ category:
26
+
27
+ callbacks:
28
+ early_stopping:
29
+ patience: 20
30
+ monitor: validation_image_F1
31
+
32
+ print_config: false
33
+
34
+ core:
35
+ tag: "run"
36
+ name: draem_${trainer.max_epochs}
37
+ test_after_training: true
38
+
39
+ logger:
40
+ mlflow:
41
+ experiment_name:
42
+ run_name: ${core.name}
43
+
44
+ # PL Trainer Args. Don't add extra parameter here.
45
+ trainer:
46
+ devices: [0]
47
+ gradient_clip_val: 0
48
+ gradient_clip_algorithm: norm
49
+ check_val_every_n_epoch: 1 # Don't validate before extracting features.
50
+ max_epochs: 700
51
+ val_check_interval: 1.0 # Don't validate before extracting features.
@@ -0,0 +1,43 @@
1
+ # @package _global_
2
+
3
+ defaults:
4
+ - override /datamodule: base/anomaly
5
+ - override /model: anomalib/efficient_ad
6
+ - override /optimizer: null
7
+ - override /scheduler: null
8
+ - override /transforms: default_resize
9
+ - override /loss: null
10
+ - override /task: anomalib/efficient_ad
11
+ - override /backbone: null
12
+ - override /trainer: lightning_gpu
13
+ - override /callbacks: default_anomalib
14
+ - _self_
15
+
16
+ datamodule:
17
+ num_workers: 12
18
+ train_batch_size: 32
19
+ test_batch_size: 32
20
+ task: ${model.dataset.task}
21
+ category:
22
+ phase: train
23
+
24
+ core:
25
+ tag: "run"
26
+ name: efficient_ad_${model.model.model_size}_${trainer.max_epochs}
27
+ test_after_training: true
28
+
29
+ logger:
30
+ mlflow:
31
+ experiment_name:
32
+ run_name: ${core.name}
33
+
34
+ trainer:
35
+ devices: [2]
36
+ check_val_every_n_epoch: ${trainer.max_epochs}
37
+ max_epochs: 20
38
+ max_steps: 20000
39
+ val_check_interval: 1.0 # Don't validate before extracting features.
40
+ # This will avoid issues with ModelSignatureWrapper
41
+ # As the default forward for EfficientAD is performed with a None attribute
42
+ # Which we currently can't handle
43
+ num_sanity_val_steps: 0