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,29 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
defaults:
|
|
3
|
+
- base/anomaly/fastflow
|
|
4
|
+
- override /datamodule: generic/mvtec/anomaly/base
|
|
5
|
+
|
|
6
|
+
datamodule:
|
|
7
|
+
num_workers: 12
|
|
8
|
+
train_batch_size: 32
|
|
9
|
+
task: ${model.dataset.task}
|
|
10
|
+
category: bottle
|
|
11
|
+
|
|
12
|
+
callbacks:
|
|
13
|
+
score_normalization:
|
|
14
|
+
threshold_type: "pixel"
|
|
15
|
+
print_config: false
|
|
16
|
+
|
|
17
|
+
core:
|
|
18
|
+
tag: "run"
|
|
19
|
+
test_after_training: true
|
|
20
|
+
upload_artifacts: true
|
|
21
|
+
name: fastflow_${datamodule.category}_${model.model.backbone}_${trainer.max_epochs}
|
|
22
|
+
|
|
23
|
+
logger:
|
|
24
|
+
mlflow:
|
|
25
|
+
experiment_name: mvtec-anomaly
|
|
26
|
+
run_name: ${core.name}
|
|
27
|
+
|
|
28
|
+
trainer:
|
|
29
|
+
devices: [2]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
defaults:
|
|
3
|
+
- base/anomaly/inference
|
|
4
|
+
- override /datamodule: generic/mvtec/anomaly/base
|
|
5
|
+
|
|
6
|
+
datamodule:
|
|
7
|
+
num_workers: 12
|
|
8
|
+
test_batch_size: 32
|
|
9
|
+
task: segmentation
|
|
10
|
+
category: bottle
|
|
11
|
+
|
|
12
|
+
core:
|
|
13
|
+
tag: "run"
|
|
14
|
+
test_after_training: true
|
|
15
|
+
upload_artifacts: true
|
|
16
|
+
name: inference_${datamodule.category}
|
|
17
|
+
|
|
18
|
+
logger:
|
|
19
|
+
mlflow:
|
|
20
|
+
experiment_name: mvtec-anomaly
|
|
21
|
+
run_name: ${core.name}
|
|
22
|
+
|
|
23
|
+
trainer:
|
|
24
|
+
devices: [2]
|
|
25
|
+
|
|
26
|
+
task:
|
|
27
|
+
model_path: ???
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
defaults:
|
|
3
|
+
- base/anomaly/padim
|
|
4
|
+
- override /datamodule: generic/mvtec/anomaly/base
|
|
5
|
+
|
|
6
|
+
model:
|
|
7
|
+
model:
|
|
8
|
+
input_size: [224, 224]
|
|
9
|
+
backbone: resnet18.tv_in1k
|
|
10
|
+
|
|
11
|
+
datamodule:
|
|
12
|
+
num_workers: 12
|
|
13
|
+
train_batch_size: 32
|
|
14
|
+
task: ${model.dataset.task}
|
|
15
|
+
category: bottle
|
|
16
|
+
|
|
17
|
+
callbacks:
|
|
18
|
+
score_normalization:
|
|
19
|
+
threshold_type: "pixel"
|
|
20
|
+
|
|
21
|
+
print_config: false
|
|
22
|
+
|
|
23
|
+
core:
|
|
24
|
+
tag: "run"
|
|
25
|
+
test_after_training: true
|
|
26
|
+
upload_artifacts: true
|
|
27
|
+
name: padim_${datamodule.category}_${model.model.backbone}_${trainer.max_epochs}
|
|
28
|
+
|
|
29
|
+
logger:
|
|
30
|
+
mlflow:
|
|
31
|
+
experiment_name: mvtec-anomaly
|
|
32
|
+
run_name: ${core.name}
|
|
33
|
+
|
|
34
|
+
trainer:
|
|
35
|
+
devices: [2]
|
|
36
|
+
max_epochs: 1
|
|
37
|
+
check_val_every_n_epoch: ${trainer.max_epochs}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
defaults:
|
|
3
|
+
- base/anomaly/patchcore
|
|
4
|
+
- override /datamodule: generic/mvtec/anomaly/base
|
|
5
|
+
|
|
6
|
+
model:
|
|
7
|
+
model:
|
|
8
|
+
input_size: [224, 224]
|
|
9
|
+
backbone: resnet18.tv_in1k
|
|
10
|
+
|
|
11
|
+
datamodule:
|
|
12
|
+
num_workers: 12
|
|
13
|
+
train_batch_size: 32
|
|
14
|
+
task: ${model.dataset.task}
|
|
15
|
+
category: bottle
|
|
16
|
+
|
|
17
|
+
callbacks:
|
|
18
|
+
score_normalization:
|
|
19
|
+
threshold_type: "pixel"
|
|
20
|
+
|
|
21
|
+
print_config: false
|
|
22
|
+
|
|
23
|
+
core:
|
|
24
|
+
tag: "run"
|
|
25
|
+
test_after_training: true
|
|
26
|
+
upload_artifacts: true
|
|
27
|
+
name: patchcore_${datamodule.category}_${model.model.backbone}_${trainer.max_epochs}
|
|
28
|
+
|
|
29
|
+
logger:
|
|
30
|
+
mlflow:
|
|
31
|
+
experiment_name: mvtec-anomaly
|
|
32
|
+
run_name: ${core.name}
|
|
33
|
+
|
|
34
|
+
trainer:
|
|
35
|
+
devices: [2]
|
|
36
|
+
max_epochs: 1
|
|
37
|
+
check_val_every_n_epoch: ${trainer.max_epochs}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
defaults:
|
|
3
|
+
- base/segmentation/smp # use smp file as default
|
|
4
|
+
- override /datamodule: generic/oxford_pet/segmentation/base # update datamodule
|
|
5
|
+
- override /loss: smp_dice_multiclass
|
|
6
|
+
- override /model: smp_multiclass
|
|
7
|
+
- _self_ # use this file as final config
|
|
8
|
+
|
|
9
|
+
trainer:
|
|
10
|
+
devices: [0]
|
|
11
|
+
max_epochs: 10
|
|
12
|
+
|
|
13
|
+
backbone:
|
|
14
|
+
model:
|
|
15
|
+
num_classes: 2 # The total number of classes (background + foreground)
|
|
16
|
+
|
|
17
|
+
task:
|
|
18
|
+
report: true
|
|
19
|
+
evaluate:
|
|
20
|
+
analysis: true
|
|
21
|
+
|
|
22
|
+
core:
|
|
23
|
+
save_for_runtime: False
|
|
24
|
+
name: "oxford_pet_segmentation" # change the name of experiment (also for Mlflow)
|
|
25
|
+
|
|
26
|
+
datamodule:
|
|
27
|
+
batch_size: 64
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
types: [torchscript]
|
|
2
|
+
input_shapes: # Redefine the input shape if not automatically inferred
|
|
3
|
+
onnx:
|
|
4
|
+
# torch.onnx.export options
|
|
5
|
+
input_names: # If null automatically inferred
|
|
6
|
+
output_names: # If null automatically inferred
|
|
7
|
+
dynamic_axes: # If null automatically inferred
|
|
8
|
+
export_params: true
|
|
9
|
+
opset_version: 16
|
|
10
|
+
do_constant_folding: true
|
|
11
|
+
# Custom options
|
|
12
|
+
fixed_batch_size: # If not null export with fixed batch size (ignore dynamic axes)
|
|
13
|
+
simplify: true
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
|
|
3
|
+
hydra:
|
|
4
|
+
run:
|
|
5
|
+
dir: logs/runs/${core.name}/${now:%Y-%m-%d_%H-%M-%S}
|
|
6
|
+
sweep:
|
|
7
|
+
dir: logs/multiruns/${now:%Y-%m-%d_%H-%M-%S}/
|
|
8
|
+
subdir: ${multirun_subdir_beautify:${hydra.job.override_dirname}}
|
|
9
|
+
job:
|
|
10
|
+
config:
|
|
11
|
+
override_dirname:
|
|
12
|
+
exclude_keys:
|
|
13
|
+
- trainer.devices
|
|
14
|
+
- logger.mlflow.experiment_name
|
|
15
|
+
chdir: true
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# @package _global_
|
|
2
|
+
|
|
3
|
+
hydra:
|
|
4
|
+
run:
|
|
5
|
+
dir: logs/runs/${core.name}/${now:%Y-%m-%d_%H-%M-%S}
|
|
6
|
+
sweep:
|
|
7
|
+
dir: logs/multiruns/${core.name}/${now:%Y-%m-%d_%H-%M-%S}
|
|
8
|
+
subdir: ${multirun_subdir_beautify:${hydra.job.override_dirname}}
|
|
9
|
+
job:
|
|
10
|
+
config:
|
|
11
|
+
override_dirname:
|
|
12
|
+
exclude_keys:
|
|
13
|
+
- trainer.devices
|
|
14
|
+
chdir: true
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
onnx:
|
|
2
|
+
session_options:
|
|
3
|
+
inter_op_num_threads: 8
|
|
4
|
+
intra_op_num_threads: 8
|
|
5
|
+
graph_optimization_level:
|
|
6
|
+
_target_: onnxruntime.GraphOptimizationLevel
|
|
7
|
+
value: 99 # ORT_ENABLE_ALL
|
|
8
|
+
enable_mem_pattern: true
|
|
9
|
+
enable_cpu_mem_arena: true
|
|
10
|
+
enable_profiling: false
|
|
11
|
+
enable_mem_reuse: true
|
|
12
|
+
execution_mode:
|
|
13
|
+
_target_: onnxruntime.ExecutionMode
|
|
14
|
+
value: 0 # ORT_SEQUENTIAL
|
|
15
|
+
execution_order:
|
|
16
|
+
_target_: onnxruntime.ExecutionOrder
|
|
17
|
+
value: 0 # DEFAULT
|
|
18
|
+
log_severity_level: 2
|
|
19
|
+
log_verbosity_level: 0
|
|
20
|
+
logid: ""
|
|
21
|
+
optimized_model_filepath: ""
|
|
22
|
+
use_deterministic_compute: false
|
|
23
|
+
profile_file_prefix: onnxruntime_profile_
|
|
24
|
+
|
|
25
|
+
pytorch:
|
|
26
|
+
torchscript:
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# https://mlflow.org
|
|
2
|
+
|
|
3
|
+
mlflow:
|
|
4
|
+
_target_: pytorch_lightning.loggers.mlflow.MLFlowLogger
|
|
5
|
+
experiment_name: ${core.name}
|
|
6
|
+
tracking_uri: ${oc.env:MLFLOW_TRACKING_URI}
|
|
7
|
+
tags: null
|
|
8
|
+
save_dir: null
|
|
9
|
+
prefix: ""
|
|
10
|
+
artifact_location: null
|
|
11
|
+
run_id: null
|
|
12
|
+
log_model: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
_target_: torch.nn.BCEWithLogitsLoss
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
_target_: quadra.losses.ssl.BYOLRegressionLoss
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
_target_: torch.nn.CrossEntropyLoss
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
_target_: quadra.losses.ssl.DinoDistillationLoss
|
|
2
|
+
output_dim: ${model.student_projection_mlp.output_dim}
|
|
3
|
+
max_epochs: ${trainer.max_epochs}
|
|
4
|
+
warmup_teacher_temp: 0.04
|
|
5
|
+
teacher_temp: 0.07
|
|
6
|
+
warmup_teacher_temp_epochs: 30
|
|
7
|
+
student_temp: 0.1
|
|
8
|
+
center_momentum: 0.9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
_target_: quadra.losses.ssl.SimSIAMLoss
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
|
|
4
|
+
model:
|
|
5
|
+
input_size: [224, 224]
|
|
6
|
+
backbone: resnet18.tv_in1k
|
|
7
|
+
gamma_c: 1
|
|
8
|
+
gamma_d: 1
|
|
9
|
+
num_nearest_neighbors: 3
|
|
10
|
+
num_hard_negative_features: 3
|
|
11
|
+
radius: 1e-5
|
|
12
|
+
lr: 1e-3
|
|
13
|
+
weight_decay: 5e-4
|
|
14
|
+
amsgrad: true
|
|
15
|
+
|
|
16
|
+
metrics:
|
|
17
|
+
image:
|
|
18
|
+
- F1Score
|
|
19
|
+
- AUROC
|
|
20
|
+
pixel:
|
|
21
|
+
- F1Score
|
|
22
|
+
- AUROC
|
|
23
|
+
threshold:
|
|
24
|
+
method: adaptive # options: [adaptive, manual]
|
|
25
|
+
manual_image: null
|
|
26
|
+
manual_pixel: null
|
|
27
|
+
|
|
28
|
+
# PL Trainer Args. Don't add extra parameter here.
|
|
29
|
+
trainer:
|
|
30
|
+
gradient_clip_val: 0
|
|
31
|
+
gradient_clip_algorithm: norm
|
|
32
|
+
devices: [0]
|
|
33
|
+
check_val_every_n_epoch: 1 # Don't validate before extracting features.
|
|
34
|
+
max_epochs: 30
|
|
35
|
+
val_check_interval: 1.0 # Don't validate before extracting features.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
|
|
4
|
+
model:
|
|
5
|
+
name: cflow
|
|
6
|
+
backbone: resnet18.tv_in1k
|
|
7
|
+
input_size: [256, 256]
|
|
8
|
+
layers:
|
|
9
|
+
- layer2
|
|
10
|
+
- layer3
|
|
11
|
+
- layer4
|
|
12
|
+
decoder: freia-cflow
|
|
13
|
+
condition_vector: 128
|
|
14
|
+
coupling_blocks: 8
|
|
15
|
+
permute_soft: false
|
|
16
|
+
clamp_alpha: 1.9
|
|
17
|
+
lr: 0.0001
|
|
18
|
+
fiber_batch_size: 64
|
|
19
|
+
|
|
20
|
+
metrics:
|
|
21
|
+
image:
|
|
22
|
+
- F1Score
|
|
23
|
+
- AUROC
|
|
24
|
+
pixel:
|
|
25
|
+
- F1Score
|
|
26
|
+
- AUROC
|
|
27
|
+
threshold:
|
|
28
|
+
method: adaptive # options: [adaptive, manual]
|
|
29
|
+
manual_image: null
|
|
30
|
+
manual_pixel: null
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
tiling:
|
|
4
|
+
apply: false
|
|
5
|
+
tile_size: null
|
|
6
|
+
stride: null
|
|
7
|
+
remove_border_count: 0
|
|
8
|
+
use_random_tiling: False
|
|
9
|
+
random_tile_count: 16
|
|
10
|
+
|
|
11
|
+
model:
|
|
12
|
+
name: csflow
|
|
13
|
+
clamp: 3
|
|
14
|
+
input_size: [256, 256] # 768 is the dimensions used in the official implementation
|
|
15
|
+
cross_conv_hidden_channels: 1024
|
|
16
|
+
eps: 1e-04 # Adam epsilon
|
|
17
|
+
layers:
|
|
18
|
+
- 6.8
|
|
19
|
+
lr: 2e-4
|
|
20
|
+
n_coupling_blocks: 4
|
|
21
|
+
n_scales: 3
|
|
22
|
+
weight_decay: 1e-5 # Adam weight decay
|
|
23
|
+
|
|
24
|
+
metrics:
|
|
25
|
+
image:
|
|
26
|
+
- F1Score
|
|
27
|
+
- AUROC
|
|
28
|
+
pixel:
|
|
29
|
+
- F1Score
|
|
30
|
+
- AUROC
|
|
31
|
+
threshold:
|
|
32
|
+
method: adaptive #options: [adaptive, manual]
|
|
33
|
+
manual_image: null
|
|
34
|
+
manual_pixel: null
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: classification
|
|
3
|
+
|
|
4
|
+
model:
|
|
5
|
+
backbone: wide_resnet50_2.tv_in1k
|
|
6
|
+
pca_level: 0.97
|
|
7
|
+
score_type: fre # nll: for Gaussian modeling, fre: pca feature reconstruction error
|
|
8
|
+
threshold:
|
|
9
|
+
image_default: 0
|
|
10
|
+
pixel_default: 0
|
|
11
|
+
adaptive: true
|
|
12
|
+
|
|
13
|
+
metrics:
|
|
14
|
+
image:
|
|
15
|
+
- F1Score
|
|
16
|
+
- AUROC
|
|
17
|
+
pixel:
|
|
18
|
+
- F1Score
|
|
19
|
+
- AUROC
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
tiling:
|
|
4
|
+
apply: false
|
|
5
|
+
tile_size: null
|
|
6
|
+
stride: null
|
|
7
|
+
remove_border_count: 0
|
|
8
|
+
use_random_tiling: False
|
|
9
|
+
random_tile_count: 16
|
|
10
|
+
|
|
11
|
+
model:
|
|
12
|
+
name: draem
|
|
13
|
+
input_size: [256, 256]
|
|
14
|
+
anomaly_source_path: null # optional, e.g. ./datasets/dtd
|
|
15
|
+
lr: 0.0001
|
|
16
|
+
enable_sspcab: false
|
|
17
|
+
sspcab_lambda: 0.1
|
|
18
|
+
|
|
19
|
+
metrics:
|
|
20
|
+
image:
|
|
21
|
+
- F1Score
|
|
22
|
+
- AUROC
|
|
23
|
+
pixel:
|
|
24
|
+
- F1Score
|
|
25
|
+
- AUROC
|
|
26
|
+
threshold:
|
|
27
|
+
method: adaptive # options: [adaptive, manual]
|
|
28
|
+
manual_image: null
|
|
29
|
+
manual_pixel: null
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
|
|
4
|
+
model:
|
|
5
|
+
name: efficientad
|
|
6
|
+
teacher_out_channels: 384
|
|
7
|
+
model_size: small # options: [small, medium]
|
|
8
|
+
lr: 0.0001
|
|
9
|
+
input_size: [256, 256]
|
|
10
|
+
weight_decay: 0.00001
|
|
11
|
+
padding: false
|
|
12
|
+
pad_maps: true # relevant for "padding: false", see EfficientAd in lightning_model.py
|
|
13
|
+
pre_padding: true # set True to avoid anomaly maps' dead frame issue
|
|
14
|
+
# generic params
|
|
15
|
+
normalization_method: min_max # options: [null, min_max, cdf]
|
|
16
|
+
train_batch_size: 1 # ${datamodule.train_batch_size}
|
|
17
|
+
pretrained_models_dir: ${oc.env:HOME}/.quadra/models/efficient_ad
|
|
18
|
+
imagenette_dir: ${oc.env:HOME}/.quadra/datasets/imagenette_efficientad
|
|
19
|
+
pretrained_teacher_type: nelson
|
|
20
|
+
|
|
21
|
+
metrics:
|
|
22
|
+
image:
|
|
23
|
+
- F1Score
|
|
24
|
+
- AUROC
|
|
25
|
+
pixel:
|
|
26
|
+
- F1Score
|
|
27
|
+
- AUROC
|
|
28
|
+
threshold:
|
|
29
|
+
method: adaptive # options: [adaptive, manual]
|
|
30
|
+
manual_image: null
|
|
31
|
+
manual_pixel: null
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
tiling:
|
|
4
|
+
apply: false
|
|
5
|
+
tile_size: null
|
|
6
|
+
stride: null
|
|
7
|
+
remove_border_count: 0
|
|
8
|
+
use_random_tiling: False
|
|
9
|
+
random_tile_count: 16
|
|
10
|
+
|
|
11
|
+
model:
|
|
12
|
+
name: fastflow
|
|
13
|
+
input_size: [224, 224]
|
|
14
|
+
backbone: resnet18.tv_in1k # options: [resnet18, wide_resnet50_2, cait_m48_448, deit_base_distilled_patch16_384]
|
|
15
|
+
pre_trained: true
|
|
16
|
+
flow_steps: 8 # options: [8, 8, 20, 20] - for each supported backbone
|
|
17
|
+
hidden_ratio: 1.0 # options: [1.0, 1.0, 0.16, 0.16] - for each supported backbone
|
|
18
|
+
conv3x3_only: True # options: [True, False, False, False] - for each supported backbone
|
|
19
|
+
lr: 0.001
|
|
20
|
+
weight_decay: 0.00001
|
|
21
|
+
|
|
22
|
+
metrics:
|
|
23
|
+
image:
|
|
24
|
+
- F1Score
|
|
25
|
+
- AUROC
|
|
26
|
+
pixel:
|
|
27
|
+
- F1Score
|
|
28
|
+
- AUROC
|
|
29
|
+
threshold:
|
|
30
|
+
method: adaptive # options: [adaptive, manual]
|
|
31
|
+
manual_image: null
|
|
32
|
+
manual_pixel: null
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
tiling:
|
|
4
|
+
apply: false
|
|
5
|
+
tile_size: null
|
|
6
|
+
stride: null
|
|
7
|
+
remove_border_count: 0
|
|
8
|
+
use_random_tiling: False
|
|
9
|
+
random_tile_count: 16
|
|
10
|
+
|
|
11
|
+
model:
|
|
12
|
+
name: padim
|
|
13
|
+
input_size: [224, 224]
|
|
14
|
+
backbone: resnet18.tv_in1k
|
|
15
|
+
layers:
|
|
16
|
+
- layer1
|
|
17
|
+
- layer2
|
|
18
|
+
- layer3
|
|
19
|
+
pre_trained: true
|
|
20
|
+
n_features: null
|
|
21
|
+
|
|
22
|
+
metrics:
|
|
23
|
+
image:
|
|
24
|
+
- F1Score
|
|
25
|
+
- AUROC
|
|
26
|
+
pixel:
|
|
27
|
+
- F1Score
|
|
28
|
+
- AUROC
|
|
29
|
+
threshold:
|
|
30
|
+
method: adaptive # options: [adaptive, manual]
|
|
31
|
+
manual_image: null
|
|
32
|
+
manual_pixel: null
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
dataset:
|
|
2
|
+
task: segmentation
|
|
3
|
+
tiling:
|
|
4
|
+
apply: false
|
|
5
|
+
tile_size: null
|
|
6
|
+
stride: null
|
|
7
|
+
remove_border_count: 0
|
|
8
|
+
use_random_tiling: False
|
|
9
|
+
random_tile_count: 16
|
|
10
|
+
|
|
11
|
+
model:
|
|
12
|
+
name: patchcore
|
|
13
|
+
backbone: resnet18.tv_in1k
|
|
14
|
+
layers:
|
|
15
|
+
- layer2
|
|
16
|
+
- layer3
|
|
17
|
+
input_size: [224, 224]
|
|
18
|
+
coreset_sampling_ratio: 0.1
|
|
19
|
+
num_neighbors: 9
|
|
20
|
+
pre_trained: true
|
|
21
|
+
pretrained_weights:
|
|
22
|
+
compress_memory_bank: false # Whether to apply dimensionality reduction to the memory bank
|
|
23
|
+
coreset_sampler: anomalib # Can be this or amazon
|
|
24
|
+
score_computation: anomalib # Can be this or amazon
|
|
25
|
+
|
|
26
|
+
metrics:
|
|
27
|
+
image:
|
|
28
|
+
- F1Score
|
|
29
|
+
- AUROC
|
|
30
|
+
pixel:
|
|
31
|
+
- F1Score
|
|
32
|
+
- AUROC
|
|
33
|
+
threshold:
|
|
34
|
+
method: adaptive # options: [adaptive, manual]
|
|
35
|
+
manual_image: null
|
|
36
|
+
manual_pixel: null
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
model: ${backbone.model}
|
|
2
|
+
projection_mlp_mult: 4
|
|
3
|
+
projection_mlp:
|
|
4
|
+
_target_: quadra.modules.ssl.common.BarlowTwinsProjectionHead
|
|
5
|
+
input_dim: ${backbone.metadata.output_dim}
|
|
6
|
+
output_dim: ${backbone.metadata.output_dim}
|
|
7
|
+
hidden_dim: ${backbone.metadata.output_dim}
|
|
8
|
+
module:
|
|
9
|
+
_target_: quadra.modules.ssl.BarlowTwins
|
|
10
|
+
classifier: ${model.classifier}
|
|
11
|
+
criterion: ${loss}
|
|
12
|
+
lr_scheduler_interval: step
|
|
13
|
+
classifier:
|
|
14
|
+
_target_: sklearn.neighbors.KNeighborsClassifier
|
|
15
|
+
n_neighbors: 20
|
|
16
|
+
n_jobs: 5
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
projection_mlp:
|
|
2
|
+
_target_: quadra.modules.ssl.common.BYOLProjectionHead
|
|
3
|
+
input_dim: ${backbone.metadata.output_dim}
|
|
4
|
+
output_dim: 256
|
|
5
|
+
hidden_dim: 4096
|
|
6
|
+
|
|
7
|
+
prediction_mlp:
|
|
8
|
+
_target_: quadra.modules.ssl.common.BYOLPredictionHead
|
|
9
|
+
input_dim: ${model.projection_mlp.output_dim}
|
|
10
|
+
output_dim: ${model.projection_mlp.output_dim}
|
|
11
|
+
hidden_dim: ${model.projection_mlp.hidden_dim}
|
|
12
|
+
|
|
13
|
+
student: ${backbone.model}
|
|
14
|
+
|
|
15
|
+
module:
|
|
16
|
+
_target_: quadra.modules.ssl.BYOL
|
|
17
|
+
classifier: ${model.classifier}
|
|
18
|
+
criterion: ${loss}
|
|
19
|
+
teacher_momentum: 0.9996
|
|
20
|
+
lr_scheduler_interval: step
|
|
21
|
+
|
|
22
|
+
classifier:
|
|
23
|
+
_target_: sklearn.neighbors.KNeighborsClassifier
|
|
24
|
+
n_neighbors: 20
|
|
25
|
+
n_jobs: 5
|