quadra 0.0.1__py3-none-any.whl → 2.2.7__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 +45 -0
  37. quadra/configs/callbacks/default.yaml +34 -0
  38. quadra/configs/callbacks/default_anomalib.yaml +64 -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 +49 -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 +327 -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 +1263 -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 +585 -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 +523 -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.2.7.dist-info/LICENSE +201 -0
  297. quadra-2.2.7.dist-info/METADATA +381 -0
  298. quadra-2.2.7.dist-info/RECORD +300 -0
  299. {quadra-0.0.1.dist-info → quadra-2.2.7.dist-info}/WHEEL +1 -1
  300. quadra-2.2.7.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,45 @@
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
33
+
34
+ batch_size_finder:
35
+ _target_: quadra.callbacks.lightning.BatchSizeFinder
36
+ mode: power
37
+ steps_per_trial: 3
38
+ init_val: 2
39
+ max_trials: 5 # Max 64
40
+ batch_arg_name: batch_size
41
+ disable: false
42
+ find_train_batch_size: true
43
+ find_validation_batch_size: false
44
+ find_test_batch_size: false
45
+ find_predict_batch_size: false
@@ -0,0 +1,34 @@
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
+ lr_monitor:
13
+ _target_: pytorch_lightning.callbacks.LearningRateMonitor
14
+ logging_interval: "epoch"
15
+ progress_bar:
16
+ _target_: pytorch_lightning.callbacks.progress.TQDMProgressBar
17
+ lightning_trainer_setup:
18
+ _target_: quadra.callbacks.lightning.LightningTrainerBaseSetup
19
+ log_every_n_steps: 1
20
+
21
+ batch_size_finder:
22
+ _target_: quadra.callbacks.lightning.BatchSizeFinder
23
+ mode: power
24
+ steps_per_trial: 3
25
+ init_val: 2
26
+ max_trials: 5 # Max 64
27
+ batch_arg_name: batch_size
28
+ disable: true
29
+ find_train_batch_size: true
30
+ find_validation_batch_size: false
31
+ find_test_batch_size: false
32
+ find_predict_batch_size: false
33
+ #gpu_stats: TODO: This is not working with the current PL version
34
+ # _target_: nvitop.callbacks.lightning.GpuStatsLogger
@@ -0,0 +1,64 @@
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
+ lr_monitor:
48
+ _target_: pytorch_lightning.callbacks.LearningRateMonitor
49
+ logging_interval: "epoch"
50
+ progress_bar:
51
+ _target_: pytorch_lightning.callbacks.progress.TQDMProgressBar
52
+ lightning_trainer_setup:
53
+ _target_: quadra.callbacks.lightning.LightningTrainerBaseSetup
54
+ log_every_n_steps: 1
55
+ batch_size_finder:
56
+ _target_: quadra.callbacks.lightning.BatchSizeFinder
57
+ mode: power
58
+ steps_per_trial: 3
59
+ init_val: 2
60
+ max_trials: 5 # Max 64
61
+ batch_arg_name: train_batch_size
62
+ disable: true
63
+ #gpu_stats: TODO: This is not working with the current PL version
64
+ # _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