Release Anomalib Library v2.6.0
·
62 commits
to main
since this release
What's Changed
Added
- 馃殌 model: Add SuperADD VAND4.0 winning method by @alexriedel1 in #3628
- 馃殌 data: Add AutoVI Dataset by @julie-bat in #3633
Removed
鈿狅笍 data: Remove Kaputt deprecated APIs (use_reference,reference_only,category='all'); useimage_mode=ImageMode.*andcategory=None/ a concrete category (defaultbook_other) instead鈿狅笍 metric: Remove deprecated AUPROnum_thresholdsconstructor argument and unusedcompute_pro(..., target=...)parameter鈿狅笍 utils: Remove temporaryresolve_with_warning/_is_legacy_default_roothelpers; useresolve_dataset_rootinstead
Changed
- 馃敡 data: Kaputt datamodule default
categoryis nowbook_other(was the deprecatedallpseudo-category)
Fixed
- 馃悶 data: Distribute split remainder over subsets to avoid ZeroDivisionError by @prawnsgupta in #3680
- 馃悶 security: Fix path traversal by @AlexanderBarabanov in #3686
- 馃敡 deps: Bump
torchto resolve Dependabot alerts by @AlexanderBarabanov in #3681
New Contributors
- @prawnsgupta made their first contribution in #3680
- @julie-bat made their first contribution in #3633
Full Changelog: lib/v2.5.1...lib/v2.6.0
API Changes
New Public Exports
The following class is now exported from anomalib.models:
| Class | Module Path |
|---|---|
SuperADD |
anomalib.models.image.super_add |
from anomalib.data import MVTecAD2
from anomalib.engine import Engine
from anomalib.models import SuperADD
datamodule = MVTecAD2(category="sheet_metal")
model = SuperADD(patch_size=640, patch_overlap=128)
engine = Engine()
engine.fit(model=model, datamodule=datamodule)The following classes are now exported from anomalib.data:
| Class | Module Path |
|---|---|
AutoVI |
anomalib.data.datamodules.image.autovi |
AutoVIDataset |
anomalib.data.datasets.image.autovi |
from anomalib.data import AutoVI
datamodule = AutoVI(
root="./datasets/AutoVI",
category="pipe_clip",
)
datamodule.prepare_data() # downloads only the zip for `pipe_clip`
datamodule.setup()Breaking Changes
These APIs were deprecated in prior releases and are removed in v2.6.0:
| Removed API | Replacement | Since |
|---|---|---|
Kaputt(category='all') |
category=None (all categories) or a concrete material (default is now book_other) |
v2.4.0 |
KaputtDataset(reference_only=...) |
image_mode=ImageMode.REFERENCE_ONLY |
v2.4.0 |
KaputtDataset(use_reference=...) |
image_mode=ImageMode.QUERY_AND_REFERENCE |
v2.4.0 |
AUPRO(num_thresholds=...) |
Omit the argument (it was ignored) | v2.1.0 |
AUPRO.compute_pro(..., target=...) |
compute_pro(cca=..., preds=...) only |
v2.1.0 |
resolve_with_warning / _is_legacy_default_root |
resolve_dataset_root |
v2.4.x |
Kaputt category and image mode
# Before (removed)
from anomalib.data import Kaputt
datamodule = Kaputt(category="all", use_reference=True)
datamodule = Kaputt(reference_only=True)
# After
from anomalib.data import Kaputt
from anomalib.data.datasets.image.kaputt import ImageMode
datamodule = Kaputt(category=None) # all categories
datamodule = Kaputt() # default category is now "book_other"
datamodule = Kaputt(image_mode=ImageMode.QUERY_AND_REFERENCE)
datamodule = Kaputt(image_mode=ImageMode.REFERENCE_ONLY)# Before (removed)
from anomalib.data.datasets import KaputtDataset
dataset = KaputtDataset(use_reference=True)
dataset = KaputtDataset(reference_only=True)
# After
from anomalib.data.datasets import KaputtDataset
from anomalib.data.datasets.image.kaputt import ImageMode
dataset = KaputtDataset(image_mode=ImageMode.QUERY_AND_REFERENCE)
dataset = KaputtDataset(image_mode=ImageMode.REFERENCE_ONLY)AUPRO
# Before (removed)
from anomalib.metrics import AUPRO
metric = AUPRO(fpr_limit=0.3, num_thresholds=100)
fpr, pro = metric.compute_pro(cca=cca, preds=preds, target=masks)
# After
from anomalib.metrics import AUPRO
metric = AUPRO(fpr_limit=0.3)
fpr, pro = metric.compute_pro(cca=cca, preds=preds)Dataset root resolution
# Before (removed)
from anomalib.utils.path import resolve_with_warning
root = resolve_with_warning("./datasets/MVTecAD", "MVTecAD")
# After
from anomalib.utils.path import resolve_dataset_root
root = resolve_dataset_root("./datasets/MVTecAD", "MVTecAD")
root = resolve_dataset_root(None, "MVTecAD") # -> ~/.cache/anomalib/datasets/MVTecADExisting Deprecations (carried forward)
These were deprecated in prior releases and remain deprecated:
| Deprecated API | Replacement | Since | Removal Target |
|---|---|---|---|
anomalib.models.components.dinov2 |
TimmFeatureExtractor |
v2.5.1 | Future |
Legacy ONNX exporter (dynamo=False) |
Dynamo exporter (dynamo=True) |
v2.5.1 | v2.7.0 |
Engine.export(ov_args=...) |
Use ExportParameters directly |
v2.3.0 | Future |
PatchcoreTorchModel.compute_distance(embeddings=...) |
Default memory bank path | v2.1.0 | Future |
# Prefer (current)
from anomalib.models.components.feature_extractors import TimmFeatureExtractor
extractor = TimmFeatureExtractor(
backbone="vit_small_patch14_dinov2",
layers=["blocks.2", "blocks.5", "blocks.8", "blocks.11"],
)
# Avoid (deprecated)
from anomalib.models.components import dinov2 # FutureWarning
# Prefer dynamo ONNX export
model.to_onnx(export_root="./exports", dynamo=True)
# Avoid legacy exporter (removed in v2.7.0)
model.to_onnx(export_root="./exports", dynamo=False)What's Changed
- chore(lib): bump version by @ashwinvaidya17 in #3677
- chore(deps): update python:3.13-slim docker digest to 6771159 by @oep-renovate[bot] in #3678
- fix(deps): bump
torchto resolve Dependabot alerts (v2) by @AlexanderBarabanov in #3681 - chore(deps): update dependency js-yaml to v4.3.0 [security] by @oep-renovate[bot] in #3682
- 馃悶 fix(data): distribute split remainder over subsets to avoid ZeroDivisionError by @prawnsgupta in #3680
- ci: Add cleanup old images workflow by @ivanzati in #3683
- chore(deps): update dependency dompurify to v3.4.12 [security] by @oep-renovate[bot] in #3685
- chore(ci): add temp guard to prevent some Dependabot alerts from reopening by @AlexanderBarabanov in #3684
- fix: path traversal by @AlexanderBarabanov in #3686
- feat(lib): merge 2.6.0 branch by @ashwinvaidya17 in #3694
New Contributors
- @prawnsgupta made their first contribution in #3680
Full Changelog: lib/v2.5.1...lib/v2.6.0