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.
- hydra_plugins/quadra_searchpath_plugin.py +30 -0
- quadra/__init__.py +6 -0
- quadra/callbacks/__init__.py +0 -0
- quadra/callbacks/anomalib.py +289 -0
- quadra/callbacks/lightning.py +501 -0
- quadra/callbacks/mlflow.py +291 -0
- quadra/callbacks/scheduler.py +69 -0
- quadra/configs/__init__.py +0 -0
- quadra/configs/backbone/caformer_m36.yaml +8 -0
- quadra/configs/backbone/caformer_s36.yaml +8 -0
- quadra/configs/backbone/convnextv2_base.yaml +8 -0
- quadra/configs/backbone/convnextv2_femto.yaml +8 -0
- quadra/configs/backbone/convnextv2_tiny.yaml +8 -0
- quadra/configs/backbone/dino_vitb8.yaml +12 -0
- quadra/configs/backbone/dino_vits8.yaml +12 -0
- quadra/configs/backbone/dinov2_vitb14.yaml +12 -0
- quadra/configs/backbone/dinov2_vits14.yaml +12 -0
- quadra/configs/backbone/efficientnet_b0.yaml +8 -0
- quadra/configs/backbone/efficientnet_b1.yaml +8 -0
- quadra/configs/backbone/efficientnet_b2.yaml +8 -0
- quadra/configs/backbone/efficientnet_b3.yaml +8 -0
- quadra/configs/backbone/efficientnetv2_s.yaml +8 -0
- quadra/configs/backbone/levit_128s.yaml +8 -0
- quadra/configs/backbone/mnasnet0_5.yaml +9 -0
- quadra/configs/backbone/resnet101.yaml +8 -0
- quadra/configs/backbone/resnet18.yaml +8 -0
- quadra/configs/backbone/resnet18_ssl.yaml +8 -0
- quadra/configs/backbone/resnet50.yaml +8 -0
- quadra/configs/backbone/smp.yaml +9 -0
- quadra/configs/backbone/tiny_vit_21m_224.yaml +9 -0
- quadra/configs/backbone/unetr.yaml +15 -0
- quadra/configs/backbone/vit16_base.yaml +9 -0
- quadra/configs/backbone/vit16_small.yaml +9 -0
- quadra/configs/backbone/vit16_tiny.yaml +9 -0
- quadra/configs/backbone/xcit_tiny_24_p8_224.yaml +9 -0
- quadra/configs/callbacks/all.yaml +45 -0
- quadra/configs/callbacks/default.yaml +34 -0
- quadra/configs/callbacks/default_anomalib.yaml +64 -0
- quadra/configs/config.yaml +33 -0
- quadra/configs/core/default.yaml +11 -0
- quadra/configs/datamodule/base/anomaly.yaml +16 -0
- quadra/configs/datamodule/base/classification.yaml +21 -0
- quadra/configs/datamodule/base/multilabel_classification.yaml +23 -0
- quadra/configs/datamodule/base/segmentation.yaml +18 -0
- quadra/configs/datamodule/base/segmentation_multiclass.yaml +20 -0
- quadra/configs/datamodule/base/sklearn_classification.yaml +23 -0
- quadra/configs/datamodule/base/sklearn_classification_patch.yaml +17 -0
- quadra/configs/datamodule/base/ssl.yaml +21 -0
- quadra/configs/datamodule/generic/imagenette/classification/base.yaml +9 -0
- quadra/configs/datamodule/generic/imagenette/ssl/base.yaml +10 -0
- quadra/configs/datamodule/generic/mnist/anomaly/base.yaml +14 -0
- quadra/configs/datamodule/generic/mvtec/anomaly/base.yaml +14 -0
- quadra/configs/datamodule/generic/oxford_pet/segmentation/base.yaml +9 -0
- quadra/configs/experiment/base/anomaly/cfa.yaml +47 -0
- quadra/configs/experiment/base/anomaly/cflow.yaml +47 -0
- quadra/configs/experiment/base/anomaly/csflow.yaml +48 -0
- quadra/configs/experiment/base/anomaly/draem.yaml +51 -0
- quadra/configs/experiment/base/anomaly/efficient_ad.yaml +43 -0
- quadra/configs/experiment/base/anomaly/fastflow.yaml +46 -0
- quadra/configs/experiment/base/anomaly/inference.yaml +21 -0
- quadra/configs/experiment/base/anomaly/padim.yaml +37 -0
- quadra/configs/experiment/base/anomaly/patchcore.yaml +37 -0
- quadra/configs/experiment/base/classification/classification.yaml +73 -0
- quadra/configs/experiment/base/classification/classification_evaluation.yaml +25 -0
- quadra/configs/experiment/base/classification/multilabel_classification.yaml +41 -0
- quadra/configs/experiment/base/classification/sklearn_classification.yaml +27 -0
- quadra/configs/experiment/base/classification/sklearn_classification_patch.yaml +25 -0
- quadra/configs/experiment/base/classification/sklearn_classification_patch_test.yaml +18 -0
- quadra/configs/experiment/base/classification/sklearn_classification_test.yaml +25 -0
- quadra/configs/experiment/base/segmentation/smp.yaml +30 -0
- quadra/configs/experiment/base/segmentation/smp_evaluation.yaml +17 -0
- quadra/configs/experiment/base/segmentation/smp_multiclass.yaml +26 -0
- quadra/configs/experiment/base/segmentation/smp_multiclass_evaluation.yaml +18 -0
- quadra/configs/experiment/base/ssl/barlow.yaml +48 -0
- quadra/configs/experiment/base/ssl/byol.yaml +43 -0
- quadra/configs/experiment/base/ssl/dino.yaml +46 -0
- quadra/configs/experiment/base/ssl/linear_eval.yaml +52 -0
- quadra/configs/experiment/base/ssl/simclr.yaml +48 -0
- quadra/configs/experiment/base/ssl/simsiam.yaml +53 -0
- quadra/configs/experiment/custom/cls.yaml +12 -0
- quadra/configs/experiment/default.yaml +15 -0
- quadra/configs/experiment/generic/imagenette/classification/default.yaml +20 -0
- quadra/configs/experiment/generic/imagenette/ssl/barlow.yaml +14 -0
- quadra/configs/experiment/generic/imagenette/ssl/byol.yaml +14 -0
- quadra/configs/experiment/generic/imagenette/ssl/dino.yaml +14 -0
- quadra/configs/experiment/generic/imagenette/ssl/simclr.yaml +14 -0
- quadra/configs/experiment/generic/imagenette/ssl/simsiam.yaml +14 -0
- quadra/configs/experiment/generic/mnist/anomaly/cfa.yaml +34 -0
- quadra/configs/experiment/generic/mnist/anomaly/cflow.yaml +33 -0
- quadra/configs/experiment/generic/mnist/anomaly/csflow.yaml +33 -0
- quadra/configs/experiment/generic/mnist/anomaly/draem.yaml +33 -0
- quadra/configs/experiment/generic/mnist/anomaly/fastflow.yaml +29 -0
- quadra/configs/experiment/generic/mnist/anomaly/inference.yaml +27 -0
- quadra/configs/experiment/generic/mnist/anomaly/padim.yaml +37 -0
- quadra/configs/experiment/generic/mnist/anomaly/patchcore.yaml +37 -0
- quadra/configs/experiment/generic/mvtec/anomaly/cfa.yaml +34 -0
- quadra/configs/experiment/generic/mvtec/anomaly/cflow.yaml +33 -0
- quadra/configs/experiment/generic/mvtec/anomaly/csflow.yaml +33 -0
- quadra/configs/experiment/generic/mvtec/anomaly/draem.yaml +33 -0
- quadra/configs/experiment/generic/mvtec/anomaly/efficient_ad.yaml +38 -0
- quadra/configs/experiment/generic/mvtec/anomaly/fastflow.yaml +29 -0
- quadra/configs/experiment/generic/mvtec/anomaly/inference.yaml +27 -0
- quadra/configs/experiment/generic/mvtec/anomaly/padim.yaml +37 -0
- quadra/configs/experiment/generic/mvtec/anomaly/patchcore.yaml +37 -0
- quadra/configs/experiment/generic/oxford_pet/segmentation/smp.yaml +27 -0
- quadra/configs/export/default.yaml +13 -0
- quadra/configs/hydra/anomaly_custom.yaml +15 -0
- quadra/configs/hydra/default.yaml +14 -0
- quadra/configs/inference/default.yaml +26 -0
- quadra/configs/logger/comet.yaml +10 -0
- quadra/configs/logger/csv.yaml +5 -0
- quadra/configs/logger/mlflow.yaml +12 -0
- quadra/configs/logger/tensorboard.yaml +8 -0
- quadra/configs/loss/asl.yaml +7 -0
- quadra/configs/loss/barlow.yaml +2 -0
- quadra/configs/loss/bce.yaml +1 -0
- quadra/configs/loss/byol.yaml +1 -0
- quadra/configs/loss/cross_entropy.yaml +1 -0
- quadra/configs/loss/dino.yaml +8 -0
- quadra/configs/loss/simclr.yaml +2 -0
- quadra/configs/loss/simsiam.yaml +1 -0
- quadra/configs/loss/smp_ce.yaml +3 -0
- quadra/configs/loss/smp_dice.yaml +2 -0
- quadra/configs/loss/smp_dice_multiclass.yaml +2 -0
- quadra/configs/loss/smp_mcc.yaml +2 -0
- quadra/configs/loss/vicreg.yaml +5 -0
- quadra/configs/model/anomalib/cfa.yaml +35 -0
- quadra/configs/model/anomalib/cflow.yaml +30 -0
- quadra/configs/model/anomalib/csflow.yaml +34 -0
- quadra/configs/model/anomalib/dfm.yaml +19 -0
- quadra/configs/model/anomalib/draem.yaml +29 -0
- quadra/configs/model/anomalib/efficient_ad.yaml +31 -0
- quadra/configs/model/anomalib/fastflow.yaml +32 -0
- quadra/configs/model/anomalib/padim.yaml +32 -0
- quadra/configs/model/anomalib/patchcore.yaml +36 -0
- quadra/configs/model/barlow.yaml +16 -0
- quadra/configs/model/byol.yaml +25 -0
- quadra/configs/model/classification.yaml +10 -0
- quadra/configs/model/dino.yaml +26 -0
- quadra/configs/model/logistic_regression.yaml +4 -0
- quadra/configs/model/multilabel_classification.yaml +9 -0
- quadra/configs/model/simclr.yaml +18 -0
- quadra/configs/model/simsiam.yaml +24 -0
- quadra/configs/model/smp.yaml +4 -0
- quadra/configs/model/smp_multiclass.yaml +4 -0
- quadra/configs/model/vicreg.yaml +16 -0
- quadra/configs/optimizer/adam.yaml +5 -0
- quadra/configs/optimizer/adamw.yaml +3 -0
- quadra/configs/optimizer/default.yaml +4 -0
- quadra/configs/optimizer/lars.yaml +8 -0
- quadra/configs/optimizer/sgd.yaml +4 -0
- quadra/configs/scheduler/default.yaml +5 -0
- quadra/configs/scheduler/rop.yaml +5 -0
- quadra/configs/scheduler/step.yaml +3 -0
- quadra/configs/scheduler/warmrestart.yaml +2 -0
- quadra/configs/scheduler/warmup.yaml +6 -0
- quadra/configs/task/anomalib/cfa.yaml +5 -0
- quadra/configs/task/anomalib/cflow.yaml +5 -0
- quadra/configs/task/anomalib/csflow.yaml +5 -0
- quadra/configs/task/anomalib/draem.yaml +5 -0
- quadra/configs/task/anomalib/efficient_ad.yaml +5 -0
- quadra/configs/task/anomalib/fastflow.yaml +5 -0
- quadra/configs/task/anomalib/inference.yaml +3 -0
- quadra/configs/task/anomalib/padim.yaml +5 -0
- quadra/configs/task/anomalib/patchcore.yaml +5 -0
- quadra/configs/task/classification.yaml +6 -0
- quadra/configs/task/classification_evaluation.yaml +6 -0
- quadra/configs/task/default.yaml +1 -0
- quadra/configs/task/segmentation.yaml +9 -0
- quadra/configs/task/segmentation_evaluation.yaml +3 -0
- quadra/configs/task/sklearn_classification.yaml +13 -0
- quadra/configs/task/sklearn_classification_patch.yaml +11 -0
- quadra/configs/task/sklearn_classification_patch_test.yaml +8 -0
- quadra/configs/task/sklearn_classification_test.yaml +8 -0
- quadra/configs/task/ssl.yaml +2 -0
- quadra/configs/trainer/lightning_cpu.yaml +36 -0
- quadra/configs/trainer/lightning_gpu.yaml +35 -0
- quadra/configs/trainer/lightning_gpu_bf16.yaml +36 -0
- quadra/configs/trainer/lightning_gpu_fp16.yaml +36 -0
- quadra/configs/trainer/lightning_multigpu.yaml +37 -0
- quadra/configs/trainer/sklearn_classification.yaml +7 -0
- quadra/configs/transforms/byol.yaml +47 -0
- quadra/configs/transforms/byol_no_random_resize.yaml +61 -0
- quadra/configs/transforms/default.yaml +37 -0
- quadra/configs/transforms/default_numpy.yaml +24 -0
- quadra/configs/transforms/default_resize.yaml +22 -0
- quadra/configs/transforms/dino.yaml +63 -0
- quadra/configs/transforms/linear_eval.yaml +18 -0
- quadra/datamodules/__init__.py +20 -0
- quadra/datamodules/anomaly.py +180 -0
- quadra/datamodules/base.py +375 -0
- quadra/datamodules/classification.py +1003 -0
- quadra/datamodules/generic/__init__.py +0 -0
- quadra/datamodules/generic/imagenette.py +144 -0
- quadra/datamodules/generic/mnist.py +81 -0
- quadra/datamodules/generic/mvtec.py +58 -0
- quadra/datamodules/generic/oxford_pet.py +163 -0
- quadra/datamodules/patch.py +190 -0
- quadra/datamodules/segmentation.py +742 -0
- quadra/datamodules/ssl.py +140 -0
- quadra/datasets/__init__.py +17 -0
- quadra/datasets/anomaly.py +287 -0
- quadra/datasets/classification.py +241 -0
- quadra/datasets/patch.py +138 -0
- quadra/datasets/segmentation.py +239 -0
- quadra/datasets/ssl.py +110 -0
- quadra/losses/__init__.py +0 -0
- quadra/losses/classification/__init__.py +6 -0
- quadra/losses/classification/asl.py +83 -0
- quadra/losses/classification/focal.py +320 -0
- quadra/losses/classification/prototypical.py +148 -0
- quadra/losses/ssl/__init__.py +17 -0
- quadra/losses/ssl/barlowtwins.py +47 -0
- quadra/losses/ssl/byol.py +37 -0
- quadra/losses/ssl/dino.py +129 -0
- quadra/losses/ssl/hyperspherical.py +45 -0
- quadra/losses/ssl/idmm.py +50 -0
- quadra/losses/ssl/simclr.py +67 -0
- quadra/losses/ssl/simsiam.py +30 -0
- quadra/losses/ssl/vicreg.py +76 -0
- quadra/main.py +49 -0
- quadra/metrics/__init__.py +3 -0
- quadra/metrics/segmentation.py +251 -0
- quadra/models/__init__.py +0 -0
- quadra/models/base.py +151 -0
- quadra/models/classification/__init__.py +8 -0
- quadra/models/classification/backbones.py +149 -0
- quadra/models/classification/base.py +92 -0
- quadra/models/evaluation.py +322 -0
- quadra/modules/__init__.py +0 -0
- quadra/modules/backbone.py +30 -0
- quadra/modules/base.py +312 -0
- quadra/modules/classification/__init__.py +3 -0
- quadra/modules/classification/base.py +327 -0
- quadra/modules/ssl/__init__.py +17 -0
- quadra/modules/ssl/barlowtwins.py +59 -0
- quadra/modules/ssl/byol.py +172 -0
- quadra/modules/ssl/common.py +285 -0
- quadra/modules/ssl/dino.py +186 -0
- quadra/modules/ssl/hyperspherical.py +206 -0
- quadra/modules/ssl/idmm.py +98 -0
- quadra/modules/ssl/simclr.py +73 -0
- quadra/modules/ssl/simsiam.py +68 -0
- quadra/modules/ssl/vicreg.py +67 -0
- quadra/optimizers/__init__.py +4 -0
- quadra/optimizers/lars.py +153 -0
- quadra/optimizers/sam.py +127 -0
- quadra/schedulers/__init__.py +3 -0
- quadra/schedulers/base.py +44 -0
- quadra/schedulers/warmup.py +127 -0
- quadra/tasks/__init__.py +24 -0
- quadra/tasks/anomaly.py +582 -0
- quadra/tasks/base.py +397 -0
- quadra/tasks/classification.py +1263 -0
- quadra/tasks/patch.py +492 -0
- quadra/tasks/segmentation.py +389 -0
- quadra/tasks/ssl.py +560 -0
- quadra/trainers/README.md +3 -0
- quadra/trainers/__init__.py +0 -0
- quadra/trainers/classification.py +179 -0
- quadra/utils/__init__.py +0 -0
- quadra/utils/anomaly.py +112 -0
- quadra/utils/classification.py +618 -0
- quadra/utils/deprecation.py +31 -0
- quadra/utils/evaluation.py +474 -0
- quadra/utils/export.py +585 -0
- quadra/utils/imaging.py +32 -0
- quadra/utils/logger.py +15 -0
- quadra/utils/mlflow.py +98 -0
- quadra/utils/model_manager.py +320 -0
- quadra/utils/models.py +523 -0
- quadra/utils/patch/__init__.py +15 -0
- quadra/utils/patch/dataset.py +1433 -0
- quadra/utils/patch/metrics.py +449 -0
- quadra/utils/patch/model.py +153 -0
- quadra/utils/patch/visualization.py +217 -0
- quadra/utils/resolver.py +42 -0
- quadra/utils/segmentation.py +31 -0
- quadra/utils/tests/__init__.py +0 -0
- quadra/utils/tests/fixtures/__init__.py +1 -0
- quadra/utils/tests/fixtures/dataset/__init__.py +39 -0
- quadra/utils/tests/fixtures/dataset/anomaly.py +124 -0
- quadra/utils/tests/fixtures/dataset/classification.py +406 -0
- quadra/utils/tests/fixtures/dataset/imagenette.py +53 -0
- quadra/utils/tests/fixtures/dataset/segmentation.py +161 -0
- quadra/utils/tests/fixtures/models/__init__.py +3 -0
- quadra/utils/tests/fixtures/models/anomaly.py +89 -0
- quadra/utils/tests/fixtures/models/classification.py +45 -0
- quadra/utils/tests/fixtures/models/segmentation.py +33 -0
- quadra/utils/tests/helpers.py +70 -0
- quadra/utils/tests/models.py +27 -0
- quadra/utils/utils.py +525 -0
- quadra/utils/validator.py +115 -0
- quadra/utils/visualization.py +422 -0
- quadra/utils/vit_explainability.py +349 -0
- quadra-2.2.7.dist-info/LICENSE +201 -0
- quadra-2.2.7.dist-info/METADATA +381 -0
- quadra-2.2.7.dist-info/RECORD +300 -0
- {quadra-0.0.1.dist-info → quadra-2.2.7.dist-info}/WHEEL +1 -1
- quadra-2.2.7.dist-info/entry_points.txt +3 -0
- quadra-0.0.1.dist-info/METADATA +0 -14
- 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,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
|