Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ValueError in training CFLOW #568

Closed
aparico opened this issue Sep 20, 2022 · 4 comments
Closed

ValueError in training CFLOW #568

aparico opened this issue Sep 20, 2022 · 4 comments
Assignees
Labels
Bug Something isn't working Model

Comments

@aparico
Copy link

aparico commented Sep 20, 2022

Describe the bug

I'm getting this error in training CFLOW on a custom dataset. I tried PatchCore and FastFlow but I don't get the same error.

Traceback (most recent call last):█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 27/27 [00:47<00:00,  1.30s/it]
  File "/foo/anomalib/tools/train.py", line 71, in <module>
    train()
  File "/foo/anomalib/tools/train.py", line 60, in train
    trainer.fit(model=model, datamodule=datamodule)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 770, in fit
    self._call_and_handle_interrupt(
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 723, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 811, in _fit_impl
    results = self._run(model, ckpt_path=self.ckpt_path)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1236, in _run
    results = self._run_stage()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1323, in _run_stage
    return self._run_train()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1353, in _run_train
    self.fit_loop.run()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/base.py", line 204, in run
    self.advance(*args, **kwargs)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/fit_loop.py", line 266, in advance
    self._outputs = self.epoch_loop.run(self._data_fetcher)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/base.py", line 205, in run
    self.on_advance_end()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/epoch/training_epoch_loop.py", line 255, in on_advance_end
    self._run_validation()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/epoch/training_epoch_loop.py", line 311, in _run_validation
    self.val_loop.run()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/base.py", line 211, in run
    output = self.on_run_end()
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/dataloader/evaluation_loop.py", line 183, in on_run_end
    self._evaluation_epoch_end(self._outputs)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/loops/dataloader/evaluation_loop.py", line 310, in _evaluation_epoch_end
    self.trainer._call_lightning_module_hook("validation_epoch_end", output_or_outputs)
  File "/home/anaconda3/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1595, in _call_lightning_module_hook
    output = fn(*args, **kwargs)
  File "/foo/anomalib/anomalib/models/components/base/anomaly_module.py", line 120, in validation_epoch_end
    self._compute_adaptive_threshold(outputs)
  File "/foo/anomalib/anomalib/models/components/base/anomaly_module.py", line 136, in _compute_adaptive_threshold
    self._collect_outputs(self.image_threshold, self.pixel_threshold, outputs)
  File "/foo/anomalib/anomalib/models/components/base/anomaly_module.py", line 153, in _collect_outputs
    pixel_metric.update(output["anomaly_maps"], output["mask"].int())
  File "/home/anaconda3/lib/python3.9/site-packages/torchmetrics/metric.py", line 383, in wrapped_func
    update(*args, **kwargs)
  File "/home/anaconda3/lib/python3.9/site-packages/torchmetrics/classification/precision_recall_curve.py", line 110, in update
    preds, target, num_classes, pos_label = _precision_recall_curve_update(
  File "/home/anaconda3/lib/python3.9/site-packages/torchmetrics/functional/classification/precision_recall_curve.py", line 119, in _precision_recall_curve_update
    raise ValueError("preds and target must have same number of dimensions, or one additional dimension for preds")
ValueError: preds and target must have same number of dimensions, or one additional dimension for preds

To Reproduce

Steps to reproduce the behavior:

I ran this command: python tools/train.py --config anomalib/models/cflow/config.yaml

But I added AUPRO as a metric in the config and I'm running on a custom dataset

Hardware and Software Configuration

  • OS: Ubuntu 18.04.2
  • NVIDIA Driver Version 418.67
  • CUDA Version 10.1
  • CUDNN Version 7.5.0
@samet-akcay samet-akcay self-assigned this Sep 23, 2022
@samet-akcay samet-akcay added Bug Something isn't working Model labels Sep 23, 2022
@aparico
Copy link
Author

aparico commented Sep 26, 2022

I tried with the MVTech dataset and I'm still getting the same error

@samet-akcay
Copy link
Contributor

@aparico, we have just created a fix for CFlow in PR #589. Can you check if you still have this issue after this fix?

@aparico
Copy link
Author

aparico commented Sep 27, 2022

@samet-akcay It worked successfully! Thanks!

@AbdelsalamHaa
Copy link

I'm getting the same error during validation but for Ganomaly

Traceback (most recent call last):
  File "C:\Users\itope\anomalib\tools\train.py", line 79, in <module>
    train(args)
  File "C:\Users\itope\anomalib\tools\train.py", line 64, in train
    trainer.fit(model=model, datamodule=datamodule)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 608, in fit
    call._call_and_handle_interrupt(
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\call.py", line 38, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 650, in _fit_impl
    self._run(model, ckpt_path=self.ckpt_path)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1112, in _run
    results = self._run_stage()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1191, in _run_stage
    self._run_train()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1214, in _run_train
    self.fit_loop.run()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\loop.py", line 199, in run
    self.advance(*args, **kwargs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\fit_loop.py", line 267, in advance
    self._outputs = self.epoch_loop.run(self._data_fetcher)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\loop.py", line 200, in run
    self.on_advance_end()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\epoch\training_epoch_loop.py", line 250, in on_advance_end
    self._run_validation()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\epoch\training_epoch_loop.py", line 308, in _run_validation
    self.val_loop.run()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\loop.py", line 206, in run
    output = self.on_run_end()
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\dataloader\evaluation_loop.py", line 180, in on_run_end
    self._evaluation_epoch_end(self._outputs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\loops\dataloader\evaluation_loop.py", line 288, in _evaluation_epoch_end
    self.trainer._call_lightning_module_hook(hook_name, output_or_outputs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\pytorch_lightning\trainer\trainer.py", line 1356, in _call_lightning_module_hook
    output = fn(*args, **kwargs)
  File "C:\Users\itope\anomalib\src\anomalib\models\ganomaly\lightning_model.py", line 165, in validation_epoch_end
    super().validation_epoch_end(outputs)
  File "C:\Users\itope\anomalib\src\anomalib\models\components\base\anomaly_module.py", line 146, in validation_epoch_end
    self._collect_outputs(self.image_metrics, self.pixel_metrics, outputs)
  File "C:\Users\itope\anomalib\src\anomalib\models\components\base\anomaly_module.py", line 179, in _collect_outputs
    image_metric.update(output["pred_scores"], output["label"].int())
  File "C:\Users\itope\anomalib\src\anomalib\utils\metrics\collection.py", line 26, in update
    super().update(*args, **kwargs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\collections.py", line 191, in update
    m.update(*args, **m_kwargs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\metric.py", line 395, in wrapped_func
    update(*args, **kwargs)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\classification\stat_scores.py", line 706, in update
    tp, fp, tn, fn = _stat_scores_update(
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\functional\classification\stat_scores.py", line 954, in _stat_scores_update
    preds, target, _ = _input_format_classification(
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\utilities\checks.py", line 412, in _input_format_classification
    case = _check_classification_inputs(
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\utilities\checks.py", line 270, in _check_classification_inputs
    _basic_input_validation(preds, target, threshold, multiclass, ignore_index)
  File "C:\Users\itope\anaconda3\envs\anomalib_env\lib\site-packages\torchmetrics\utilities\checks.py", line 61, in _basic_input_validation
    raise ValueError("The `preds` and `target` should have the same first dimension.")
ValueError: The `preds` and `target` should have the same first dimension.
Epoch 1: : 173it [08:47,  3.05s/it, loss=5.56, train_loss_step=9.420, train_loss_epoch=7.030]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working Model
Projects
None yet
Development

No branches or pull requests

3 participants