Skip to content

Commit 627be88

Browse files
samet-akcayashwinvaidya17
authored andcommitted
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]>
1 parent 1500db6 commit 627be88

File tree

107 files changed

+3326
-2867
lines changed

Some content is hidden

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

107 files changed

+3326
-2867
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
# Project related
22
datasets
3+
!src/anomalib/data/datasets
34
pre_trained
4-
!anomalib/datasets
55
results
6-
!anomalib/core/results
76

87
# Test-related files and directories
98
tmp*

notebooks/100_datamodules/101_btech.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"from torchvision.transforms.v2 import Resize\n",
7272
"from torchvision.transforms.v2.functional import to_pil_image\n",
7373
"\n",
74-
"from anomalib.data.image.btech import BTech, BTechDataset\n",
74+
"from anomalib.data import BTech, BTechDataset\n",
7575
"from anomalib import TaskType"
7676
]
7777
},

notebooks/100_datamodules/102_mvtec.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"from torchvision.transforms.v2 import Resize\n",
3434
"from torchvision.transforms.v2.functional import to_pil_image\n",
3535
"\n",
36-
"from anomalib.data.image.mvtec import MVTec, MVTecDataset\n",
36+
"from anomalib.data import MVTec, MVTecDataset\n",
3737
"from anomalib import TaskType"
3838
]
3939
},

notebooks/100_datamodules/103_folder.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"from torchvision.transforms.v2 import Resize\n",
7474
"from torchvision.transforms.v2.functional import to_pil_image\n",
7575
"\n",
76-
"from anomalib.data.image.folder import Folder, FolderDataset\n",
76+
"from anomalib.data import Folder, FolderDataset\n",
7777
"from anomalib import TaskType"
7878
]
7979
},

src/anomalib/callbacks/metrics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from lightning.pytorch.utilities.types import STEP_OUTPUT
1414

1515
from anomalib import TaskType
16-
from anomalib.dataclasses import Batch
16+
from anomalib.data import Batch
1717
from anomalib.metrics import AnomalibMetricCollection, create_metric_collection
1818
from anomalib.models import AnomalyModule
1919

src/anomalib/data/__init__.py

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,36 @@
1212

1313
from anomalib.utils.config import to_tuple
1414

15-
from .base import AnomalibDataModule, AnomalibDataset
16-
from .depth import DepthDataFormat, Folder3D, MVTec3D
17-
from .image import BTech, Folder, ImageDataFormat, Kolektor, MVTec, Visa
15+
# Dataclasses
16+
from .dataclasses import (
17+
Batch,
18+
DatasetItem,
19+
DepthBatch,
20+
DepthItem,
21+
ImageBatch,
22+
ImageItem,
23+
InferenceBatch,
24+
NumpyImageBatch,
25+
NumpyImageItem,
26+
NumpyVideoBatch,
27+
NumpyVideoItem,
28+
VideoBatch,
29+
VideoItem,
30+
)
31+
32+
# Datamodules
33+
from .datamodules.base import AnomalibDataModule
34+
from .datamodules.depth import DepthDataFormat, Folder3D, MVTec3D
35+
from .datamodules.image import BTech, Folder, ImageDataFormat, Kolektor, MVTec, Visa
36+
from .datamodules.video import Avenue, ShanghaiTech, UCSDped, VideoDataFormat
37+
38+
# Datasets
39+
from .datasets import AnomalibDataset
40+
from .datasets.depth import Folder3DDataset, MVTec3DDataset
41+
from .datasets.image import BTechDataset, FolderDataset, KolektorDataset, MVTecDataset, VisaDataset
42+
from .datasets.video import AvenueDataset, ShanghaiTechDataset, UCSDpedDataset
1843
from .predict import PredictDataset
1944
from .utils import LabelName
20-
from .video import Avenue, ShanghaiTech, UCSDped, VideoDataFormat
2145

2246
logger = logging.getLogger(__name__)
2347

@@ -63,7 +87,34 @@ def get_datamodule(config: DictConfig | ListConfig | dict) -> AnomalibDataModule
6387

6488

6589
__all__ = [
90+
# Anomalib dataclasses
91+
"DatasetItem",
92+
"Batch",
93+
"InferenceBatch",
94+
"ImageItem",
95+
"ImageBatch",
96+
"VideoItem",
97+
"VideoBatch",
98+
"DepthItem",
99+
"DepthBatch",
100+
"NumpyImageItem",
101+
"NumpyImageBatch",
102+
"NumpyVideoItem",
103+
"NumpyVideoBatch",
104+
# Anomalib datasets
66105
"AnomalibDataset",
106+
"Folder3DDataset",
107+
"MVTec3DDataset",
108+
"BTechDataset",
109+
"FolderDataset",
110+
"KolektorDataset",
111+
"MVTecDataset",
112+
"VisaDataset",
113+
"AvenueDataset",
114+
"ShanghaiTechDataset",
115+
"UCSDpedDataset",
116+
"PredictDataset",
117+
# Anomalib datamodules
67118
"AnomalibDataModule",
68119
"DepthDataFormat",
69120
"ImageDataFormat",
@@ -72,7 +123,6 @@ def get_datamodule(config: DictConfig | ListConfig | dict) -> AnomalibDataModule
72123
"BTech",
73124
"Folder",
74125
"Folder3D",
75-
"PredictDataset",
76126
"Kolektor",
77127
"MVTec",
78128
"MVTec3D",

src/anomalib/data/base/__init__.py

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,19 @@
5353
)
5454

5555
__all__ = [
56+
# Numpy
57+
"NumpyImageItem",
58+
"NumpyImageBatch",
59+
"NumpyVideoItem",
60+
"NumpyVideoBatch",
61+
# Torch
5662
"DatasetItem",
5763
"Batch",
5864
"InferenceBatch",
5965
"ImageItem",
6066
"ImageBatch",
6167
"VideoItem",
6268
"VideoBatch",
63-
"NumpyImageItem",
64-
"NumpyImageBatch",
65-
"NumpyVideoItem",
66-
"NumpyVideoBatch",
6769
"DepthItem",
6870
"DepthBatch",
6971
]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Numpy-based dataclasses for Anomalib.
2+
3+
This module provides numpy-based implementations of the generic dataclasses
4+
used in Anomalib. These classes are designed to work with numpy arrays for
5+
efficient data handling and processing in anomaly detection tasks.
6+
7+
The module includes the following main classes:
8+
9+
- NumpyItem: Represents a single item in Anomalib datasets using numpy arrays.
10+
- NumpyBatch: Represents a batch of items in Anomalib datasets using numpy arrays.
11+
- NumpyImageItem: Represents a single image item with additional image-specific fields.
12+
- NumpyImageBatch: Represents a batch of image items with batch operations.
13+
- NumpyVideoItem: Represents a single video item with video-specific fields.
14+
- NumpyVideoBatch: Represents a batch of video items with video-specific operations.
15+
"""
16+
17+
# Copyright (C) 2024 Intel Corporation
18+
# SPDX-License-Identifier: Apache-2.0
19+
20+
from .base import NumpyBatch, NumpyItem
21+
from .image import NumpyImageBatch, NumpyImageItem
22+
from .video import NumpyVideoBatch, NumpyVideoItem
23+
24+
__all__ = ["NumpyBatch", "NumpyItem", "NumpyImageBatch", "NumpyImageItem", "NumpyVideoBatch", "NumpyVideoItem"]

0 commit comments

Comments
 (0)