Skip to content

Commit 084331d

Browse files
samet-akcaydjdamelnashwinvaidya17Samet Akcaydependabot[bot]
authored
v2.0.0 (#2465)
* Dataclasses and post-processing refactor (#2098) * use dataclass for model in- and outputs * split dataclass in image and video * use dataclass in torch inferencer * use dataclass in openvino inferencer * add post_processor class * remove default metrics from CLI * export post processing * add post processor to patchcore * use named tuple for inference outputs * validate and format inputs of PredictBatch * update torch inference * remove base inferencer inheritance * update openvino inference * fix visualization * PredictBatch -> Batch * post processor as callback * use callback methods to apply post processing * temporary fix for visualization * add DatasetItem class * fix pred_score shape and add __len__ * make batch iterable * add in place replace method * use dataset items in inference * dataset_items -> items * use namedtuple as torch model outputs * formatting * split dataclasses into input/output and image/video * merge input and output classes * use init_subclass for attribute checking * add descriptor class for validation * improve error handling * DataClassDescriptor -> FieldDescriptor * add is_optional method * add input validation for torch image and batch * use image and video dataclasses in library * add more validation * add validation * make postprocessor configurable from engine * fix post processing logic * fix data tests * remove detection task type * fix more tests * use separate normalization stats for image and pixel preds * add sensitivity parameters to one class pp * fix utils tests * fix utils tests * remove metric serialization test * remove normalization and thresholding args * set default post processor in base model * remove manual threshold test * fix remaining unit tests * add post_processor to CLI args * remove old post processing callbacks * remove comment * remove references to old normalization and thresholding callbacks * remove reshape in openvino inferencer * export lightning model directly * make collate accessible from dataset * fix tools integration tests * add update method to dataclasses * allow missing pred_score or anomaly_map in post processor * fix exportable centercrop conversion * fix model tests * test all models * fix efficient_ad * post processor as model arg * disable rkde tests * fix winclip export * add copyright notice * add validation for numpy anomaly map * fix getting started notebook * remove hardcoded path * update dataset notebooks * update model notebooks * fix logging notebooks * fix model notebook * Merge main and resolve conflicts (#2287) * Reduce rich methods (#2283) remove rich Signed-off-by: Ashwin Vaidya <[email protected]> * Refactor BaseThreshold to Threshold (#2278) * Refactor BaseThreshold to Threshold * Add relative import and add tests Signed-off-by: Samet Akcay <[email protected]> * Revert threshold.py to base.py Signed-off-by: Samet Akcay <[email protected]> * Revert threshold imports Signed-off-by: Samet Akcay <[email protected]> * Update tests/unit/metrics/threshold/test_threshold.py Co-authored-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> * Enable Ruff Rules: PLW1514 and PLR6201 (#2284) * pre-commit autoupdate Signed-off-by: Samet Akcay <[email protected]> * Enable preview feautures, and disable some of the updated features * Add missing copyrights Signed-off-by: Samet Akcay <[email protected]> * Ignore copyrights in notebooks * "PLW1514", # Add explicit encoding argument Signed-off-by: Samet Akcay <[email protected]> * "PLR6201", # Convert to set Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> Signed-off-by: Samet Akcay <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> * Rename Item to DatasetItem (#2289) * 📚 Add docstrings to dataclasses (#2292) * Reduce rich methods (#2283) remove rich Signed-off-by: Ashwin Vaidya <[email protected]> * Refactor BaseThreshold to Threshold (#2278) * Refactor BaseThreshold to Threshold * Add relative import and add tests Signed-off-by: Samet Akcay <[email protected]> * Revert threshold.py to base.py Signed-off-by: Samet Akcay <[email protected]> * Revert threshold imports Signed-off-by: Samet Akcay <[email protected]> * Update tests/unit/metrics/threshold/test_threshold.py Co-authored-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> * Enable Ruff Rules: PLW1514 and PLR6201 (#2284) * pre-commit autoupdate Signed-off-by: Samet Akcay <[email protected]> * Enable preview feautures, and disable some of the updated features * Add missing copyrights Signed-off-by: Samet Akcay <[email protected]> * Ignore copyrights in notebooks * "PLW1514", # Add explicit encoding argument Signed-off-by: Samet Akcay <[email protected]> * "PLR6201", # Convert to set Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> * Update docstring - FieldDescriptor * Add docstring to generic.py Signed-off-by: Samet Akcay <[email protected]> * Add docstring to numpy.py Signed-off-by: Samet Akcay <[email protected]> * Add docstring to torch.py Signed-off-by: Samet Akcay <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/generic.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Dick Ameln <[email protected]> * Update src/anomalib/dataclasses/torch.py Co-authored-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> Signed-off-by: Samet Akcay <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> Co-authored-by: Dick Ameln <[email protected]> * Refactor and restructure anomalib.data (#2302) * Move datamodules to datamodule sub-package * Move datamodules to datamodule sub-package * Split datamodules and datasets * Restructure dataclasses to data * Fix relative imports * Use absolute imports * Add datasets dir * Add relative imports for torch datasets * Update src/anomalib/data/datamodules/base/__init__.py Co-authored-by: Ashwin Vaidya <[email protected]> --------- Co-authored-by: Ashwin Vaidya <[email protected]> * Restructure unit tests and fix ruff issues (#2306) * Restructure data unit tests to follow the new data structure * Fix ruff issues * Add dataclass validators (#2307) * Add validators * Add depth validators to depth classes * Add image validators to depth classes * Add video validators to depth classes * Add numpy validators and update dataclasses * Run all the tests on the ci * Fix the tests * Created validator tests and added numpy video tests * Add numpy image tests * Add numpy depth tests * Add torch validator tests * Fix numpy validation tests * Convet private _validate methods to public validate method * Revert "Convet private _validate methods to public validate method" This reverts commit 47f183a8495b13085f2046ccd719eb4d3c4add48. * Convert private _validate methods to public validate method * Remove batch_size arg from validators * Remove anomaly_map from validators * Use validators as mixins * convert abstractmethods to static abstractmethods * Move pred-score computation to model implementations * Add missing pred_score implemenations in models * Fix the numpy validation tests Signed-off-by: Samet Akcay <[email protected]> * Fix visualization tests Signed-off-by: Samet Akcay <[email protected]> * Add numpy video validator mixin to numpy video item, and remove validation methods Signed-off-by: Samet Akcay <[email protected]> * Add np.bool_ to validate np label Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> * 🚀 Customisable Image Visualizer (#2334) * Add validators * Add depth validators to depth classes * Add image validators to depth classes * Add video validators to depth classes * Add numpy validators and update dataclasses * Run all the tests on the ci * Fix the tests * Created validator tests and added numpy video tests * Add numpy image tests * Add numpy depth tests * Add torch validator tests * Fix numpy validation tests * Convet private _validate methods to public validate method * Revert "Convet private _validate methods to public validate method" This reverts commit 47f183a8495b13085f2046ccd719eb4d3c4add48. * Convert private _validate methods to public validate method * Remove batch_size arg from validators * Remove anomaly_map from validators * Use validators as mixins * convert abstractmethods to static abstractmethods * Move pred-score computation to model implementations * Add missing pred_score implemenations in models * Fix the numpy validation tests Signed-off-by: Samet Akcay <[email protected]> * Fix visualization tests Signed-off-by: Samet Akcay <[email protected]> * Add numpy video validator mixin to numpy video item, and remove validation methods Signed-off-by: Samet Akcay <[email protected]> * Add np.bool_ to validate np label Signed-off-by: Samet Akcay <[email protected]> * add convert_to_title_case function to path utils * Add ImageVisualizer Signed-off-by: Samet Akcay <[email protected]> * Create image visualization functionals Signed-off-by: Samet Akcay <[email protected]> * Create image visualization class Signed-off-by: Samet Akcay <[email protected]> * Add a comment in visualize-item Signed-off-by: Samet Akcay <[email protected]> * Update functional.py * Add warning for invalid overlays Signed-off-by: Samet Akcay <[email protected]> * Add overlay_mask function with fill and contour modes Signed-off-by: Samet Akcay <[email protected]> * Moved `visualize_image_item` to a new module Signed-off-by: Samet Akcay <[email protected]> * Fix typo in visualizer Signed-off-by: Samet Akcay <[email protected]> * Pass mask color to visualize_mask Signed-off-by: Samet Akcay <[email protected]> * Fix tests Signed-off-by: Samet Akcay <[email protected]> * Modify item_visualizer Signed-off-by: Samet Akcay <[email protected]> * Update visualize item Signed-off-by: Samet Akcay <[email protected]> * Update the item visualization Signed-off-by: Samet Akcay <[email protected]> * Update the item visualization Signed-off-by: Samet Akcay <[email protected]> * Fix tests Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> Signed-off-by: Samet Akcay <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * Merge main the feature branch. (#2376) * Update timm requirement from <=1.0.7,>=1.0.7 to >=1.0.7,<=1.0.9 (#2274) * Update timm requirement from <=1.0.7,>=1.0.7 to >=1.0.7,<=1.0.9 Updates the requirements on [timm](https://github.com/huggingface/pytorch-image-models) to permit the latest version. - [Release notes](https://github.com/huggingface/pytorch-image-models/releases) - [Commits](https://github.com/huggingface/pytorch-image-models/compare/v1.0.7...v1.0.9) --- updated-dependencies: - dependency-name: timm dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> * Update pyproject.toml --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Samet Akcay <[email protected]> * 🐞Update `setuptools` requirement for PEP 660 support (#2320) Update setup tools Signed-off-by: Samet Akcay <[email protected]> * Fix transforms for draem, dsr and rkde (#2324) Signed-off-by: Blaz Rolih <[email protected]> * Add check before loading metrics data from checkpoint (#2323) Add check before loading from checkpoint Signed-off-by: Blaz Rolih <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * Add PIMO (#2329) * PIMO (#1726) * update Signed-off-by: jpcbertoldo <[email protected]> * test binclf curves numpy and numba and fixes Signed-off-by: jpcbertoldo <[email protected]> * correct som docstrings Signed-off-by: jpcbertoldo <[email protected]> * torch interface and tests Signed-off-by: jpcbertoldo <[email protected]> * torch interface and tests Signed-off-by: jpcbertoldo <[email protected]> * constants regrouped in dataclass as class vars Signed-off-by: jpcbertoldo <[email protected]> * result class was unneccesary for per_image_binclf_curve Signed-off-by: jpcbertoldo <[email protected]> * factorize function _get_threshs_minmax_linspace Signed-off-by: jpcbertoldo <[email protected]> * small docs fixes Signed-off-by: jpcbertoldo <[email protected]> * add pimo numpy version and test Signed-off-by: jpcbertoldo <[email protected]> * move validation Signed-off-by: jpcbertoldo <[email protected]> * add `shared_fpr_metric` option Signed-off-by: jpcbertoldo <[email protected]> * add pimo torch functional version and test Signed-off-by: jpcbertoldo <[email protected]> * add torchmetrics interface and test Signed-off-by: jpcbertoldo <[email protected]> * renames and put things in init Signed-off-by: jpcbertoldo <[email protected]> * validate inputs in result objects Signed-off-by: jpcbertoldo <[email protected]> * result objects to from dict and tests Signed-off-by: jpcbertoldo <[email protected]> * add save and load methods to result objects and test Signed-off-by: jpcbertoldo <[email protected]> * refactor validations and minor changes Signed-off-by: jpcbertoldo <[email protected]> * test result objects' properties Signed-off-by: jpcbertoldo <[email protected]> * minor refactors Signed-off-by: jpcbertoldo <[email protected]> * add missing docstrings Signed-off-by: jpcbertoldo <[email protected]> * minore vocabulary fix for consistency Signed-off-by: jpcbertoldo <[email protected]> * add per image scores statistics and test it Signed-off-by: jpcbertoldo <[email protected]> * refactor constants notation Signed-off-by: jpcbertoldo <[email protected]> * add stats tests and test it Signed-off-by: jpcbertoldo <[email protected]> * change the meaning of AUPIMO.num_thresh Signed-off-by: jpcbertoldo <[email protected]> * interface to format pairwise test results Signed-off-by: jpcbertoldo <[email protected]> * improve doc Signed-off-by: jpcbertoldo <[email protected]> * add optional `paths` to result objects and some minor fixes and refactors Signed-off-by: jpcbertoldo <[email protected]> * remove frozen from dataclasses and some done todos Signed-off-by: jpcbertoldo <[email protected]> * review headers Signed-off-by: jpcbertoldo <[email protected]> * doc modifs Signed-off-by: jpcbertoldo <[email protected]> * refactor `score_less_than_thresh` in `_binclf_one_curve_python` Signed-off-by: jpcbertoldo <[email protected]> * correct license comments Signed-off-by: jpcbertoldo <[email protected]> * fix doc Signed-off-by: jpcbertoldo <[email protected]> * numba as extra requirement Signed-off-by: jpcbertoldo <[email protected]> * refactor copyrights from jpcbertoldo Signed-off-by: jpcbertoldo <[email protected]> * remove from __future__ import annotations Signed-off-by: jpcbertoldo <[email protected]> * refactor validations names Signed-off-by: jpcbertoldo <[email protected]> * dedupe file path validation Signed-off-by: jpcbertoldo <[email protected]> * fix tests Signed-off-by: jpcbertoldo <[email protected]> * Add todo Signed-off-by: jpcbertoldo <[email protected]> * refactor enums Signed-off-by: jpcbertoldo <[email protected]> * only logger.warning Signed-off-by: jpcbertoldo <[email protected]> * refactor test imports Signed-off-by: jpcbertoldo <[email protected]> * refactor docs Signed-off-by: jpcbertoldo <[email protected]> * refactor some docs Signed-off-by: jpcbertoldo <[email protected]> * correct pre commit errors Signed-off-by: jpcbertoldo <[email protected]> * remove author tag Signed-off-by: jpcbertoldo <[email protected]> * add thrid party program Signed-off-by: jpcbertoldo <[email protected]> * Update src/anomalib/metrics/per_image/pimo.py * move HAS_NUMBA Signed-off-by: jpcbertoldo <[email protected]> * remove PIMOSharedFPRMetric Signed-off-by: jpcbertoldo <[email protected]> * make torchmetrics compute avg by dft Signed-off-by: jpcbertoldo <[email protected]> * pre-commit hooks corrections Signed-off-by: jpcbertoldo <[email protected]> * correct numpy.trapezoid Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * 🗑️ Remove numba (#2313) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * add third-party-programs.txt Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * 🗑️ Remove unused methods (#2315) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * remove all unused methods Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * PIMO: Port Numpy → Torch (#2316) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * remove all unused methods Signed-off-by: Ashwin Vaidya <[email protected]> * replace numpy with torch Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * 🔨Refactor methods across files (#2321) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * remove all unused methods Signed-off-by: Ashwin Vaidya <[email protected]> * replace numpy with torch Signed-off-by: Ashwin Vaidya <[email protected]> * refactor code Signed-off-by: Ashwin Vaidya <[email protected]> * refactor move functional inside update remove path from the metric * Add changes from comments Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * Remove model to model comparison (#2325) * rename to pimo Signed-off-by: Ashwin Vaidya <[email protected]> * minor refactor Signed-off-by: Ashwin Vaidya <[email protected]> * remove model to model comparison Signed-off-by: Ashwin Vaidya <[email protected]> * fix test Signed-off-by: Ashwin Vaidya <[email protected]> * PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * Minor refactor Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * Remove unused enums Signed-off-by: Ashwin Vaidya <[email protected]> * update doc strings Signed-off-by: Ashwin Vaidya <[email protected]> * update param names Signed-off-by: Ashwin Vaidya <[email protected]> * add aupimo basic usage tutorial notebook (#2330) * add aupimo basic usage tutorial notebook Signed-off-by: jpcbertoldo <[email protected]> * update scipy import Signed-off-by: jpcbertoldo <[email protected]> * add cite us Signed-off-by: jpcbertoldo <[email protected]> * minor Signed-off-by: jpcbertoldo <[email protected]> * modify texts and add illustration Signed-off-by: jpcbertoldo <[email protected]> * udpate working dir Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Signed-off-by: Ashwin Vaidya <[email protected]> Co-authored-by: Joao P C Bertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * Makes batch size dynamic (#2339) Made batch dimension of ONNX export dynamic when specifying input shape. * Add pimo tutorial advanced i (fixed) (#2336) * uset all padim features to make it deterministic Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced i Signed-off-by: jpcbertoldo <[email protected]> * update readme Signed-off-by: jpcbertoldo <[email protected]> * modify changelog Signed-off-by: jpcbertoldo <[email protected]> * correct readme Signed-off-by: jpcbertoldo <[email protected]> * correct again Signed-off-by: jpcbertoldo <[email protected]> * minor corrections Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> * Pimo tutorials/02 advanced ii (#2347) * uset all padim features to make it deterministic Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced i Signed-off-by: jpcbertoldo <[email protected]> * update readme Signed-off-by: jpcbertoldo <[email protected]> * modify changelog Signed-off-by: jpcbertoldo <[email protected]> * correct readme Signed-off-by: jpcbertoldo <[email protected]> * correct again Signed-off-by: jpcbertoldo <[email protected]> * minor corrections Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced ii (pimo curve and integration bounds) Signed-off-by: jpcbertoldo <[email protected]> * fix links Signed-off-by: jpcbertoldo <[email protected]> * correct change log Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> * Create epic.yaml * 🔨 Update the issue templates (#2363) * Update epic.yaml * Update epic.yaml * Update epic.yaml * Update epic.yaml * Update task.yaml * Create user_story.yaml * Update epic.yaml * Pimo tutorials/03 advanced iii (#2348) * add aupimo notebook advanced iii (aupimo score of a random model) Signed-off-by: jpcbertoldo <[email protected]> * add cite us Signed-off-by: jpcbertoldo <[email protected]> * update notebooks readme Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * 🔨 Deprecate try import and replace it with Lightning's package_available (#2373) Replace try_import with lightnings package_available function Signed-off-by: Samet Akcay <[email protected]> * Refactor folder3d to avoid complex-structure (C901) issue (#2185) * Refactored-make_folder3d_dataset-ruff-error-C901 (#1926) Signed-off-by: sahusiddharth <[email protected]> * Simplify folder 3d dataset (#2184) --------- Signed-off-by: sahusiddharth <[email protected]> Co-authored-by: Siddharth Sahu <[email protected]> --------- Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: Samet Akcay <[email protected]> Signed-off-by: Blaz Rolih <[email protected]> Signed-off-by: jpcbertoldo <[email protected]> Signed-off-by: Ashwin Vaidya <[email protected]> Signed-off-by: sahusiddharth <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Blaž Rolih <[email protected]> Co-authored-by: Ashwin Vaidya <[email protected]> Co-authored-by: Joao P C Bertoldo <[email protected]> Co-authored-by: Marcus Pertlwieser <[email protected]> Co-authored-by: Siddharth Sahu <[email protected]> * Metrics redesign (#2326) * refactor metrics callback * add Evaluator class * remove unused import * add AnomalibMetric base class * cleanup * add create_anomalib_metric function * use new AnomalibMetric class * verify keys when updating metric * use anomalib PR curve for f1max * replace evaluator with metrics arg * revert removing exportable transform method * fix unit tests * add kwargs to lightning models * fix pre-commit issues * remove kwargs key from update config * add Evaluator to metrics init * set default evaluator for image-only models * fix cfa tests * fix model tests * update changelog * remove tests of deprecated callback modules * fix engine tests * fix 201 notebook * fix 600 notebook * add default evaluator to fastflow * revert cfa changes and fix pred score computation * simplify evaluator argument * validate metrics in evaluator * remove unused import * fix pred_label shape validation * fix method name * fix pred_label validator * update validator tests * fix method name in fastflow * add AnomalibMetric functionality to PIMO * add optional default fields and implement for pimo * update aupimo notebooks * use explicit args in lightning model signature * remove kwargs from evaluator * add _resolve_evaluator method * fix config upgrade test * do not force pypi install in mlflow notebook * do not force pypi install in mlflow notebook * 🚀 Add `PreProcessor` to `AnomalyModule` (#2358) * Created pre-processor Signed-off-by: Samet Akcay <[email protected]> * Rename transforms to transform in pre-processor Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datamodules Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datasets Signed-off-by: Samet Akcay <[email protected]> * Remove setup_transforms from Engine Signed-off-by: Samet Akcay <[email protected]> * Add preprocessor to AnomalyModule and models Signed-off-by: Samet Akcay <[email protected]> * Fix tests Signed-off-by: Samet Akcay <[email protected]> * Remove self._transform from AnomalyModule Signed-off-by: Samet Akcay <[email protected]> * revert transforms in datasets Signed-off-by: Samet Akcay <[email protected]> * fix efficient_ad and engine.config tests Signed-off-by: Samet Akcay <[email protected]> * Update the upgrade tests Signed-off-by: Samet Akcay <[email protected]> * Revert on_load_checkpoint hook to AnomalyModule Signed-off-by: Samet Akcay <[email protected]> * Remove exportable transform from anomaly module and move to pre-processor Signed-off-by: Samet Akcay <[email protected]> * Add pre-processor to the model graph Signed-off-by: Samet Akcay <[email protected]> * Add docstring to pre-processor class Signed-off-by: Samet Akcay <[email protected]> * Fix win-clip tests Signed-off-by: Samet Akcay <[email protected]> * Update notebooks Signed-off-by: Samet Akcay <[email protected]> * Split the forward logic and move the training to model hooks Signed-off-by: Samet Akcay <[email protected]> * Set data transforms from preprocessor Signed-off-by: Samet Akcay <[email protected]> * Update the docstrings Signed-off-by: Samet Akcay <[email protected]> * Get stage transforms in setup of pre-processor Signed-off-by: Samet Akcay <[email protected]> * Revert data config yaml files Signed-off-by: Samet Akcay <[email protected]> * Revert datamodules Signed-off-by: Samet Akcay <[email protected]> * Revert datasets Signed-off-by: Samet Akcay <[email protected]> * Revert notebooks Signed-off-by: Samet Akcay <[email protected]> * remove padim preprocessor Signed-off-by: Samet Akcay <[email protected]> * Update the setup logic in pre-processor Signed-off-by: Samet Akcay <[email protected]> * Revert datamodules Signed-off-by: Samet Akcay <[email protected]> * Set datamodule transforms property from preprocessor Signed-off-by: Samet Akcay <[email protected]> * Revert v1 upgrade tool Signed-off-by: Samet Akcay <[email protected]> * Fix aupimo notebooks Signed-off-by: Samet Akcay <[email protected]> * Add pre-processor unit tests Signed-off-by: Samet Akcay <[email protected]> * Increase the test coverage for PreProcessor Signed-off-by: Samet Akcay <[email protected]> * Add option to disable pre-processor Signed-off-by: Samet Akcay <[email protected]> * Split setup_transforms to setup_datamodule_transforms and setup_dataloader_transforms Signed-off-by: Samet Akcay <[email protected]> * Replace batch.update with in-place batch transforms Signed-off-by: Samet Akcay <[email protected]> * Remove logger.warning when the default pre-processor is used Signed-off-by: Samet Akcay <[email protected]> * Use predict-transforms explicitly Signed-off-by: Samet Akcay <[email protected]> * remove pre-processor and configure_transforms from export mixin Signed-off-by: Samet Akcay <[email protected]> * Rename set_datamodule_transform to set_datamodule_stage_transform Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datamodules Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datamodules Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datamodules Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datamodules Signed-off-by: Samet Akcay <[email protected]> * Remove transforms from datamodules Signed-off-by: Samet Akcay <[email protected]> * Remove transform related keys from data configs Signed-off-by: Samet Akcay <[email protected]> * update preprocessor tests Signed-off-by: Samet Akcay <[email protected]> * Remove setup method from the model implementations Signed-off-by: Samet Akcay <[email protected]> * Remove image size from datamodules in jupyter notebooks Signed-off-by: Samet Akcay <[email protected]> * Modify folder notebook to acccess the batch from dataset not dataloader Signed-off-by: Samet Akcay <[email protected]> * Create resolve preprocessor method Signed-off-by: Samet Akcay <[email protected]> * Return if is Signed-off-by: Samet Akcay <[email protected]> * Rename self.exportable_transform to self.export_transform Signed-off-by: Samet Akcay <[email protected]> * Remove set_datamodule_transforms Signed-off-by: Samet Akcay <[email protected]> * remove hooks as they are not needed anymore Signed-off-by: Samet Akcay <[email protected]> * Fix pre-processor tests Signed-off-by: Samet Akcay <[email protected]> * remove transform getter util function Signed-off-by: Samet Akcay <[email protected]> * Fix transform dict to setup datamodule transforms Signed-off-by: Samet Akcay <[email protected]> * Fix Fastflow notebook Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> * Update v2 with the recent changes on main (#2421) * Update timm requirement from <=1.0.7,>=1.0.7 to >=1.0.7,<=1.0.9 (#2274) * Update timm requirement from <=1.0.7,>=1.0.7 to >=1.0.7,<=1.0.9 Updates the requirements on [timm](https://github.com/huggingface/pytorch-image-models) to permit the latest version. - [Release notes](https://github.com/huggingface/pytorch-image-models/releases) - [Commits](https://github.com/huggingface/pytorch-image-models/compare/v1.0.7...v1.0.9) --- updated-dependencies: - dependency-name: timm dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> * Update pyproject.toml --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Samet Akcay <[email protected]> * 🐞Update `setuptools` requirement for PEP 660 support (#2320) Update setup tools Signed-off-by: Samet Akcay <[email protected]> * Fix transforms for draem, dsr and rkde (#2324) Signed-off-by: Blaz Rolih <[email protected]> * Add check before loading metrics data from checkpoint (#2323) Add check before loading from checkpoint Signed-off-by: Blaz Rolih <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * Add PIMO (#2329) * PIMO (#1726) * update Signed-off-by: jpcbertoldo <[email protected]> * test binclf curves numpy and numba and fixes Signed-off-by: jpcbertoldo <[email protected]> * correct som docstrings Signed-off-by: jpcbertoldo <[email protected]> * torch interface and tests Signed-off-by: jpcbertoldo <[email protected]> * torch interface and tests Signed-off-by: jpcbertoldo <[email protected]> * constants regrouped in dataclass as class vars Signed-off-by: jpcbertoldo <[email protected]> * result class was unneccesary for per_image_binclf_curve Signed-off-by: jpcbertoldo <[email protected]> * factorize function _get_threshs_minmax_linspace Signed-off-by: jpcbertoldo <[email protected]> * small docs fixes Signed-off-by: jpcbertoldo <[email protected]> * add pimo numpy version and test Signed-off-by: jpcbertoldo <[email protected]> * move validation Signed-off-by: jpcbertoldo <[email protected]> * add `shared_fpr_metric` option Signed-off-by: jpcbertoldo <[email protected]> * add pimo torch functional version and test Signed-off-by: jpcbertoldo <[email protected]> * add torchmetrics interface and test Signed-off-by: jpcbertoldo <[email protected]> * renames and put things in init Signed-off-by: jpcbertoldo <[email protected]> * validate inputs in result objects Signed-off-by: jpcbertoldo <[email protected]> * result objects to from dict and tests Signed-off-by: jpcbertoldo <[email protected]> * add save and load methods to result objects and test Signed-off-by: jpcbertoldo <[email protected]> * refactor validations and minor changes Signed-off-by: jpcbertoldo <[email protected]> * test result objects' properties Signed-off-by: jpcbertoldo <[email protected]> * minor refactors Signed-off-by: jpcbertoldo <[email protected]> * add missing docstrings Signed-off-by: jpcbertoldo <[email protected]> * minore vocabulary fix for consistency Signed-off-by: jpcbertoldo <[email protected]> * add per image scores statistics and test it Signed-off-by: jpcbertoldo <[email protected]> * refactor constants notation Signed-off-by: jpcbertoldo <[email protected]> * add stats tests and test it Signed-off-by: jpcbertoldo <[email protected]> * change the meaning of AUPIMO.num_thresh Signed-off-by: jpcbertoldo <[email protected]> * interface to format pairwise test results Signed-off-by: jpcbertoldo <[email protected]> * improve doc Signed-off-by: jpcbertoldo <[email protected]> * add optional `paths` to result objects and some minor fixes and refactors Signed-off-by: jpcbertoldo <[email protected]> * remove frozen from dataclasses and some done todos Signed-off-by: jpcbertoldo <[email protected]> * review headers Signed-off-by: jpcbertoldo <[email protected]> * doc modifs Signed-off-by: jpcbertoldo <[email protected]> * refactor `score_less_than_thresh` in `_binclf_one_curve_python` Signed-off-by: jpcbertoldo <[email protected]> * correct license comments Signed-off-by: jpcbertoldo <[email protected]> * fix doc Signed-off-by: jpcbertoldo <[email protected]> * numba as extra requirement Signed-off-by: jpcbertoldo <[email protected]> * refactor copyrights from jpcbertoldo Signed-off-by: jpcbertoldo <[email protected]> * remove from __future__ import annotations Signed-off-by: jpcbertoldo <[email protected]> * refactor validations names Signed-off-by: jpcbertoldo <[email protected]> * dedupe file path validation Signed-off-by: jpcbertoldo <[email protected]> * fix tests Signed-off-by: jpcbertoldo <[email protected]> * Add todo Signed-off-by: jpcbertoldo <[email protected]> * refactor enums Signed-off-by: jpcbertoldo <[email protected]> * only logger.warning Signed-off-by: jpcbertoldo <[email protected]> * refactor test imports Signed-off-by: jpcbertoldo <[email protected]> * refactor docs Signed-off-by: jpcbertoldo <[email protected]> * refactor some docs Signed-off-by: jpcbertoldo <[email protected]> * correct pre commit errors Signed-off-by: jpcbertoldo <[email protected]> * remove author tag Signed-off-by: jpcbertoldo <[email protected]> * add thrid party program Signed-off-by: jpcbertoldo <[email protected]> * Update src/anomalib/metrics/per_image/pimo.py * move HAS_NUMBA Signed-off-by: jpcbertoldo <[email protected]> * remove PIMOSharedFPRMetric Signed-off-by: jpcbertoldo <[email protected]> * make torchmetrics compute avg by dft Signed-off-by: jpcbertoldo <[email protected]> * pre-commit hooks corrections Signed-off-by: jpcbertoldo <[email protected]> * correct numpy.trapezoid Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * 🗑️ Remove numba (#2313) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * add third-party-programs.txt Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * 🗑️ Remove unused methods (#2315) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * remove all unused methods Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * PIMO: Port Numpy → Torch (#2316) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * remove all unused methods Signed-off-by: Ashwin Vaidya <[email protected]> * replace numpy with torch Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * 🔨Refactor methods across files (#2321) * remove numba Signed-off-by: Ashwin Vaidya <[email protected]> * fix pre-commit checks Signed-off-by: Ashwin Vaidya <[email protected]> * remove all unused methods Signed-off-by: Ashwin Vaidya <[email protected]> * replace numpy with torch Signed-off-by: Ashwin Vaidya <[email protected]> * refactor code Signed-off-by: Ashwin Vaidya <[email protected]> * refactor move functional inside update remove path from the metric * Add changes from comments Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * Remove model to model comparison (#2325) * rename to pimo Signed-off-by: Ashwin Vaidya <[email protected]> * minor refactor Signed-off-by: Ashwin Vaidya <[email protected]> * remove model to model comparison Signed-off-by: Ashwin Vaidya <[email protected]> * fix test Signed-off-by: Ashwin Vaidya <[email protected]> * PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * Minor refactor Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * Remove unused enums Signed-off-by: Ashwin Vaidya <[email protected]> * update doc strings Signed-off-by: Ashwin Vaidya <[email protected]> * update param names Signed-off-by: Ashwin Vaidya <[email protected]> * add aupimo basic usage tutorial notebook (#2330) * add aupimo basic usage tutorial notebook Signed-off-by: jpcbertoldo <[email protected]> * update scipy import Signed-off-by: jpcbertoldo <[email protected]> * add cite us Signed-off-by: jpcbertoldo <[email protected]> * minor Signed-off-by: jpcbertoldo <[email protected]> * modify texts and add illustration Signed-off-by: jpcbertoldo <[email protected]> * udpate working dir Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Signed-off-by: Ashwin Vaidya <[email protected]> Co-authored-by: Joao P C Bertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * Makes batch size dynamic (#2339) Made batch dimension of ONNX export dynamic when specifying input shape. * Add pimo tutorial advanced i (fixed) (#2336) * uset all padim features to make it deterministic Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced i Signed-off-by: jpcbertoldo <[email protected]> * update readme Signed-off-by: jpcbertoldo <[email protected]> * modify changelog Signed-off-by: jpcbertoldo <[email protected]> * correct readme Signed-off-by: jpcbertoldo <[email protected]> * correct again Signed-off-by: jpcbertoldo <[email protected]> * minor corrections Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> * Pimo tutorials/02 advanced ii (#2347) * uset all padim features to make it deterministic Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced i Signed-off-by: jpcbertoldo <[email protected]> * update readme Signed-off-by: jpcbertoldo <[email protected]> * modify changelog Signed-off-by: jpcbertoldo <[email protected]> * correct readme Signed-off-by: jpcbertoldo <[email protected]> * correct again Signed-off-by: jpcbertoldo <[email protected]> * minor corrections Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced ii (pimo curve and integration bounds) Signed-off-by: jpcbertoldo <[email protected]> * fix links Signed-off-by: jpcbertoldo <[email protected]> * correct change log Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> * Create epic.yaml * 🔨 Update the issue templates (#2363) * Update epic.yaml * Update epic.yaml * Update epic.yaml * Update epic.yaml * Update task.yaml * Create user_story.yaml * Update epic.yaml * Pimo tutorials/03 advanced iii (#2348) * add aupimo notebook advanced iii (aupimo score of a random model) Signed-off-by: jpcbertoldo <[email protected]> * add cite us Signed-off-by: jpcbertoldo <[email protected]> * update notebooks readme Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * 🔨 Deprecate try import and replace it with Lightning's package_available (#2373) Replace try_import with lightnings package_available function Signed-off-by: Samet Akcay <[email protected]> * Refactor folder3d to avoid complex-structure (C901) issue (#2185) * Refactored-make_folder3d_dataset-ruff-error-C901 (#1926) Signed-off-by: sahusiddharth <[email protected]> * Simplify folder 3d dataset (#2184) --------- Signed-off-by: sahusiddharth <[email protected]> Co-authored-by: Siddharth Sahu <[email protected]> * 🚀 Add datumaro annotation dataloader (#2377) * Add datumaro annotation dataloader Signed-off-by: Ashwin Vaidya <[email protected]> * Update changelog Signed-off-by: Ashwin Vaidya <[email protected]> * Add examples Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * Pimo tutorials/04 advanced iv (#2352) * add notebook 701e_aupimo_advanced_iv on load/save and statistical comparisons Signed-off-by: jpcbertoldo <[email protected]> * make `AUPIMOResult.num_thresholds` optional Signed-off-by: jpcbertoldo <[email protected]> * add aupimo notebook advanced iv (load/save and statistical tests) Signed-off-by: jpcbertoldo <[email protected]> * simplify cite us and mention intal Signed-off-by: jpcbertoldo <[email protected]> * fix readme Signed-off-by: jpcbertoldo <[email protected]> --------- Signed-off-by: jpcbertoldo <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * 🐞 Defer OpenVINO import to avoid unnecessary warnings (#2385) * Fix openvino import issue Signed-off-by: Samet Akcay <[email protected]> * Fix pre-commit issues Signed-off-by: Samet Akcay <[email protected]> --------- Signed-off-by: Samet Akcay <[email protected]> * 🚀 Add VLM based Anomaly Model (#2344) * [Draft] Llm on (#2165) * Add TaskType Explanation Signed-off-by: Bepitic <[email protected]> * Add llm model Signed-off-by: Bepitic <[email protected]> * add ollama Signed-off-by: Bepitic <[email protected]> * better description for descr in title Signed-off-by: Bepitic <[email protected]> * add text of llm into imageResult visualization * add text of llm into imageResult visualization Signed-off-by: Bepitic <[email protected]> * latest changes Signed-off-by: Bepitic <[email protected]> * add wip llava/llava_next Signed-off-by: Bepitic <[email protected]> * add init Signed-off-by: Bepitic <[email protected]> * add text of llm into imageResult visualization Signed-off-by: Bepitic <[email protected]> * latest changes Signed-off-by: Bepitic <[email protected]> * upd Lint Signed-off-by: Bepitic <[email protected]> * fix visualization with description Signed-off-by: Bepitic <[email protected]> * show the images every batch Signed-off-by: Bepitic <[email protected]> * fix docstring and error management Signed-off-by: Bepitic <[email protected]> * Add compatibility for TaskType.EXPLANATION. Signed-off-by: Bepitic <[email protected]> * Remove, show in the engine-Visualization. * fix visualization and llm openai multishot. * fix Circular import problem * Add HugginFace To LLavaNext Signed-off-by: Bepitic <[email protected]> --------- Signed-off-by: Bepitic <[email protected]> * 🔨 Scaffold for refactor (#2340) * initial scafold Signed-off-by: Ashwin Vaidya <[email protected]> * Apply PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * rename dir Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * Add ChatGPT (#2341) * initial scafold Signed-off-by: Ashwin Vaidya <[email protected]> * Apply PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * rename dir Signed-off-by: Ashwin Vaidya <[email protected]> * delete llm_ollama Signed-off-by: Ashwin Vaidya <[email protected]> * Add ChatGPT Signed-off-by: Ashwin Vaidya <[email protected]> * Add ChatGPT Signed-off-by: Ashwin Vaidya <[email protected]> * Remove LLM model Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * Add Huggingface (#2343) * initial scafold Signed-off-by: Ashwin Vaidya <[email protected]> * Apply PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * rename dir Signed-off-by: Ashwin Vaidya <[email protected]> * delete llm_ollama Signed-off-by: Ashwin Vaidya <[email protected]> * Add ChatGPT Signed-off-by: Ashwin Vaidya <[email protected]> * Add ChatGPT Signed-off-by: Ashwin Vaidya <[email protected]> * Remove LLM model Signed-off-by: Ashwin Vaidya <[email protected]> * Add transformers Signed-off-by: Ashwin Vaidya <[email protected]> * Remove llava Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * 🔨 Minor Refactor (#2345) Refactor Signed-off-by: Ashwin Vaidya <[email protected]> * undo changes Signed-off-by: Ashwin Vaidya <[email protected]> * undo changes Signed-off-by: Ashwin Vaidya <[email protected]> * undo changes to image.py Signed-off-by: Ashwin Vaidya <[email protected]> * Add explanation visualizer (#2351) * Add explanation visualizer Signed-off-by: Ashwin Vaidya <[email protected]> * bug-fix Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * 🔨 Allow setting API keys from env (#2353) Allow setting API keys from env Signed-off-by: Ashwin Vaidya <[email protected]> * 🧪 Add tests (#2355) * Add tests Signed-off-by: Ashwin Vaidya <[email protected]> * remove explanation task type Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Ashwin Vaidya <[email protected]> * minor fixes Signed-off-by: Ashwin Vaidya <[email protected]> * Update changelog Signed-off-by: Ashwin Vaidya <[email protected]> * Fix tests Signed-off-by: Ashwin Vaidya <[email protected]> * Address PR comments Signed-off-by: Ashwin Vaidya <[email protected]> * update name Signed-off-by: Ashwin Vaidya <[email protected]> * Update src/anomalib/models/image/vlm_ad/lightning_model.py Co-authored-by: Samet Akcay <[email protected]> * update name Signed-off-by: Ashwin Vaidya <[email protected]> --------- Signed-off-by: Bepitic <[email protected]> Signed-off-by: Ashwin Vaidya <[email protected]> Co-authored-by: Paco <[email protected]> Co-authored-by: Samet Akcay <[email protected]> * Add ensembling methods for tiling to Anomalib (#1226) * Fixed broken links in readme * Fixed inference command in readme * Add tiling for ensemble * Add tests for tiling for ensemble * Moved ensemble tiler to separate file * Modify padim config for ensemble * Add tiling to dataset * Revert changes to train * Add tiling to collate fn * Fix tiling in collate * Change val. function to protected * Add tile number logic * Move collate fn to separate file * Update tests for tiler * Add training loop for ensemble * Add model input size setup * Move ens config to separate file * Revert mvtec modifications * Remove unused imports in mvtec * Add batch adjustment to untiling * Add predict step to ensemble * Add comment and docstring to tile joining function * Move tile joining to separate function * Add joining for all tiled data * Add joining for all box data * Refactor pred. joining as modular class * Fix box joining * Add label and score joining * Add ensemble visualization * Add end of predict hook * Add metric computation * Fix metric thresholds * Add removal of individual visualization * Add demo1 notebook * Add docstrings and cleanup * Add memory benchmark * Add modular class for storing predictions * Add metric to separate class * Refactor to support prediction data class * Rename predictions class * Add filesystem predictions class * Add resized predictions class * Fix joiner for classification task * Add page peak to memory benchmark * Add global stats calculation * Add docstrings to stats calculation * Refactor joiner for pipeline * Refactor stats into pipeline * Refactor metrics as pipeline block * Refactor visualization as pipeline block * Refactor postprocessing into a pipeline * Add normalization and thresholding on joined predictions * Refactor tiler to accept config file * Add smoothing of tile joins. * Refactor ensemble datamodule preparation * Remove unused changes in dataloader * Fix metric configuration * Fix box coordinates in joining * Add ensemble callbacks preparation function * Fix box prediction bug in postprocess * Add ensemble params to config * Refactor postprocessing. * Refactor post-processing * Refactor predictions * Code cleanup * Optimize prediction storage * Make join smoothing configurable * Cleanup before PR * Fix stats pipeline * Fix logging strings * Fix memory benchmark * Fix tiler issues * Fix import issues * Fix naming in metrics and visualization * Fix cyclic import * Make logging lazy * Refactor tiler tests * Added collate tiling tests * Added ensemble helper functions tests * Refactor for dummy ensemble config * Refactor for dummy base config * Add tests for prediction storage * Add tests for prediction joiner * Add tests for visualization * Fix small issues in tests * Add metrics test * Add post-processing tests * Fix tiler to work with different instance * Move seed setting inside train loop * Fix pipeline stats bug * Rename ensemble config fixture * Add pipeline tests * Fix config in pipeline tests * Add training script test * Fix types and docstrings * Move and rename to tiled_ensemble * Fix bug in label joining. * Remove memory benchmark * Cleanup files * Fix metrics setup * Rename collate function * Add license to test files * Rename fixtures * Add more comments to tiled ensemble training * Add start of training log message * Refactor tiler to have explicit arguments * Refactor pred. storage to have explicit arguments * Refactor metrics to have explicit arguments * Refactor visualization to have explicit arguments * Refactor post-processing to have explicit arguments * Sort imports * Add test ensemble script * Fix join smoothing bug * Add more documentation to doc-strings * Remove unused import * Add brief tiled ensemble documentation * Update typehints * Make training args more clear * Revert addition of no threshold option. * Refactor normalization and threshold config * Remove tiled ensemble from docs index * Add comments to clarify parts of ensemble config * Improve ensemble config comments * Add num_tiles attribute to tiler. * Fix metrics process docstring * Fix visualization bug and cover with test * Replace strings with enum * Improve comments in joiner. * Fix bug when model doesn't have anomaly maps. * Improve docstrings (types, clarify). * Fix visualization tests * Fix dict membership checks * Add saving of ensemble config file * Update test script args * Cover test script with tests * Update export warning * Fix case when no test or val data * Improve documentation images * Add images for documentation * Add codacy suggestion * Refactor joiner to single class * Refactor storage names and config * Update normalization and threshold stage names * Add transforms independent input size to models Signed-off-by: blaz-r <[email protected]> * Make collate function a datamodule attribute Signed-off-by: blaz-r <[email protected]> * Refactor tiled ensemble train into pipeline step Signed-off-by: blaz-r <[email protected]> * Refactor tiled ensemble prediction into pipeline step Signed-off-by: blaz-r <[email protected]> * Refactor tiled ensemble merging into pipeline step Signed-off-by: blaz-r <[email protected]> * Refactor tiled ensemble seam smoothing into pipeline step Signed-off-by: blaz-r <[email protected]> * Refactor tiled stats calculation into pipeline step Signed-off-by: blaz-r <[email protected]> * Fix ckpt loading when predicting on test set. Signed-off-by: blaz-r <[email protected]> * Add logging and add tqdm to pipeline steps. Signed-off-by: blaz-r <[email protected]> * Refactor normalization pipeline step Signed-off-by: blaz-r <[email protected]> * Refactor thresholding into new pipeline job * Fix transforms issue when predicting with dataloader * Add visualization as new pipeline step * Add metrics as new pipeline step * Format the code and address some lint problems Signed-off-by: Blaz Rolih <[email protected]> * Add code to skip test if test split is none Signed-off-by: Blaz Rolih <[email protected]> * Add accelerator to metrics and smoothing Signed-off-by: Blaz Rolih <[email protected]> * Make threshold acq helper function and add to threshold to metrics Signed-off-by: Blaz Rolih <[email protected]> * Make a separate test pipeline Signed-off-by: Blaz Rolih <[email protected]> * Restructure tiled ensemble files into directories Signed-off-by: Blaz Rolih <[email protected]> * Pipeline code cleanup Signed-off-by: Blaz Rolih <[email protected]> * Remove old tiled ensemble files Signed-off-by: blaz-r <[email protected]> * Remove old post processing files Signed-off-by: blaz-r <[email protected]> * Fix sigma value read in smoothing Signed-off-by: blaz-r <[email protected]> * Update stats calc and normalization Signed-off-by: blaz-r <[email protected]> * Update args naming convention Signed-off-by: blaz-r <[email protected]> …
1 parent bcc0b43 commit 084331d

File tree

665 files changed

+49417
-27075
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

665 files changed

+49417
-27075
lines changed

.ci/ipas_default.config

-408
This file was deleted.

.ci/trivy.yaml

-11
This file was deleted.

.gitattributes

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
* text=auto eol=lf
33
*.{cmd,[cC][mM][dD]} text eol=crlf
44
*.{bat,[bB][aA][tT]} text eol=crlf
5-
65
# Ignore *ipynb files to detect the language.
76
# This is because GitHub misdetects the repo language when ipynb files are included.
8-
*.ipynb linguist-detectable=false
7+
*.ipynb filter=lfs diff=lfs merge=lfs -text

.github/CODEOWNERS

+6-8
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@
1515
/docs @samet-akcay
1616

1717
# Notebooks
18-
/notebooks/000_getting_started @samet-akcay
19-
/notebooks/100_datamodules @djdameln
20-
/notebooks/200_models @samet-akcay
21-
/notebooks/300_benchmarking @ashwinvaidya17
22-
/notebooks/400_openvino @samet-akcay
23-
/notebooks/500_use_cases @paularamo
24-
/notebooks/README.md @samet-akcay
18+
/examples/notebooks/000_getting_started @samet-akcay
19+
/examples/notebooks/100_datamodules @djdameln
20+
/examples/notebooks/200_models @samet-akcay
21+
/examples/notebooks/300_benchmarking @ashwinvaidya17
22+
/examples/notebooks/400_openvino @samet-akcay
23+
/examples/notebooks/README.md @samet-akcay
2524

2625
# Requirements
2726
/requirements/ @samet-akcay @ashwinvaidya17 @djdameln
@@ -41,7 +40,6 @@
4140
/src/anomalib/models/padim @samet-akcay
4241
/src/anomalib/models/patchcore @djdameln
4342
/src/anomalib/models/reverse_distillation @ashwinvaidya17
44-
/src/anomalib/models/rkde @djdameln
4543
/src/anomalib/models/stfpm @samet-akcay
4644

4745
/src/anomalib/post_processing @ashwinvaidya17 @djdameln
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Pre-commit Quality Action
2+
#
3+
# This composite action executes pre-commit hooks for code quality checks
4+
# with configurable Python and Node.js environments.
5+
#
6+
# Key Features:
7+
# - Pre-commit hook execution
8+
# - Environment configuration
9+
# - Cache management
10+
# - Multi-language support
11+
# - Dependency handling
12+
#
13+
# Process Stages:
14+
# 1. Environment Setup:
15+
# - Python installation
16+
# - Node.js installation
17+
# - Cache configuration
18+
#
19+
# 2. Dependency Management:
20+
# - Pre-commit installation
21+
# - Hook installation
22+
# - Cache restoration
23+
#
24+
# 3. Quality Checks:
25+
# - Hook execution
26+
# - Error reporting
27+
# - Result caching
28+
#
29+
# Required Inputs:
30+
# - python-version: Python version to use
31+
# - node-version: Node.js version to use (defaults to "20")
32+
#
33+
# Example Usage:
34+
# steps:
35+
# - uses: ./.github/actions/code-quality/pre-commit
36+
# with:
37+
# python-version: "3.11"
38+
#
39+
# Note: Requires configured pre-commit hooks in repository
40+
41+
name: "Pre-commit Quality Checks"
42+
description: "Runs pre-commit hooks for code quality checks"
43+
44+
inputs:
45+
python-version:
46+
description: "Python version to use"
47+
required: false
48+
default: "3.10"
49+
node-version:
50+
description: "Node.js version to use"
51+
required: false
52+
default: "20"
53+
skip:
54+
description: "Comma-separated list of hooks to skip"
55+
required: false
56+
default: ""
57+
cache:
58+
description: "Whether to use caching"
59+
required: false
60+
default: "true"
61+
62+
outputs:
63+
cache-hit:
64+
description: "Whether the cache was hit"
65+
value: ${{ steps.pre-commit-cache.outputs.cache-hit }}
66+
67+
runs:
68+
using: composite
69+
steps:
70+
# Set up Python environment with caching
71+
- name: Set up Python
72+
uses: actions/setup-python@v5
73+
with:
74+
python-version: ${{ inputs.python-version }}
75+
cache: pip # Enable pip caching
76+
cache-dependency-path: .pre-commit-config.yaml
77+
78+
# Set up Node.js for JavaScript-related hooks
79+
- name: Set up Node.js
80+
uses: actions/setup-node@v4
81+
with:
82+
node-version: ${{ inputs.node-version }}
83+
84+
# Install pre-commit with latest pip
85+
- name: Install pre-commit
86+
shell: bash
87+
run: |
88+
python -m pip install --upgrade pip
89+
pip install pre-commit
90+
91+
# Cache pre-commit hooks to speed up subsequent runs
92+
- name: Cache pre-commit hooks
93+
if: inputs.cache == 'true'
94+
id: pre-commit-cache
95+
uses: actions/cache@v3
96+
with:
97+
path: ~/.cache/pre-commit
98+
# Cache key includes Python and Node versions to ensure correct environment
99+
key: pre-commit-${{ runner.os }}-py${{ inputs.python-version }}-node${{ inputs.node-version }}-${{ hashFiles('.pre-commit-config.yaml') }}
100+
restore-keys: |
101+
pre-commit-${{ runner.os }}-py${{ inputs.python-version }}-node${{ inputs.node-version }}-
102+
pre-commit-${{ runner.os }}-py${{ inputs.python-version }}-
103+
104+
# Execute pre-commit checks with optional hook skipping
105+
- name: Run pre-commit checks
106+
shell: bash
107+
env:
108+
SKIP: ${{ inputs.skip }}
109+
run: |
110+
if [ -n "$SKIP" ]; then
111+
# Run specific hooks if skip parameter is provided
112+
pre-commit run --all-files --hook-stage="$SKIP"
113+
else
114+
# Run all hooks if no skip parameter
115+
pre-commit run --all-files
116+
fi

.github/actions/pytest/action.yaml

+217
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
# Test Runner Action
2+
#
3+
# This composite action executes Python tests with pytest, providing
4+
# comprehensive test execution and reporting capabilities.
5+
#
6+
# Key Features:
7+
# - Multiple test type support
8+
# - Parallel execution
9+
# - Coverage reporting
10+
# - Performance tracking
11+
# - Result analysis
12+
#
13+
# Process Stages:
14+
# 1. Environment Setup:
15+
# - Python configuration
16+
# - Virtual environment creation
17+
# - Dependency installation
18+
#
19+
# 2. Test Execution:
20+
# - Test scope determination
21+
# - Parallel processing
22+
# - Coverage tracking
23+
# - Performance monitoring
24+
#
25+
# 3. Results Processing:
26+
# - Coverage analysis
27+
# - Performance reporting
28+
# - Results aggregation
29+
#
30+
# Required Inputs:
31+
# - python-version: Python version for tests
32+
# - test-type: Type of tests to run
33+
# - codecov-token: Token for coverage upload
34+
# - max-test-time: Maximum test duration
35+
# - device: Device to run tests on (cpu/gpu)
36+
# - enable-cache: Enable pip caching
37+
#
38+
# Outputs:
39+
# - coverage-percentage: Total coverage
40+
# - tests-passed: Test success status
41+
# - test-duration: Execution time
42+
#
43+
# Example Usage:
44+
# steps:
45+
# - uses: ./.github/actions/pytest
46+
# with:
47+
# python-version: "3.11"
48+
# test-type: "unit"
49+
# codecov-token: ${{ secrets.CODECOV_TOKEN }}
50+
#
51+
# Note: Requires proper pytest configuration in pyproject.toml
52+
53+
name: "Python Tests Runner"
54+
description: "Runs Python unit and integration tests with pytest and uploads coverage to Codecov"
55+
56+
inputs:
57+
python-version:
58+
description: "Python version to use"
59+
required: false
60+
default: "3.10"
61+
test-type:
62+
description: "Type of tests to run (unit/integration/all)"
63+
required: false
64+
default: "all"
65+
codecov-token:
66+
description: "Codecov upload token"
67+
required: true
68+
max-test-time:
69+
description: "Maximum time in seconds for the test suite to run"
70+
required: false
71+
default: "3600"
72+
device:
73+
description: "Device to run tests on (cpu/gpu)"
74+
required: false
75+
default: "gpu"
76+
enable-cache:
77+
description: "Enable pip caching"
78+
required: false
79+
default: "true"
80+
81+
outputs:
82+
coverage-percentage:
83+
description: "Total coverage percentage"
84+
value: ${{ steps.coverage.outputs.percentage }}
85+
tests-passed:
86+
description: "Whether all tests passed"
87+
value: ${{ steps.test-execution.outputs.success }}
88+
test-duration:
89+
description: "Total test duration in seconds"
90+
value: ${{ steps.test-execution.outputs.duration }}
91+
92+
runs:
93+
using: composite
94+
steps:
95+
# Set up Python with pip caching
96+
- name: Set up Python environment
97+
uses: actions/setup-python@v5
98+
with:
99+
python-version: ${{ inputs.python-version }}
100+
cache: ${{ inputs.enable-cache == 'true' && 'pip' || '' }}
101+
cache-dependency-path: ${{ inputs.enable-cache == 'true' && 'pyproject.toml' || '' }}
102+
103+
# Create and configure virtual environment
104+
- name: Configure virtual environment
105+
id: setup-venv
106+
shell: bash
107+
run: |
108+
# Create isolated test environment
109+
python -m venv .venv
110+
source .venv/bin/activate
111+
# Install dependencies with dev extras
112+
python -m pip install --upgrade pip
113+
pip install ".[dev]"
114+
pip install codecov
115+
116+
# Determine which tests to run based on input
117+
- name: Determine test scope
118+
id: test-scope
119+
shell: bash
120+
run: |
121+
case "${{ inputs.test-type }}" in
122+
"unit")
123+
echo "path=tests/unit" >> $GITHUB_OUTPUT
124+
;;
125+
"integration")
126+
echo "path=tests/integration" >> $GITHUB_OUTPUT
127+
;;
128+
*)
129+
# Run both test types if not specified
130+
echo "path=tests/unit tests/integration" >> $GITHUB_OUTPUT
131+
;;
132+
esac
133+
134+
- name: Execute test suite
135+
id: test-execution
136+
shell: bash
137+
continue-on-error: true
138+
run: |
139+
source .venv/bin/activate
140+
start_time=$(date +%s)
141+
142+
# Set device-specific pytest arguments
143+
if [ "${{ inputs.device }}" = "cpu" ]; then
144+
marker="-m cpu" # Only run CPU tests
145+
else
146+
marker="" # Run all tests (both CPU and GPU marked tests)
147+
fi
148+
149+
# Run pytest
150+
PYTHONPATH=src pytest ${{ steps.test-scope.outputs.path }} \
151+
--numprocesses=0 \
152+
--durations=10 \
153+
--durations-min=1.0 \
154+
--timeout=${{ inputs.max-test-time }} \
155+
--verbosity=1 \
156+
--cov=src \
157+
--cov-report=xml \
158+
--cov-report=term-missing \
159+
${marker}
160+
161+
test_exit_code=${PIPESTATUS[0]}
162+
163+
# Calculate and store duration
164+
end_time=$(date +%s)
165+
duration=$((end_time - start_time))
166+
echo "duration=$duration" >> $GITHUB_OUTPUT
167+
echo "success=$([[ $test_exit_code == 0 ]] && echo true || echo false)" >> $GITHUB_OUTPUT
168+
169+
# Store test results summary
170+
if [ $test_exit_code -ne 0 ]; then
171+
echo "::error::Tests failed. See summary below:"
172+
echo "----------------------------------------"
173+
# Extract the summary section from pytest output
174+
sed -n '/=* short test summary info =*/,$p' pytest_output.log || true
175+
echo "----------------------------------------"
176+
echo "Full test output saved to artifacts"
177+
fi
178+
179+
exit $test_exit_code
180+
181+
- name: Upload test results
182+
if: always() && steps.test-execution.outcome == 'failure'
183+
uses: actions/upload-artifact@v3
184+
with:
185+
name: pytest-results-${{ inputs.test-type }}
186+
path: pytest_output.log
187+
retention-days: 7
188+
189+
- name: Check test results
190+
if: always() && steps.test-execution.outcome == 'failure'
191+
shell: bash
192+
run: exit 1
193+
194+
- name: Check test duration
195+
if: always()
196+
shell: bash
197+
run: |
198+
duration="${{ steps.test-execution.outputs.duration }}"
199+
if [ -n "$duration" ]; then
200+
echo "Test Duration: $duration seconds"
201+
202+
if [ "$duration" -gt "${{ inputs.max-test-time }}" ]; then
203+
echo "::warning::Test suite exceeded recommended duration of ${{ inputs.max-test-time }} seconds"
204+
fi
205+
else
206+
echo "Test Duration: Not available"
207+
fi
208+
209+
- name: Upload coverage to Codecov
210+
if: success()
211+
shell: bash
212+
run: |
213+
source .venv/bin/activate
214+
codecov --token "${{ inputs.codecov-token }}" \
215+
--file coverage.xml \
216+
--flags "${{ inputs.test-type }}_py${{ inputs.python-version }}" \
217+
--name "${{ inputs.test-type }} tests (Python ${{ inputs.python-version }})"

0 commit comments

Comments
 (0)