diff --git a/notebooks/500_use_cases/501_dobot/501a_training_a_model_with_cubes_from_a_robotic_arm.ipynb b/notebooks/500_use_cases/501_dobot/501a_training_a_model_with_cubes_from_a_robotic_arm.ipynb
index 3d26426df0..6befd8f507 100644
--- a/notebooks/500_use_cases/501_dobot/501a_training_a_model_with_cubes_from_a_robotic_arm.ipynb
+++ b/notebooks/500_use_cases/501_dobot/501a_training_a_model_with_cubes_from_a_robotic_arm.ipynb
@@ -36,21 +36,7 @@
"source": [
"# Installing Anomalib\n",
"\n",
- "The easiest way to install anomalib is to use pip. You can install it from the command line using the following command:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "ExecuteTime": {
- "end_time": "2024-01-12T16:55:30.140695290Z",
- "start_time": "2024-01-12T16:55:30.133386473Z"
- }
- },
- "outputs": [],
- "source": [
- "%pip install anomalib[full]"
+ "To install anomalib with the required dependencies, please follow the steps under `Install from source` [on GitHub](https://github.com/openvinotoolkit/anomalib?tab=readme-ov-file#-installation)."
]
},
{
@@ -63,7 +49,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2024-01-12T16:55:35.855912923Z",
@@ -92,7 +78,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2024-01-12T16:55:40.293464182Z",
@@ -104,8 +90,8 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "cubes.zip: 6.99MB [00:02, 2.85MB/s] \n",
- "dobot_api.zip: 3.69MB [00:01, 1.99MB/s] \n"
+ "cubes.zip: 6.99MB [00:01, 5.86MB/s] \n",
+ "dobot_api.zip: 3.69MB [00:00, 5.43MB/s] \n"
]
}
],
@@ -115,12 +101,12 @@
"dataset_download_info = DownloadInfo(\n",
" name=\"cubes.zip\",\n",
" url=\"https://github.com/openvinotoolkit/anomalib/releases/download/dobot/cubes.zip\",\n",
- " checksum=\"e6e067f9e0979a4d190dd2cb1db227d7\",\n",
+ " hashsum=\"182ce0a48dabf452bf9a6aeb83132466088e30ed7a5c35d7d3a10a9fc11daac4\",\n",
")\n",
"api_download_info = DownloadInfo(\n",
" name=\"dobot_api.zip\",\n",
" url=\"https://github.com/openvinotoolkit/anomalib/releases/download/dobot/dobot_api.zip\",\n",
- " checksum=\"89d6d6400cdff03de3c25d2c54f2b443\",\n",
+ " hashsum=\"eb79bb9c6346be1628a0fe5e1196420dcc4e122ab1aa0d5abbc82f63236f0527\",\n",
")\n",
"download_and_extract(root=Path.cwd(), info=dataset_download_info)\n",
"download_and_extract(root=Path.cwd(), info=api_download_info)"
@@ -138,7 +124,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2024-01-12T16:55:40.725983993Z",
@@ -159,6 +145,7 @@
"from anomalib import TaskType\n",
"\n",
"datamodule = Folder(\n",
+ " name=\"cubes\",\n",
" root=Path.cwd() / \"cubes\",\n",
" normal_dir=\"normal\",\n",
" abnormal_dir=\"abnormal\",\n",
@@ -168,8 +155,7 @@
" eval_batch_size=32,\n",
" task=TaskType.CLASSIFICATION,\n",
")\n",
- "datamodule.setup() # Split the data to train/val/test/prediction sets.\n",
- "datamodule.prepare_data() # Create train/val/test/predic dataloaders\n",
+ "datamodule.setup()\n",
"\n",
"i, data = next(enumerate(datamodule.val_dataloader()))\n",
"print(data.keys())"
@@ -177,7 +163,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2024-01-12T16:55:40.734861023Z",
@@ -220,7 +206,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2024-01-12T16:55:41.184026691Z",
@@ -232,7 +218,6 @@
"from anomalib.models import Padim\n",
"\n",
"model = Padim(\n",
- " input_size=(256, 256),\n",
" backbone=\"resnet18\",\n",
" layers=[\"layer1\", \"layer2\", \"layer3\"],\n",
")"
@@ -252,57 +237,58 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 6,
"metadata": {
- "scrolled": true,
"ExecuteTime": {
"end_time": "2024-01-12T16:55:45.425314142Z",
"start_time": "2024-01-12T16:55:41.180954949Z"
- }
+ },
+ "scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/torchmetrics/utilities/prints.py:36: UserWarning: Metric `PrecisionRecallCurve` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n",
+ " warnings.warn(*args, **kwargs)\n",
"GPU available: True (cuda), used: True\n",
"TPU available: False, using: 0 TPU cores\n",
"IPU available: False, using: 0 IPUs\n",
"HPU available: False, using: 0 HPUs\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py:67: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `lightning.pytorch` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default\n",
"`Trainer(val_check_interval=1.0)` was configured so validation will run at the end of the training epoch..\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/torchmetrics/utilities/prints.py:36: UserWarning: Metric `PrecisionRecallCurve` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n",
+ "You are using a CUDA device ('NVIDIA GeForce RTX 3090') that has Tensor Cores. To properly utilize them, you should set `torch.set_float32_matmul_precision('medium' | 'high')` which will trade-off precision for performance. For more details, read https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision\n",
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/torchmetrics/utilities/prints.py:36: UserWarning: Metric `ROC` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n",
" warnings.warn(*args, **kwargs)\n",
- "You are using a CUDA device ('NVIDIA GeForce RTX 3060 Laptop GPU') that has Tensor Cores. To properly utilize them, you should set `torch.set_float32_matmul_precision('medium' | 'high')` which will trade-off precision for performance. For more details, read https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/torchmetrics/utilities/prints.py:36: UserWarning: Metric `ROC` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n",
- " warnings.warn(*args, **kwargs)\n",
- "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/lightning/pytorch/core/optimizer.py:180: `LightningModule.configure_optimizers` returned `None`, this fit will run with no optimizer\n",
+ "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n",
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/lightning/pytorch/core/optimizer.py:180: `LightningModule.configure_optimizers` returned `None`, this fit will run with no optimizer\n",
"\n",
" | Name | Type | Params\n",
"-------------------------------------------------------------------\n",
"0 | model | PadimModel | 2.8 M \n",
- "1 | normalization_metrics | MinMax | 0 \n",
- "2 | image_threshold | F1AdaptiveThreshold | 0 \n",
- "3 | pixel_threshold | F1AdaptiveThreshold | 0 \n",
- "4 | image_metrics | AnomalibMetricCollection | 0 \n",
- "5 | pixel_metrics | AnomalibMetricCollection | 0 \n",
+ "1 | _transform | Compose | 0 \n",
+ "2 | normalization_metrics | MinMax | 0 \n",
+ "3 | image_threshold | F1AdaptiveThreshold | 0 \n",
+ "4 | pixel_threshold | F1AdaptiveThreshold | 0 \n",
+ "5 | image_metrics | AnomalibMetricCollection | 0 \n",
+ "6 | pixel_metrics | AnomalibMetricCollection | 0 \n",
"-------------------------------------------------------------------\n",
"2.8 M Trainable params\n",
"0 Non-trainable params\n",
"2.8 M Total params\n",
- "11.131 Total estimated model params size (MB)\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/lightning/pytorch/loops/fit_loop.py:293: The number of training batches (3) is smaller than the logging interval Trainer(log_every_n_steps=50). Set a lower value for log_every_n_steps if you want to see logs for the training epoch.\n"
+ "11.131 Total estimated model params size (MB)\n"
]
},
{
"data": {
- "text/plain": "Training: | | 0/? [00:00, ?it/s]",
"application/vnd.jupyter.widget-view+json": {
+ "model_id": "cd7082c9791c4745a28c995a0f50abc8",
"version_major": 2,
- "version_minor": 0,
- "model_id": "0cd448aa0cd34b0cb1731fb0a82f9663"
- }
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Training: | | 0/? [00:00, ?it/s]"
+ ]
},
"metadata": {},
"output_type": "display_data"
@@ -311,17 +297,19 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/lightning/pytorch/loops/optimization/automatic.py:129: `training_step` returned `None`. If this was on purpose, ignore this warning...\n"
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/lightning/pytorch/loops/optimization/automatic.py:129: `training_step` returned `None`. If this was on purpose, ignore this warning...\n"
]
},
{
"data": {
- "text/plain": "Validation: | | 0/? [00:00, ?it/s]",
"application/vnd.jupyter.widget-view+json": {
+ "model_id": "5bf5b899ecb340109d4fca28c67da82e",
"version_major": 2,
- "version_minor": 0,
- "model_id": "36ca146e04ff44709750600c728d8ebc"
- }
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Validation: | | 0/? [00:00, ?it/s]"
+ ]
},
"metadata": {},
"output_type": "display_data"
@@ -356,7 +344,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2024-01-12T16:55:46.739592200Z",
@@ -368,25 +356,42 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n"
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/torchmetrics/utilities/prints.py:36: UserWarning: Metric `PrecisionRecallCurve` will save all targets and predictions in buffer. For large datasets this may lead to large memory footprint.\n",
+ " warnings.warn(*args, **kwargs)\n",
+ "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1]\n"
]
},
{
"data": {
- "text/plain": "Testing: | | 0/? [00:00, ?it/s]",
"application/vnd.jupyter.widget-view+json": {
+ "model_id": "6d530fe5f50d41dab51d8f2fefdcdb75",
"version_major": 2,
- "version_minor": 0,
- "model_id": "13cc348fe3b54024b76ad88bd9263623"
- }
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Testing: | | 0/? [00:00, ?it/s]"
+ ]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
- "text/plain": "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃\u001B[1m \u001B[0m\u001B[1m Test metric \u001B[0m\u001B[1m \u001B[0m┃\u001B[1m \u001B[0m\u001B[1m DataLoader 0 \u001B[0m\u001B[1m \u001B[0m┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│\u001B[36m \u001B[0m\u001B[36m image_AUROC \u001B[0m\u001B[36m \u001B[0m│\u001B[35m \u001B[0m\u001B[35m 1.0 \u001B[0m\u001B[35m \u001B[0m│\n└───────────────────────────┴───────────────────────────┘\n",
- "text/html": "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃ Test metric ┃ DataLoader 0 ┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│ image_AUROC │ 1.0 │\n└───────────────────────────┴───────────────────────────┘\n
\n"
+ "text/html": [
+ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃ Test metric ┃ DataLoader 0 ┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ image_AUROC │ 1.0 │\n",
+ "└───────────────────────────┴───────────────────────────┘\n",
+ "
\n"
+ ],
+ "text/plain": [
+ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃\u001b[1m \u001b[0m\u001b[1m Test metric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m DataLoader 0 \u001b[0m\u001b[1m \u001b[0m┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│\u001b[36m \u001b[0m\u001b[36m image_AUROC \u001b[0m\u001b[36m \u001b[0m│\u001b[35m \u001b[0m\u001b[35m 1.0 \u001b[0m\u001b[35m \u001b[0m│\n",
+ "└───────────────────────────┴───────────────────────────┘\n"
+ ]
},
"metadata": {},
"output_type": "display_data"
@@ -399,17 +404,24 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 8,
+ "metadata": {
+ "ExecuteTime": {
+ "end_time": "2024-01-12T16:55:48.906878137Z",
+ "start_time": "2024-01-12T16:55:46.673514722Z"
+ },
+ "collapsed": false
+ },
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/torch/onnx/_internal/jit_utils.py:307: UserWarning: Constant folding - Only steps=1 can be constant folded for opset >= 10 onnx::Slice op. Constant folding not applied. (Triggered internally at ../torch/csrc/jit/passes/onnx/constant_fold.cpp:179.)\n",
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/torch/onnx/_internal/jit_utils.py:307: UserWarning: Constant folding - Only steps=1 can be constant folded for opset >= 10 onnx::Slice op. Constant folding not applied. (Triggered internally at ../torch/csrc/jit/passes/onnx/constant_fold.cpp:179.)\n",
" _C._jit_pass_onnx_node_shape_type_inference(node, params_dict, opset_version)\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/torch/onnx/utils.py:702: UserWarning: Constant folding - Only steps=1 can be constant folded for opset >= 10 onnx::Slice op. Constant folding not applied. (Triggered internally at ../torch/csrc/jit/passes/onnx/constant_fold.cpp:179.)\n",
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/torch/onnx/utils.py:702: UserWarning: Constant folding - Only steps=1 can be constant folded for opset >= 10 onnx::Slice op. Constant folding not applied. (Triggered internally at ../torch/csrc/jit/passes/onnx/constant_fold.cpp:179.)\n",
" _C._jit_pass_onnx_graph_shape_type_inference(\n",
- "/home/abogusze/repos/anomalib/venv/lib/python3.10/site-packages/torch/onnx/utils.py:1209: UserWarning: Constant folding - Only steps=1 can be constant folded for opset >= 10 onnx::Slice op. Constant folding not applied. (Triggered internally at ../torch/csrc/jit/passes/onnx/constant_fold.cpp:179.)\n",
+ "/home/djameln/miniconda3/envs/anomalibv1source/lib/python3.10/site-packages/torch/onnx/utils.py:1209: UserWarning: Constant folding - Only steps=1 can be constant folded for opset >= 10 onnx::Slice op. Constant folding not applied. (Triggered internally at ../torch/csrc/jit/passes/onnx/constant_fold.cpp:179.)\n",
" _C._jit_pass_onnx_graph_shape_type_inference(\n"
]
}
@@ -421,18 +433,9 @@
"openvino_model_path = engine.export(\n",
" model=model,\n",
" export_type=ExportType.OPENVINO,\n",
- " datamodule=datamodule,\n",
" export_root=str(Path.cwd()),\n",
- " input_size=(256, 256),\n",
")"
- ],
- "metadata": {
- "collapsed": false,
- "ExecuteTime": {
- "end_time": "2024-01-12T16:55:48.906878137Z",
- "start_time": "2024-01-12T16:55:46.673514722Z"
- }
- }
+ ]
},
{
"attachments": {},
@@ -456,30 +459,24 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 9,
"metadata": {
- "scrolled": true,
"ExecuteTime": {
"end_time": "2024-01-12T16:55:49.107125004Z",
"start_time": "2024-01-12T16:55:48.908620452Z"
- }
+ },
+ "scrolled": true
},
"outputs": [
{
"data": {
- "text/plain": ""
+ "text/plain": [
+ ""
+ ]
},
- "execution_count": 10,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
- },
- {
- "data": {
- "text/plain": "