You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am copy pasting the code from examples/api/03_models/padim.py and trying to run it. When fitting the model, there is an IndexError somewhere in the implementation of engine.fit().
Dataset
MVTec
Model
PADiM
Steps to reproduce the behavior
Steps to reproduce the behavior.
pip install anomalib
anomalib install
run the following code
# Copyright (C) 2024 Intel Corporation# SPDX-License-Identifier: Apache-2.0"""Example showing how to use the Padim model.PaDiM (Patch Distribution Modeling) is a model that uses pretrained CNN featuresand multivariate Gaussian modeling for anomaly detection."""fromanomalib.dataimportMVTecfromanomalib.engineimportEnginefromanomalib.modelsimportPadimif__name__=='__main__':
# 1. Basic Usage# Initialize with default settingsmodel=Padim()
# 2. Custom Configuration# Configure model parametersmodel=Padim(
backbone="resnet18", # Feature extraction backbonelayers=["layer1", "layer2", "layer3"], # Layers to extract features frompre_trained=True, # Use pretrained weightsn_features=100, # Number of features to retain
)
# 3. Training Pipeline# Set up the complete training pipelinedatamodule=MVTec(
root="./datasets/MVTec",
category="bottle",
train_batch_size=32,
eval_batch_size=32, # Important for feature extraction
)
# Initialize training engine with specific settingsengine=Engine(
max_epochs=1, # PaDiM needs only one epochaccelerator="auto", # Automatically detect GPU/CPUdevices=1, # Number of devices to use
)
# Train the modelengine.fit(
model=model,
datamodule=datamodule,
)
OS information
OS information:
OS: macOS 14.6.1
Python version: 3.12.7
Anomalib version: 2.0.0b2
PyTorch version: 2.6.0
Expected behavior
I expect it to fit the model and exit. There is no prediction step here, so I'm not expecting much other than some terminal messages providing some details about fitting.
Screenshots
No response
Pip/GitHub
pip
What version/branch did you use?
24.2
Configuration YAML
n/a
Logs
$ python3 padim.py
-----------------------------------------------------------------------------------------------------------
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
INFO:anomalib.models.components.base.anomalib_module:Initializing Padim model.
INFO:timm.models._builder:Loading pretrained weights from Hugging Face hub (timm/resnet18.a1_in1k)
INFO:timm.models._hub:[timm/resnet18.a1_in1k] Safe alternative available for'pytorch_model.bin' (as 'model.safetensors'). Loading weights using safetensors.
INFO:timm.models._builder:Missing keys (fc.weight, fc.bias) discovered while loading pretrained weights. This is expected if model is being adapted.
INFO:anomalib.models.components.base.anomalib_module:Initializing Padim model.
INFO:timm.models._builder:Loading pretrained weights from Hugging Face hub (timm/resnet18.a1_in1k)
INFO:timm.models._hub:[timm/resnet18.a1_in1k] Safe alternative available for'pytorch_model.bin' (as 'model.safetensors'). Loading weights using safetensors.
INFO:timm.models._builder:Missing keys (fc.weight, fc.bias) discovered while loading pretrained weights. This is expected if model is being adapted.
GPU available: True (mps), used: True
TPU available: False, using: 0 TPU cores
HPU available: False, using: 0 HPUs
`Trainer(val_check_interval=1.0)` was configured so validation will run at the end of the training epoch..
INFO:anomalib.data.datamodules.image.mvtec:Found the dataset.
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/core/optimizer.py:183: `LightningModule.configure_optimizers` returned `None`, this fit will run with no optimizer
| Name | Type | Params | Mode
-----------------------------------------------------------------
0 | pre_processor | PreProcessor | 0 | train
1 | post_processor | OneClassPostProcessor | 0 | train
2 | evaluator | Evaluator | 0 | train
3 | model | PadimModel | 2.8 M | train
-----------------------------------------------------------------
2.8 M Trainable params
0 Non-trainable params
2.8 M Total params
11.131 Total estimated model params size (MB)
19 Modules in train mode
69 Modules ineval mode
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:420: Consider setting `persistent_workers=True`in'train_dataloader' to speed up the dataloader worker initialization.
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:420: Consider setting `persistent_workers=True`in'val_dataloader' to speed up the dataloader worker initialization.
Epoch 0: 0%|| 0/7 [00:00<?, ?it/s]/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
Epoch 0: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:04<00:00, 1.54it/sINFO:anomalib.models.image.padim.lightning_model:Aggregating the embedding extracted from the training set. | 0/? [00:00<?, ?it/s]
INFO:anomalib.models.image.padim.lightning_model:Fitting a Gaussian to the embedding collected from the training set.
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
Traceback (most recent call last):████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:00<00:00, 5.53it/s]
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/src/padim.py", line 45, in<module>
engine.fit(
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/anomalib/engine/engine.py", line 416, in fit
self.trainer.fit(model, train_dataloaders, val_dataloaders, datamodule, ckpt_path)
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/trainer.py", line 539, in fit
call._call_and_handle_interrupt(
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/call.py", line 47, in _call_and_handle_interrupt
return trainer_fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/trainer.py", line 575, in _fit_impl
self._run(model, ckpt_path=ckpt_path)
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/trainer.py", line 982, in _run
results = self._run_stage()
^^^^^^^^^^^^^^^^^
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/trainer.py", line 1026, in _run_stage
self.fit_loop.run()
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/fit_loop.py", line 216, in run
self.advance()
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/fit_loop.py", line 455, in advance
self.epoch_loop.run(self._data_fetcher)
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 151, in run
self.on_advance_end(data_fetcher)
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/training_epoch_loop.py", line 370, in on_advance_end
self.val_loop.run()
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/utilities.py", line 179, in _decorator
return loop_run(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 151, in run
returnself.on_run_end()
^^^^^^^^^^^^^^^^^
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 291, in on_run_end
self._on_evaluation_epoch_end()
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/loops/evaluation_loop.py", line 370, in _on_evaluation_epoch_end
call._call_callback_hooks(trainer, hook_name)
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/lightning/pytorch/trainer/call.py", line 222, in _call_callback_hooks
fn(trainer, trainer.lightning_module, *args, **kwargs)
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/anomalib/post_processing/one_class.py", line 108, in on_validation_epoch_end
self._pixel_threshold.compute()
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/torchmetrics/metric.py", line 700, in wrapped_func
value = _squeeze_if_scalar(compute(*args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/johnzeng/Code/DEC/Two-Stage-Doubt-Confirmation/venv/lib/python3.12/site-packages/anomalib/metrics/threshold/f1_adaptive_threshold.py", line 113, in compute
self.value = thresholds[torch.argmax(f1_score)]
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
IndexError: index 4938361 is out of bounds for dimension 0 with size 4938361
$
Code of Conduct
I agree to follow this project's Code of Conduct
The text was updated successfully, but these errors were encountered:
Describe the bug
I am copy pasting the code from
examples/api/03_models/padim.py
and trying to run it. When fitting the model, there is an IndexError somewhere in the implementation ofengine.fit()
.Dataset
MVTec
Model
PADiM
Steps to reproduce the behavior
Steps to reproduce the behavior.
pip install anomalib
anomalib install
OS information
OS information:
Expected behavior
I expect it to fit the model and exit. There is no prediction step here, so I'm not expecting much other than some terminal messages providing some details about fitting.
Screenshots
No response
Pip/GitHub
pip
What version/branch did you use?
24.2
Configuration YAML
n/a
Logs
Code of Conduct
The text was updated successfully, but these errors were encountered: