From e7740208a7f3ed2a9edfd435606f6e6b48cff9bb Mon Sep 17 00:00:00 2001
From: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com>
Date: Sun, 20 Oct 2024 17:10:19 +0200
Subject: [PATCH 1/4] initial draft
Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com>
---
.../700_metrics/701e_aupimo_advanced_iv.ipynb | 372 +++++++-----------
src/anomalib/metrics/pimo/__init__.py | 9 +
src/anomalib/metrics/pimo/utils_benchmark.py | 172 ++++++++
3 files changed, 321 insertions(+), 232 deletions(-)
create mode 100644 src/anomalib/metrics/pimo/utils_benchmark.py
diff --git a/notebooks/700_metrics/701e_aupimo_advanced_iv.ipynb b/notebooks/700_metrics/701e_aupimo_advanced_iv.ipynb
index e117006951..fbd1a68a64 100644
--- a/notebooks/700_metrics/701e_aupimo_advanced_iv.ipynb
+++ b/notebooks/700_metrics/701e_aupimo_advanced_iv.ipynb
@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "# AUPIMO statistical comparison between two models\n",
+ "# [TO BE REVIEWED] AUPIMO statistical comparison between two models\n",
"\n",
"Model A has a higher average AUPIMO than model B. Can you be _sure_ that A is better than B? \n",
"\n",
@@ -66,9 +66,45 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Processing /home/jcasagrandebertoldo/repos/anomalib-dev\n",
+ " Installing build dependencies ... \u001b[?25ldone\n",
+ "\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
+ "\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
+ "\u001b[?25hRequirement already satisfied: omegaconf>=2.1.1 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from anomalib==1.2.0.dev0) (2.3.0)\n",
+ "Requirement already satisfied: rich>=13.5.2 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from anomalib==1.2.0.dev0) (13.7.1)\n",
+ "Requirement already satisfied: jsonargparse>=4.27.7 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from jsonargparse[signatures]>=4.27.7->anomalib==1.2.0.dev0) (4.32.0)\n",
+ "Requirement already satisfied: docstring-parser in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from anomalib==1.2.0.dev0) (0.16)\n",
+ "Requirement already satisfied: rich-argparse in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from anomalib==1.2.0.dev0) (1.5.2)\n",
+ "Requirement already satisfied: PyYAML>=3.13 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from jsonargparse>=4.27.7->jsonargparse[signatures]>=4.27.7->anomalib==1.2.0.dev0) (6.0.2)\n",
+ "Requirement already satisfied: typeshed-client>=2.1.0 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from jsonargparse[signatures]>=4.27.7->anomalib==1.2.0.dev0) (2.7.0)\n",
+ "Requirement already satisfied: antlr4-python3-runtime==4.9.* in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from omegaconf>=2.1.1->anomalib==1.2.0.dev0) (4.9.3)\n",
+ "Requirement already satisfied: markdown-it-py>=2.2.0 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from rich>=13.5.2->anomalib==1.2.0.dev0) (3.0.0)\n",
+ "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from rich>=13.5.2->anomalib==1.2.0.dev0) (2.18.0)\n",
+ "Requirement already satisfied: mdurl~=0.1 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from markdown-it-py>=2.2.0->rich>=13.5.2->anomalib==1.2.0.dev0) (0.1.2)\n",
+ "Requirement already satisfied: importlib-resources>=1.4.0 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from typeshed-client>=2.1.0->jsonargparse[signatures]>=4.27.7->anomalib==1.2.0.dev0) (6.4.4)\n",
+ "Requirement already satisfied: typing-extensions>=4.5.0 in /home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages (from typeshed-client>=2.1.0->jsonargparse[signatures]>=4.27.7->anomalib==1.2.0.dev0) (4.11.0)\n",
+ "Building wheels for collected packages: anomalib\n",
+ " Building wheel for anomalib (pyproject.toml) ... \u001b[?25ldone\n",
+ "\u001b[?25h Created wheel for anomalib: filename=anomalib-1.2.0.dev0-py3-none-any.whl size=491631 sha256=3f0069a35f2e1e2a41e3394bd582457bdb759bb154275799f12f8189b5f5954b\n",
+ " Stored in directory: /home/jcasagrandebertoldo/.cache/pip/wheels/bd/3b/91/961b3d37cb837fd176783f27cbecacee412bc3c5a35cd76b36\n",
+ "Successfully built anomalib\n",
+ "Installing collected packages: anomalib\n",
+ " Attempting uninstall: anomalib\n",
+ " Found existing installation: anomalib 1.2.0.dev0\n",
+ " Uninstalling anomalib-1.2.0.dev0:\n",
+ " Successfully uninstalled anomalib-1.2.0.dev0\n",
+ "Successfully installed anomalib-1.2.0.dev0\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
"source": [
"# TODO(jpcbertoldo): replace by `pip install anomalib` when AUPIMO is released # noqa: TD003\n",
"%pip install ../.."
@@ -83,12 +119,20 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages/kornia/feature/lightglue.py:44: FutureWarning: `torch.cuda.amp.custom_fwd(args...)` is deprecated. Please use `torch.amp.custom_fwd(args..., device_type='cuda')` instead.\n",
+ " @torch.cuda.amp.custom_fwd(cast_inputs=torch.float32)\n"
+ ]
+ }
+ ],
"source": [
"import json\n",
- "import urllib.request\n",
"from pathlib import Path\n",
"\n",
"import numpy as np\n",
@@ -98,7 +142,11 @@
"from matplotlib.ticker import FixedLocator, IndexLocator, MaxNLocator, PercentFormatter\n",
"from scipy import stats\n",
"\n",
- "from anomalib.metrics.pimo import AUPIMOResult"
+ "from anomalib.metrics.pimo import (\n",
+ " get_benchmark_aupimo_scores,\n",
+ " load_aupimo_result_from_json_dict,\n",
+ " save_aupimo_result_to_json_dict,\n",
+ ")"
]
},
{
@@ -134,7 +182,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
@@ -153,121 +201,6 @@
}
],
"source": [
- "def get_benchmark_scores_url(model: str, dataset: str) -> str:\n",
- " \"\"\"Generate the URL for the JSON file of a specific model and dataset.\"\"\"\n",
- " root_url = \"https://raw.githubusercontent.com/jpcbertoldo/aupimo/refs/heads/main/data/experiments/benchmark\"\n",
- " models = {\n",
- " \"efficientad_wr101_m_ext\",\n",
- " \"efficientad_wr101_s_ext\",\n",
- " \"fastflow_cait_m48_448\",\n",
- " \"fastflow_wr50\",\n",
- " \"padim_r18\",\n",
- " \"padim_wr50\",\n",
- " \"patchcore_wr101\",\n",
- " \"patchcore_wr50\",\n",
- " \"pyramidflow_fnf_ext\",\n",
- " \"pyramidflow_r18_ext\",\n",
- " \"rd++_wr50_ext\",\n",
- " \"simplenet_wr50_ext\",\n",
- " \"uflow_ext\",\n",
- " }\n",
- " if model not in models:\n",
- " msg = f\"Model '{model}' not available. Choose one of {sorted(models)}.\"\n",
- " raise ValueError(msg)\n",
- " datasets = {\n",
- " \"mvtec/bottle\",\n",
- " \"mvtec/cable\",\n",
- " \"mvtec/capsule\",\n",
- " \"mvtec/carpet\",\n",
- " \"mvtec/grid\",\n",
- " \"mvtec/hazelnut\",\n",
- " \"mvtec/leather\",\n",
- " \"mvtec/metal_nut\",\n",
- " \"mvtec/pill\",\n",
- " \"mvtec/screw\",\n",
- " \"mvtec/tile\",\n",
- " \"mvtec/toothbrush\",\n",
- " \"mvtec/transistor\",\n",
- " \"mvtec/wood\",\n",
- " \"mvtec/zipper\",\n",
- " \"visa/candle\",\n",
- " \"visa/capsules\",\n",
- " \"visa/cashew\",\n",
- " \"visa/chewinggum\",\n",
- " \"visa/fryum\",\n",
- " \"visa/macaroni1\",\n",
- " \"visa/macaroni2\",\n",
- " \"visa/pcb1\",\n",
- " \"visa/pcb2\",\n",
- " \"visa/pcb3\",\n",
- " \"visa/pcb4\",\n",
- " \"visa/pipe_fryum\",\n",
- " }\n",
- " if dataset not in datasets:\n",
- " msg = f\"Dataset '{dataset}' not available. Choose one of {sorted(datasets)}.\"\n",
- " raise ValueError(msg)\n",
- " return f\"{root_url}/{model}/{dataset}/aupimo/aupimos.json\"\n",
- "\n",
- "\n",
- "def download_json(url_str: str) -> dict[str, str | float | int | list[str]]:\n",
- " \"\"\"Download the JSON content from an URL.\"\"\"\n",
- " with urllib.request.urlopen(url_str) as url: # noqa: S310\n",
- " return json.load(url)\n",
- "\n",
- "\n",
- "def load_aupimo_result_from_json_dict(payload: dict[str, str | float | int | list[str]]) -> AUPIMOResult:\n",
- " \"\"\"Convert the JSON payload to an AUPIMOResult dataclass.\"\"\"\n",
- " if not isinstance(payload, dict):\n",
- " msg = f\"Invalid payload. Must be a dictionary. Got {type(payload)}.\"\n",
- " raise TypeError(msg)\n",
- " try:\n",
- " return AUPIMOResult(\n",
- " fpr_lower_bound=payload[\"fpr_lower_bound\"],\n",
- " fpr_upper_bound=payload[\"fpr_upper_bound\"],\n",
- " # `num_threshs` vs `num_thresholds` is an inconsistency with an older version of the JSON file\n",
- " num_thresholds=payload[\"num_threshs\"] if \"num_threshs\" in payload else payload[\"num_thresholds\"],\n",
- " thresh_lower_bound=payload[\"thresh_lower_bound\"],\n",
- " thresh_upper_bound=payload[\"thresh_upper_bound\"],\n",
- " aupimos=torch.tensor(payload[\"aupimos\"], dtype=torch.float64),\n",
- " )\n",
- "\n",
- " except KeyError as ex:\n",
- " msg = f\"Invalid payload. Missing key {ex}.\"\n",
- " raise ValueError(msg) from ex\n",
- "\n",
- " except (TypeError, ValueError) as ex:\n",
- " msg = f\"Invalid payload. Cause: {ex}.\"\n",
- " raise ValueError(msg) from ex\n",
- "\n",
- "\n",
- "def get_benchmark_aupimo_scores(model: str, dataset: str, verbose: bool = True) -> AUPIMOResult:\n",
- " \"\"\"Get the benchmark AUPIMO scores for a specific model and dataset.\n",
- "\n",
- " Args:\n",
- " model: The model name. See `_get_json_url` for the available models.\n",
- " dataset: The \"collection/dataset\", where 'collection' is either 'mvtec' or 'visa', and 'dataset' is\n",
- " the name of the dataset within the collection. See `_get_json_url` for the available datasets.\n",
- " verbose: Whether to print the progress.\n",
- "\n",
- " Returns:\n",
- " A `AUPIMOResult` dataclass with the AUPIMO scores from the benchmark results.\n",
- "\n",
- " More details in our paper: https://arxiv.org/abs/2401.01984\n",
- " \"\"\"\n",
- " if verbose:\n",
- " print(f\"Loading benchmark results for model '{model}' and dataset '{dataset}'\")\n",
- " url = get_benchmark_scores_url(model, dataset)\n",
- " if verbose:\n",
- " print(f\"Dowloading JSON file from {url}\")\n",
- " payload = download_json(url)\n",
- " if verbose:\n",
- " print(\"Converting payload to dataclass\")\n",
- " aupimo_result = load_aupimo_result_from_json_dict(payload)\n",
- " if verbose:\n",
- " print(\"Done!\")\n",
- " return payload, aupimo_result\n",
- "\n",
- "\n",
"json_model_a, aupimo_result_model_a = get_benchmark_aupimo_scores(\"patchcore_wr101\", \"mvtec/capsule\")\n",
"_, aupimo_result_model_b = get_benchmark_aupimo_scores(\"patchcore_wr50\", \"mvtec/capsule\")"
]
@@ -841,38 +774,13 @@
}
],
"source": [
- "def save_aupimo_result_to_json_dict(\n",
- " aupimo_result: AUPIMOResult,\n",
- " paths: list[str | Path] | None = None,\n",
- ") -> dict[str, str | float | int | list[str]]:\n",
- " \"\"\"Convert the AUPIMOResult dataclass to a JSON payload.\"\"\"\n",
- " payload = {\n",
- " \"fpr_lower_bound\": aupimo_result.fpr_lower_bound,\n",
- " \"fpr_upper_bound\": aupimo_result.fpr_upper_bound,\n",
- " \"num_thresholds\": aupimo_result.num_thresholds,\n",
- " \"thresh_lower_bound\": aupimo_result.thresh_lower_bound,\n",
- " \"thresh_upper_bound\": aupimo_result.thresh_upper_bound,\n",
- " \"aupimos\": aupimo_result.aupimos.tolist(),\n",
- " }\n",
- " if paths is not None:\n",
- " if len(paths) != aupimo_result.aupimos.shape[0]:\n",
- " msg = (\n",
- " \"Invalid paths. It must have the same length as the AUPIMO scores. \"\n",
- " f\"Got {len(paths)} paths and {aupimo_result.aupimos.shape[0]} scores.\"\n",
- " )\n",
- " raise ValueError(msg)\n",
- " # make sure the paths are strings, not pathlib.Path objects\n",
- " payload[\"paths\"] = [str(p) for p in paths]\n",
- " return payload\n",
- "\n",
- "\n",
"payload = save_aupimo_result_to_json_dict(aupimo_result_model_a)\n",
"print(f\"{payload.keys()=}\")"
]
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
@@ -890,7 +798,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -910,14 +818,14 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "8,0K\t/tmp/tmpsuauy_de/aupimo_result.json\n"
+ "8,0K\t/tmp/tmpwhpnd7x_/aupimo_result.json\n"
]
}
],
@@ -954,7 +862,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
@@ -1108,7 +1016,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -1157,7 +1065,7 @@
"0 A B 0.995 0.005 2.872"
]
},
- "execution_count": 19,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
@@ -1169,7 +1077,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
@@ -1218,7 +1126,7 @@
"0 A B 0.998 0.002 1965.500"
]
},
- "execution_count": 20,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
@@ -1230,7 +1138,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 22,
"metadata": {},
"outputs": [
{
@@ -1279,7 +1187,7 @@
"0 A B 1.000 0.000 1823.000"
]
},
- "execution_count": 21,
+ "execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
@@ -1302,126 +1210,126 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
- "
\n",
+ "
\n",
" \n",
"
\n",
"
\n",
- "
modela
\n",
- "
modelb
\n",
- "
confidence
\n",
- "
pvalue
\n",
- "
statistic
\n",
+ "
modela
\n",
+ "
modelb
\n",
+ "
confidence
\n",
+ "
pvalue
\n",
+ "
statistic
\n",
"
\n",
" \n",
" \n",
"
\n",
- "
0
\n",
- "
efficientad_wr101_s_ext
\n",
- "
patchcore_wr101
\n",
- "
0.999402
\n",
- "
0.000598
\n",
- "
1580.000000
\n",
+ "
0
\n",
+ "
efficientad_wr101_s_ext
\n",
+ "
patchcore_wr101
\n",
+ "
0.999402
\n",
+ "
0.000598
\n",
+ "
1580.000000
\n",
"
\n",
"
\n",
- "
1
\n",
- "
efficientad_wr101_s_ext
\n",
- "
rd++_wr50_ext
\n",
- "
0.773659
\n",
- "
0.226341
\n",
- "
2193.500000
\n",
+ "
1
\n",
+ "
efficientad_wr101_s_ext
\n",
+ "
rd++_wr50_ext
\n",
+ "
0.773659
\n",
+ "
0.226341
\n",
+ "
2193.500000
\n",
"
\n",
"
\n",
- "
2
\n",
- "
efficientad_wr101_s_ext
\n",
- "
simplenet_wr50_ext
\n",
- "
1.000000
\n",
- "
0.000000
\n",
- "
690.500000
\n",
+ "
2
\n",
+ "
efficientad_wr101_s_ext
\n",
+ "
simplenet_wr50_ext
\n",
+ "
1.000000
\n",
+ "
0.000000
\n",
+ "
690.500000
\n",
"
\n",
"
\n",
- "
3
\n",
- "
efficientad_wr101_s_ext
\n",
- "
uflow_ext
\n",
- "
0.999447
\n",
- "
0.000553
\n",
- "
1550.500000
\n",
+ "
3
\n",
+ "
efficientad_wr101_s_ext
\n",
+ "
uflow_ext
\n",
+ "
0.999447
\n",
+ "
0.000553
\n",
+ "
1550.500000
\n",
"
\n",
"
\n",
- "
4
\n",
- "
patchcore_wr101
\n",
- "
rd++_wr50_ext
\n",
- "
0.999980
\n",
- "
0.000020
\n",
- "
1333.000000
\n",
+ "
4
\n",
+ "
patchcore_wr101
\n",
+ "
rd++_wr50_ext
\n",
+ "
0.999980
\n",
+ "
0.000020
\n",
+ "
1333.000000
\n",
"
\n",
"
\n",
- "
5
\n",
- "
patchcore_wr101
\n",
- "
simplenet_wr50_ext
\n",
- "
1.000000
\n",
- "
0.000000
\n",
- "
351.500000
\n",
+ "
5
\n",
+ "
patchcore_wr101
\n",
+ "
simplenet_wr50_ext
\n",
+ "
1.000000
\n",
+ "
0.000000
\n",
+ "
351.500000
\n",
"
\n",
"
\n",
- "
6
\n",
- "
patchcore_wr101
\n",
- "
uflow_ext
\n",
- "
0.731875
\n",
- "
0.268125
\n",
- "
2213.000000
\n",
+ "
6
\n",
+ "
patchcore_wr101
\n",
+ "
uflow_ext
\n",
+ "
0.731875
\n",
+ "
0.268125
\n",
+ "
2213.000000
\n",
"
\n",
"
\n",
- "
7
\n",
- "
rd++_wr50_ext
\n",
- "
simplenet_wr50_ext
\n",
- "
1.000000
\n",
- "
0.000000
\n",
- "
967.000000
\n",
+ "
7
\n",
+ "
rd++_wr50_ext
\n",
+ "
simplenet_wr50_ext
\n",
+ "
1.000000
\n",
+ "
0.000000
\n",
+ "
967.000000
\n",
"
\n",
"
\n",
- "
8
\n",
- "
rd++_wr50_ext
\n",
- "
uflow_ext
\n",
- "
0.999945
\n",
- "
0.000055
\n",
- "
1383.000000
\n",
+ "
8
\n",
+ "
rd++_wr50_ext
\n",
+ "
uflow_ext
\n",
+ "
0.999945
\n",
+ "
0.000055
\n",
+ "
1383.000000
\n",
"
\n",
"
\n",
- "
9
\n",
- "
simplenet_wr50_ext
\n",
- "
uflow_ext
\n",
- "
1.000000
\n",
- "
0.000000
\n",
- "
318.500000
\n",
+ "
9
\n",
+ "
simplenet_wr50_ext
\n",
+ "
uflow_ext
\n",
+ "
1.000000
\n",
+ "
0.000000
\n",
+ "
318.500000
\n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
- ""
+ ""
]
},
- "execution_count": 22,
+ "execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
@@ -1452,7 +1360,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
diff --git a/src/anomalib/metrics/pimo/__init__.py b/src/anomalib/metrics/pimo/__init__.py
index 174f546e4d..1ddf8ca9ba 100644
--- a/src/anomalib/metrics/pimo/__init__.py
+++ b/src/anomalib/metrics/pimo/__init__.py
@@ -9,6 +9,11 @@
from .binary_classification_curve import ThresholdMethod
from .pimo import AUPIMO, PIMO, AUPIMOResult, PIMOResult
+from .utils_benchmark import (
+ get_benchmark_aupimo_scores,
+ load_aupimo_result_from_json_dict,
+ save_aupimo_result_to_json_dict,
+)
__all__ = [
# constants
@@ -20,4 +25,8 @@
"PIMO",
"AUPIMO",
"StatsOutliersPolicy",
+ # utils_benchmark
+ "get_benchmark_aupimo_scores",
+ "load_aupimo_result_from_json_dict",
+ "save_aupimo_result_to_json_dict",
]
diff --git a/src/anomalib/metrics/pimo/utils_benchmark.py b/src/anomalib/metrics/pimo/utils_benchmark.py
new file mode 100644
index 0000000000..09fd210af0
--- /dev/null
+++ b/src/anomalib/metrics/pimo/utils_benchmark.py
@@ -0,0 +1,172 @@
+"""Utility functions to compare AUPIMO scores with the benchmark results from AUPIMO's official repository."""
+
+# Copyright (C) 2024 Intel Corporation
+# SPDX-License-Identifier: Apache-2.0
+
+import json
+import logging
+import urllib.request
+from pathlib import Path
+
+import torch
+
+from .dataclasses import AUPIMOResult
+
+logger = logging.getLogger(__name__)
+
+
+def _get_benchmark_scores_url(model: str, dataset: str) -> str:
+ """Generate the URL for the JSON file of a specific model and dataset.
+
+ Args:
+ model: The model name. See `_get_json_url` for the available models.
+ Available models: https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark
+ dataset: The "collection/dataset", where 'collection' is either 'mvtec' or 'visa', and 'dataset' is
+ the name of the dataset within the collection (lowercase, words split by '_').
+ Available datasets:
+ https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark/efficientad_wr101_m_ext
+ Returns:
+ The URL for the JSON file of the model and dataset in the benchmark from AUPIMO's official repository.
+ Reference: https://github.com/jpcbertoldo/aupimo
+ """
+ root_url = "https://raw.githubusercontent.com/jpcbertoldo/aupimo/refs/heads/main/data/experiments/benchmark"
+ models = {
+ "efficientad_wr101_m_ext",
+ "efficientad_wr101_s_ext",
+ "fastflow_cait_m48_448",
+ "fastflow_wr50",
+ "padim_r18",
+ "padim_wr50",
+ "patchcore_wr101",
+ "patchcore_wr50",
+ "pyramidflow_fnf_ext",
+ "pyramidflow_r18_ext",
+ "rd++_wr50_ext",
+ "simplenet_wr50_ext",
+ "uflow_ext",
+ }
+ if model not in models:
+ msg = f"Model '{model}' not available. Choose one of {sorted(models)}."
+ raise ValueError(msg)
+ datasets = {
+ "mvtec/bottle",
+ "mvtec/cable",
+ "mvtec/capsule",
+ "mvtec/carpet",
+ "mvtec/grid",
+ "mvtec/hazelnut",
+ "mvtec/leather",
+ "mvtec/metal_nut",
+ "mvtec/pill",
+ "mvtec/screw",
+ "mvtec/tile",
+ "mvtec/toothbrush",
+ "mvtec/transistor",
+ "mvtec/wood",
+ "mvtec/zipper",
+ "visa/candle",
+ "visa/capsules",
+ "visa/cashew",
+ "visa/chewinggum",
+ "visa/fryum",
+ "visa/macaroni1",
+ "visa/macaroni2",
+ "visa/pcb1",
+ "visa/pcb2",
+ "visa/pcb3",
+ "visa/pcb4",
+ "visa/pipe_fryum",
+ }
+ if dataset not in datasets:
+ msg = f"Dataset '{dataset}' not available. Choose one of {sorted(datasets)}."
+ raise ValueError(msg)
+ return f"{root_url}/{model}/{dataset}/aupimo/aupimos.json"
+
+
+def _download_json(url_str: str) -> dict[str, str | float | int | list[str]]:
+ """Download the JSON content from an URL."""
+ with urllib.request.urlopen(url_str) as url: # noqa: S310
+ return json.load(url)
+
+
+def load_aupimo_result_from_json_dict(payload: dict) -> AUPIMOResult:
+ """Convert the JSON payload to an AUPIMOResult dataclass."""
+ if not isinstance(payload, dict):
+ msg = f"Invalid payload. Must be a dictionary. Got {type(payload)}."
+ raise TypeError(msg)
+ try:
+ # `num_threshs` vs `num_thresholds` is an inconsistency with an older version of the JSON file
+ num_thresholds: int | None = payload["num_threshs"] if "num_threshs" in payload else payload["num_thresholds"]
+ return AUPIMOResult(
+ fpr_lower_bound=float(payload["fpr_lower_bound"]),
+ fpr_upper_bound=float(payload["fpr_upper_bound"]),
+ num_thresholds=num_thresholds if num_thresholds is None else int(num_thresholds),
+ thresh_lower_bound=float(payload["thresh_lower_bound"]),
+ thresh_upper_bound=float(payload["thresh_upper_bound"]),
+ aupimos=torch.tensor(payload["aupimos"], dtype=torch.float64),
+ )
+
+ except KeyError as ex:
+ msg = f"Invalid payload. Missing key {ex}."
+ raise ValueError(msg) from ex
+
+ except (TypeError, ValueError) as ex:
+ msg = f"Invalid payload. Cause: {ex}."
+ raise ValueError(msg) from ex
+
+
+def get_benchmark_aupimo_scores(
+ model: str,
+ dataset: str,
+ verbose: bool = True,
+) -> tuple[dict[str, str | float | int | list[str]], AUPIMOResult]:
+ """Get the benchmark AUPIMO scores for a specific model and dataset.
+
+ Args:
+ model: The model name. See `_get_json_url` for the available models.
+ dataset: The "collection/dataset", where 'collection' is either 'mvtec' or 'visa', and 'dataset' is
+ the name of the dataset within the collection. See `_get_json_url` for the available datasets.
+ verbose: Whether to logger.debug the progress.
+
+ Returns:
+ A `AUPIMOResult` dataclass with the AUPIMO scores from the benchmark results.
+
+ More details in our paper: https://arxiv.org/abs/2401.01984
+ """
+ if verbose:
+ logger.debug(f"Loading benchmark results for model '{model}' and dataset '{dataset}'")
+ url = _get_benchmark_scores_url(model, dataset)
+ if verbose:
+ logger.debug(f"Dowloading JSON file from {url}")
+ payload = _download_json(url)
+ if verbose:
+ logger.debug("Converting payload to dataclass")
+ aupimo_result = load_aupimo_result_from_json_dict(payload)
+ if verbose:
+ logger.debug("Done!")
+ return payload, aupimo_result
+
+
+def save_aupimo_result_to_json_dict(
+ aupimo_result: AUPIMOResult,
+ paths: list[str | Path] | None = None,
+) -> dict[str, str | float | int | list[str]]:
+ """Convert the AUPIMOResult dataclass to a JSON payload."""
+ payload = {
+ "fpr_lower_bound": aupimo_result.fpr_lower_bound,
+ "fpr_upper_bound": aupimo_result.fpr_upper_bound,
+ "num_thresholds": aupimo_result.num_thresholds,
+ "thresh_lower_bound": aupimo_result.thresh_lower_bound,
+ "thresh_upper_bound": aupimo_result.thresh_upper_bound,
+ "aupimos": aupimo_result.aupimos.tolist(),
+ }
+ if paths is not None:
+ if len(paths) != aupimo_result.aupimos.shape[0]:
+ msg = (
+ "Invalid paths. It must have the same length as the AUPIMO scores. "
+ f"Got {len(paths)} paths and {aupimo_result.aupimos.shape[0]} scores."
+ )
+ raise ValueError(msg)
+ # make sure the paths are strings, not pathlib.Path objects
+ payload["paths"] = [str(p) for p in paths]
+ return payload
From 0c4fecdd9fec80a7149e24b7d674e23cce8dc80e Mon Sep 17 00:00:00 2001
From: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com>
Date: Mon, 21 Oct 2024 15:09:43 +0200
Subject: [PATCH 2/4] refactor utils benchmark
Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com>
---
src/anomalib/metrics/pimo/__init__.py | 18 +-
src/anomalib/metrics/pimo/utils_benchmark.py | 360 ++++++++++++++-----
2 files changed, 275 insertions(+), 103 deletions(-)
diff --git a/src/anomalib/metrics/pimo/__init__.py b/src/anomalib/metrics/pimo/__init__.py
index 1ddf8ca9ba..f8c63a335c 100644
--- a/src/anomalib/metrics/pimo/__init__.py
+++ b/src/anomalib/metrics/pimo/__init__.py
@@ -10,9 +10,12 @@
from .binary_classification_curve import ThresholdMethod
from .pimo import AUPIMO, PIMO, AUPIMOResult, PIMOResult
from .utils_benchmark import (
- get_benchmark_aupimo_scores,
- load_aupimo_result_from_json_dict,
- save_aupimo_result_to_json_dict,
+ AUPIMO_BENCHMARK_DATASETS,
+ AUPIMO_BENCHMARK_MODELS,
+ aupimo_result_from_json_dict,
+ aupimo_result_to_json_dict,
+ download_aupimo_benchmark_scores,
+ get_aupimo_benchmark,
)
__all__ = [
@@ -26,7 +29,10 @@
"AUPIMO",
"StatsOutliersPolicy",
# utils_benchmark
- "get_benchmark_aupimo_scores",
- "load_aupimo_result_from_json_dict",
- "save_aupimo_result_to_json_dict",
+ "AUPIMO_BENCHMARK_DATASETS",
+ "AUPIMO_BENCHMARK_MODELS",
+ "aupimo_result_from_json_dict",
+ "aupimo_result_to_json_dict",
+ "download_aupimo_benchmark_scores",
+ "get_aupimo_benchmark",
]
diff --git a/src/anomalib/metrics/pimo/utils_benchmark.py b/src/anomalib/metrics/pimo/utils_benchmark.py
index 09fd210af0..aabdf3c4f4 100644
--- a/src/anomalib/metrics/pimo/utils_benchmark.py
+++ b/src/anomalib/metrics/pimo/utils_benchmark.py
@@ -1,96 +1,125 @@
-"""Utility functions to compare AUPIMO scores with the benchmark results from AUPIMO's official repository."""
+"""Utility functions to compare AUPIMO scores with the benchmark results from AUPIMO's official repository.
+
+Official repository: https://github.com/jpcbertoldo/aupimo
+Benchmark data: https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark
+"""
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
import json
import logging
-import urllib.request
+from concurrent.futures import ThreadPoolExecutor
+from itertools import product
from pathlib import Path
+import pandas as pd
+import requests
import torch
+from pandas import DataFrame
from .dataclasses import AUPIMOResult
logger = logging.getLogger(__name__)
+AUPIMO_BENCHMARK_MODELS = {
+ "efficientad_wr101_m_ext",
+ "efficientad_wr101_s_ext",
+ "fastflow_cait_m48_448",
+ "fastflow_wr50",
+ "padim_r18",
+ "padim_wr50",
+ "patchcore_wr101",
+ "patchcore_wr50",
+ "pyramidflow_fnf_ext",
+ "pyramidflow_r18_ext",
+ "rd++_wr50_ext",
+ "simplenet_wr50_ext",
+ "uflow_ext",
+}
+
+AUPIMO_BENCHMARK_DATASETS = {
+ "mvtec/bottle",
+ "mvtec/cable",
+ "mvtec/capsule",
+ "mvtec/carpet",
+ "mvtec/grid",
+ "mvtec/hazelnut",
+ "mvtec/leather",
+ "mvtec/metal_nut",
+ "mvtec/pill",
+ "mvtec/screw",
+ "mvtec/tile",
+ "mvtec/toothbrush",
+ "mvtec/transistor",
+ "mvtec/wood",
+ "mvtec/zipper",
+ "visa/candle",
+ "visa/capsules",
+ "visa/cashew",
+ "visa/chewinggum",
+ "visa/fryum",
+ "visa/macaroni1",
+ "visa/macaroni2",
+ "visa/pcb1",
+ "visa/pcb2",
+ "visa/pcb3",
+ "visa/pcb4",
+ "visa/pipe_fryum",
+}
+
+
+def _validate_benchmark_model(model: str) -> None:
+ if model not in AUPIMO_BENCHMARK_MODELS:
+ msg = f"Model '{model}' not available. Choose one of {sorted(AUPIMO_BENCHMARK_MODELS)}."
+ raise ValueError(msg)
+
+
+def _validate_benchmark_dataset(dataset: str) -> None:
+ if dataset not in AUPIMO_BENCHMARK_DATASETS:
+ msg = f"Dataset '{dataset}' not available. Choose one of {sorted(AUPIMO_BENCHMARK_DATASETS)}."
+ raise ValueError(msg)
+
-def _get_benchmark_scores_url(model: str, dataset: str) -> str:
+def _get_benchmark_json_url(model: str, dataset: str) -> str:
"""Generate the URL for the JSON file of a specific model and dataset.
Args:
- model: The model name. See `_get_json_url` for the available models.
- Available models: https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark
- dataset: The "collection/dataset", where 'collection' is either 'mvtec' or 'visa', and 'dataset' is
- the name of the dataset within the collection (lowercase, words split by '_').
- Available datasets:
- https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark/efficientad_wr101_m_ext
+ model: see `anomalib.metrics.pimo.AUPIMO_BENCHMARK_MODELS`
+ dataset: "collection/category", see `anomalib.metrics.pimo.AUPIMO_BENCHMARK_DATASETS`
+
Returns:
The URL for the JSON file of the model and dataset in the benchmark from AUPIMO's official repository.
- Reference: https://github.com/jpcbertoldo/aupimo
"""
root_url = "https://raw.githubusercontent.com/jpcbertoldo/aupimo/refs/heads/main/data/experiments/benchmark"
- models = {
- "efficientad_wr101_m_ext",
- "efficientad_wr101_s_ext",
- "fastflow_cait_m48_448",
- "fastflow_wr50",
- "padim_r18",
- "padim_wr50",
- "patchcore_wr101",
- "patchcore_wr50",
- "pyramidflow_fnf_ext",
- "pyramidflow_r18_ext",
- "rd++_wr50_ext",
- "simplenet_wr50_ext",
- "uflow_ext",
- }
- if model not in models:
- msg = f"Model '{model}' not available. Choose one of {sorted(models)}."
- raise ValueError(msg)
- datasets = {
- "mvtec/bottle",
- "mvtec/cable",
- "mvtec/capsule",
- "mvtec/carpet",
- "mvtec/grid",
- "mvtec/hazelnut",
- "mvtec/leather",
- "mvtec/metal_nut",
- "mvtec/pill",
- "mvtec/screw",
- "mvtec/tile",
- "mvtec/toothbrush",
- "mvtec/transistor",
- "mvtec/wood",
- "mvtec/zipper",
- "visa/candle",
- "visa/capsules",
- "visa/cashew",
- "visa/chewinggum",
- "visa/fryum",
- "visa/macaroni1",
- "visa/macaroni2",
- "visa/pcb1",
- "visa/pcb2",
- "visa/pcb3",
- "visa/pcb4",
- "visa/pipe_fryum",
- }
- if dataset not in datasets:
- msg = f"Dataset '{dataset}' not available. Choose one of {sorted(datasets)}."
- raise ValueError(msg)
+ _validate_benchmark_model(model)
+ _validate_benchmark_dataset(dataset)
return f"{root_url}/{model}/{dataset}/aupimo/aupimos.json"
-def _download_json(url_str: str) -> dict[str, str | float | int | list[str]]:
+def _download_benchmark_json(url: str) -> dict:
"""Download the JSON content from an URL."""
- with urllib.request.urlopen(url_str) as url: # noqa: S310
- return json.load(url)
+ request = requests.get(url, timeout=10)
+ return json.loads(request.text)
+
+def aupimo_result_from_json_dict(payload: dict) -> AUPIMOResult:
+ """Convert the dictionary from a JSON payload to an AUPIMOResult dataclass.
+
+ Args:
+ payload: The JSON from the benchmark results:
+ {
+ "fpr_lower_bound": float,
+ "fpr_upper_bound": float,
+ "num_thresholds": int | None, # or "num_threshs"
+ "thresh_lower_bound": float,
+ "thresh_upper_bound": float,
+ "aupimos": list[float],
+ }
-def load_aupimo_result_from_json_dict(payload: dict) -> AUPIMOResult:
- """Convert the JSON payload to an AUPIMOResult dataclass."""
+ Returns:
+ An `anomalib.metrics.pimo.AUPIMOResult` dataclass.
+ """
if not isinstance(payload, dict):
msg = f"Invalid payload. Must be a dictionary. Got {type(payload)}."
raise TypeError(msg)
@@ -115,43 +144,19 @@ def load_aupimo_result_from_json_dict(payload: dict) -> AUPIMOResult:
raise ValueError(msg) from ex
-def get_benchmark_aupimo_scores(
- model: str,
- dataset: str,
- verbose: bool = True,
-) -> tuple[dict[str, str | float | int | list[str]], AUPIMOResult]:
- """Get the benchmark AUPIMO scores for a specific model and dataset.
+def aupimo_result_to_json_dict(
+ aupimo_result: AUPIMOResult,
+ paths: list[str | Path] | None = None,
+) -> dict:
+ """Convert the AUPIMOResult dataclass to a dictionary for JSON serialization.
Args:
- model: The model name. See `_get_json_url` for the available models.
- dataset: The "collection/dataset", where 'collection' is either 'mvtec' or 'visa', and 'dataset' is
- the name of the dataset within the collection. See `_get_json_url` for the available datasets.
- verbose: Whether to logger.debug the progress.
+ aupimo_result: The AUPIMO scores from the benchmark results.
+ paths: The paths of the images used to compute the AUPIMO scores. Optional.
Returns:
- A `AUPIMOResult` dataclass with the AUPIMO scores from the benchmark results.
-
- More details in our paper: https://arxiv.org/abs/2401.01984
+ A dictionary with the AUPIMO scores and the paths.
"""
- if verbose:
- logger.debug(f"Loading benchmark results for model '{model}' and dataset '{dataset}'")
- url = _get_benchmark_scores_url(model, dataset)
- if verbose:
- logger.debug(f"Dowloading JSON file from {url}")
- payload = _download_json(url)
- if verbose:
- logger.debug("Converting payload to dataclass")
- aupimo_result = load_aupimo_result_from_json_dict(payload)
- if verbose:
- logger.debug("Done!")
- return payload, aupimo_result
-
-
-def save_aupimo_result_to_json_dict(
- aupimo_result: AUPIMOResult,
- paths: list[str | Path] | None = None,
-) -> dict[str, str | float | int | list[str]]:
- """Convert the AUPIMOResult dataclass to a JSON payload."""
payload = {
"fpr_lower_bound": aupimo_result.fpr_lower_bound,
"fpr_upper_bound": aupimo_result.fpr_upper_bound,
@@ -170,3 +175,164 @@ def save_aupimo_result_to_json_dict(
# make sure the paths are strings, not pathlib.Path objects
payload["paths"] = [str(p) for p in paths]
return payload
+
+
+def _download_aupimo_benchmark_scores(model: str, dataset: str) -> tuple[dict, AUPIMOResult]:
+ """Get the benchmark AUPIMO scores for a specific model and dataset from AUPIMO's official repository.
+
+ Args:
+ model: see `anomalib.metrics.pimo.AUPIMO_BENCHMARK_MODELS`
+ dataset: "collection/category", see `anomalib.metrics.pimo.AUPIMO_BENCHMARK_DATASETS`
+
+ Returns:
+ (dict, AUPIMOResult): A tuple with the JSON payload and the AUPIMO scores.
+ dict: The unserialized JSON from the benchmark results. See `aupimo_result_from_json_dict`.
+ AUPIMOResult: The AUPIMO scores in dataclass format. See `anomalib.metrics.pimo.AUPIMOResult`.
+ """
+ logger.debug(f"Loading benchmark results for {model=} {dataset=}")
+ url = _get_benchmark_json_url(model, dataset)
+ logger.debug(f"Dowloading JSON from {url=}")
+ payload = _download_benchmark_json(url)
+ logger.debug("Converting json payload to dataclass")
+ aupimo_result = aupimo_result_from_json_dict(payload)
+ logger.debug(f"Done loading benchmark results for {model=} {dataset=}")
+ return payload, aupimo_result
+
+
+def _download_aupimo_benchmark_scores_multithreaded(
+ model: str,
+ dataset: str,
+) -> tuple[tuple[str, str], tuple[dict, AUPIMOResult]]:
+ """Do the same as `_download_aupimo_benchmark_scores` but return the job's arguments as well."""
+ return (model, dataset), _download_aupimo_benchmark_scores(model, dataset)
+
+
+def download_aupimo_benchmark_scores(
+ model: str | None,
+ dataset: str | None,
+ avoid_multithread_download: bool = False,
+) -> dict[tuple[str, str], tuple[dict, AUPIMOResult]]:
+ """Dowload AUPIMO scores AUPIMO's paper benchmark (stored in the official repository).
+
+ If `model` is None, all models are considered.
+ If `dataset` is None, all datasets are considered.
+ If both `model` and `dataset` are None, all combinations of models and datasets are considered.
+
+ Official repository: https://github.com/jpcbertoldo/aupimo
+ Benchmark data: https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark
+
+ Args:
+ model: The model name. Available models: `anomalib.metrics.pimo.AUPIMO_BENCHMARK_MODELS`. If None, all models.
+ dataset: The "collection/category", where 'collection' is either 'mvtec' or 'visa', and 'category' is
+ the name of the dataset within the collection. Lowercase, words split by '_' (e.g. 'metal_nut').
+ Available datasets: `anomalib.metrics.pimo.AUPIMO_BENCHMARK_DATASETS`. If None, all datasets.
+ avoid_multithread_download: Multi-threaded download is used by default when downloading multiple files.
+ Set this to `True` to force single-threaded download.
+
+ Returns:
+ dict[(model, dataset), (dict, AUPIMOResult)]: dictionary of results.
+ key: (model, dataset) pair, e.g. ('efficientad_wr101_m_ext', 'mvtec/bottle')
+ value: tuple with the JSON payload dictionary and the AUPIMO scores (dataclass).
+ dict: The unserialized JSON from the benchmark results. See `aupimo_result_from_json_dict`.
+ AUPIMOResult: The AUPIMO scores in dataclass format. See `anomalib.metrics.pimo.AUPIMOResult`.
+ """
+ if model is None:
+ models = sorted(AUPIMO_BENCHMARK_MODELS)
+ else:
+ _validate_benchmark_model(model)
+ models = [model]
+
+ if dataset is None:
+ datasets = sorted(AUPIMO_BENCHMARK_DATASETS)
+ else:
+ _validate_benchmark_dataset(dataset)
+ datasets = [dataset]
+
+ args = list(product(models, datasets))
+ logger.debug(f"Downloading benchmark results for {len(args)} (model, dataset) pairs")
+
+ if len(args) == 1:
+ logger.debug("Using single-threaded download.")
+ return {args[0]: _download_aupimo_benchmark_scores(models[0], datasets[0])}
+
+ if avoid_multithread_download:
+ logger.debug(f"Using single-threaded download due to {avoid_multithread_download=}")
+ results = {}
+ for model_, dataset_ in args:
+ results[model_, dataset_] = _download_aupimo_benchmark_scores(model_, dataset_)
+ return results
+
+ logger.debug("Using multi-threaded download.")
+ models, datasets = list(zip(*args, strict=True)) # type: ignore # noqa: PGH003
+ with ThreadPoolExecutor(thread_name_prefix="download_from_aupimo_benchmark_") as executor:
+ results = executor.map(_download_aupimo_benchmark_scores_multithreaded, models, datasets) # type: ignore # noqa: PGH003
+ return dict(results)
+
+
+def get_aupimo_benchmark(
+ model: str | None,
+ dataset: str | None,
+ avoid_multithread_download: bool = False,
+) -> tuple[DataFrame, DataFrame]:
+ """Dowload results from AUPIMO's paper benchmark (stored in the official repository) and format in DataFrames.
+
+ If `model` is None, all models are considered.
+ If `dataset` is None, all datasets are considered.
+ If both `model` and `dataset` are None, all combinations of models and datasets are considered.
+
+ Official repository: https://github.com/jpcbertoldo/aupimo
+ Benchmark data: https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark
+
+ Args:
+ model: The model name. Available models: `anomalib.metrics.pimo.AUPIMO_BENCHMARK_MODELS`. If None, all models.
+ dataset: The "collection/category", where 'collection' is either 'mvtec' or 'visa', and 'category' is
+ the name of the dataset within the collection. Lowercase, words split by '_' (e.g. 'metal_nut').
+ Available datasets: `anomalib.metrics.pimo.AUPIMO_BENCHMARK_DATASETS`. If None, all datasets.
+ avoid_multithread_download: Multi-threaded download is used by default when downloading multiple files.
+ Set this to `True` to force single-threaded download.
+
+ Returns:
+ (data_per_set, data_per_image): A tuple with two DataFrames.
+ data_per_set: for example, at which anomaly scores of are the integration FPRn bounds met?
+ data_per_image: AUPIMO scores of each image and the path to the input image.
+ """
+ # don't validate model and dataset here, it's done in `download_aupimo_benchmark_scores`
+ results = download_aupimo_benchmark_scores(
+ model=model,
+ dataset=dataset,
+ avoid_multithread_download=avoid_multithread_download,
+ )
+
+ data = pd.DataFrame.from_records([
+ {
+ "model": model,
+ "dataset": dataset,
+ # per-set data
+ "fpr_lower_bound": aupimo_result.fpr_lower_bound,
+ "fpr_upper_bound": aupimo_result.fpr_upper_bound,
+ "num_thresholds": aupimo_result.num_thresholds,
+ "thresh_lower_bound": aupimo_result.thresh_lower_bound,
+ "thresh_upper_bound": aupimo_result.thresh_upper_bound,
+ # per-image data
+ "sample_index": list(range(num_samples := len(aupimo_result.aupimos))),
+ "aupimo": aupimo_result.aupimos.tolist(),
+ "path": paths if (paths := json_dict["paths"]) is not None else [None] * num_samples,
+ }
+ for (model, dataset), (json_dict, aupimo_result) in results.items()
+ ])
+ data["model"] = data["model"].astype("category")
+ data["dataset"] = data["dataset"].astype("category")
+
+ data_per_set = (
+ data.drop(columns=["sample_index", "aupimo", "path"]).sort_values(["model", "dataset"]).reset_index(drop=True)
+ )
+
+ data_per_image = (
+ data[["model", "dataset", "sample_index", "aupimo", "path"]]
+ .explode(["sample_index", "aupimo", "path"])
+ .sort_values(["model", "dataset", "sample_index"])
+ .reset_index(drop=True)
+ .astype({"sample_index": int, "aupimo": float, "path": "string"})
+ )
+
+ return data_per_set, data_per_image
From e05a20bf47d089452de66057de0a1ba235fb4c93 Mon Sep 17 00:00:00 2001
From: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com>
Date: Mon, 21 Oct 2024 15:14:15 +0200
Subject: [PATCH 3/4] split the statistical comparisons in a single notebook
Signed-off-by: jpcbertoldo <24547377+jpcbertoldo@users.noreply.github.com>
---
.../700_metrics/701f_aupimo_advanced_v.ipynb | 1413 +++++++++++++++++
1 file changed, 1413 insertions(+)
create mode 100644 notebooks/700_metrics/701f_aupimo_advanced_v.ipynb
diff --git a/notebooks/700_metrics/701f_aupimo_advanced_v.ipynb b/notebooks/700_metrics/701f_aupimo_advanced_v.ipynb
new file mode 100644
index 0000000000..2160de7c36
--- /dev/null
+++ b/notebooks/700_metrics/701f_aupimo_advanced_v.ipynb
@@ -0,0 +1,1413 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# AUPIMO statistical comparison between two models\n",
+ "\n",
+ "Say, model A has a higher average AUPIMO than model B. \n",
+ "\n",
+ "Can you be _sure_ that A is better than B? \n",
+ "\n",
+ "We'll use statistical tests here to make informed decisions about this.\n",
+ "\n",
+ "> For basic usage, please check the notebook [701a_aupimo.ipynb](./701a_aupimo.ipynb).\n",
+ ">\n",
+ "> For fetching AUPIMO results from the paper's benchmark, please check the notebook [701e_aupimo_advanced_iv.ipynb](./701e_aupimo_advanced_iv.ipynb)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "# What is AUPIMO?\n",
+ "\n",
+ "The `Area Under the Per-Image Overlap [curve]` (AUPIMO) is a metric of recall (higher is better) designed for visual anomaly detection.\n",
+ "\n",
+ "Inspired by the [ROC](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) and [PRO](https://link.springer.com/article/10.1007/s11263-020-01400-4) curves, \n",
+ "\n",
+ "> AUPIMO is the area under a curve of True Positive Rate (TPR or _recall_) as a function of False Positive Rate (FPR) restricted to a fixed range. \n",
+ "\n",
+ "But:\n",
+ "- the TPR (Y-axis) is *per-image* (1 image = 1 curve/score);\n",
+ "- the FPR (X-axis) considers the (average of) **normal** images only; \n",
+ "- the FPR (X-axis) is in log scale and its range is [1e-5, 1e-4]\\* (harder detection task!).\n",
+ "\n",
+ "\\* The score (the area under the curve) is normalized to be in [0, 1].\n",
+ "\n",
+ "AUPIMO can be interpreted as\n",
+ "\n",
+ "> average segmentation recall in an image given that the model (nearly) does not yield false positives in normal images.\n",
+ "\n",
+ "References in the last cell.\n",
+ "\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Setup"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Install `anomalib` using `pip`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# TODO(jpcbertoldo): replace by `pip install anomalib` when AUPIMO is released # noqa: TD003\n",
+ "# %pip install ../.."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Imports"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/jcasagrandebertoldo/miniconda3/envs/anomalib-dev/lib/python3.10/site-packages/kornia/feature/lightglue.py:44: FutureWarning: `torch.cuda.amp.custom_fwd(args...)` is deprecated. Please use `torch.amp.custom_fwd(args..., device_type='cuda')` instead.\n",
+ " @torch.cuda.amp.custom_fwd(cast_inputs=torch.float32)\n"
+ ]
+ }
+ ],
+ "source": [
+ "%load_ext autoreload\n",
+ "%autoreload 2\n",
+ "\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "from matplotlib import pyplot as plt\n",
+ "from matplotlib.ticker import FixedLocator, IndexLocator, MaxNLocator, PercentFormatter\n",
+ "from scipy import stats\n",
+ "\n",
+ "from anomalib.metrics.pimo import get_aupimo_benchmark"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "pd.options.display.float_format = \"{:.3f}\".format"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Fetch results from AUPIMO's benchmark\n",
+ "\n",
+ "Unlike previous notebook, we will not train and evaluate the models here.\n",
+ "\n",
+ "We'll load the AUPIMO scores from the benchmark presented in our paper (check the reference in the last cell).\n",
+ "\n",
+ "These scores can be found in AUPIMO's official repository in [`jpcbertoldo:aupimo/data/experiments/benchmark`](https://github.com/jpcbertoldo/aupimo/tree/main/data/experiments/benchmark).\n",
+ "\n",
+ "> For details, see the notebook [701e_aupimo_advanced_iv.ipynb](./701e_aupimo_advanced_iv.ipynb)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots(figsize=(5, 5))\n",
+ "modela_is_better = modela > modelb\n",
+ "ax.scatter(modela[modela_is_better], modelb[modela_is_better], alpha=0.3, s=10, color=\"red\", marker=\"o\")\n",
+ "ax.scatter(modela[~modela_is_better], modelb[~modela_is_better], alpha=0.3, s=10, color=\"blue\", marker=\"o\")\n",
+ "ax.plot([0, 1], [0, 1], color=\"black\", linestyle=\"--\")\n",
+ "ax.set_xlabel(\"Model A\")\n",
+ "ax.set_ylabel(\"Model B\")\n",
+ "ax.set_title(\"AUPIMO scores direct comparison\")\n",
+ "ax.grid()\n",
+ "fig # noqa: B018, RUF100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The dashed line is where both models have the same AUPIMO score.\n",
+ "\n",
+ "Notice that there are images where one performs better than the other and vice-versa."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Parametric Comparison\n",
+ "\n",
+ "Before using the statistical test, let's first visualize the data seen by the test.\n",
+ "\n",
+ "We'll use a _paired_ t-test, which means we'll compare the AUPIMO scores of the same image one by one."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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G2+8EWVlZVi5ciUmTJiA73znO3jrrbfC0qj106F1MWbMGACIqJsgCIIgCGK0Q3uWEwRBEARBpAAbNmxAc3Mznn/+eTz//PPDvl+7di2WL18OALDb7QAw7KDBIG63OyxdEKfTiTPPPDOhco4dOxZLlizBb37zG1RWVuKll16KmC4rKwtjx47F9u3bY/7e9u3bMX78eGRmZkZNM3PmTNTU1OA///kP3nrrLbz00kt49NFH8fOf/xx33XVXQnpiIV9ZDCC0avzBBx/EnDlzItqkp6cDAC6++GJUVFTglVdewTvvvIMHH3wQ999/P15++WWsXLlStzLHKvff/vY3FBUVDUtvNo++Ww75yvlYnwEAY0z17wcCASxbtgydnZ34yU9+ghkzZsDpdOLAgQO4+uqrww65BQCbzQZRjL/OqaCgANu2bcPbb7+NN998E2+++SaeeeYZXHnllXj22WdVlxMYWd0EQRAEQRC8M/pGrgRBEARBEIRq1q5di4KCAvzxj38c9t3LL7+MV155BY899hjS0tKQn58Ph8OBmpqaiL9VU1MDh8OhasW4Gi6//HJce+21yM7OxqpVq6KmO+ecc/Dkk09i8+bNYVtKBNm0aROamppw/fXXx83T6XTikksuwSWXXAKv14sLL7wQ99xzD2677Tbk5+cjMzMTO3fujPkbkydPjlhn1dXVoe9jUVJSAgDIzMxU9NBh7NixuPHGG3HjjTeitbUVc+fOxT333BN1sjw/Px9paWmhleByorW1EoLlLigoiFnuqVOnAkDcelSzJUsw7507d0bNO1jv0domLy8PTqdTcZ5KGFrHjDHU19fjhBNOADB40GptbS2effZZXHnllaF0sbZPUYrVasW5556Lc889F5Ik4cYbb8Tjjz+OO+64A9OmTUvYTwmCIAiCIJIZ2oaFIAiCIAgiyenv78fLL7+Mc845BxdddNGw/773ve+ht7cXr732GoDBlaTLly/H66+/jr1794b91t69e/H6669j+fLlUVecJspFF12EX/ziF3j00UfD9koeyi233IK0tDRcf/316OjoCPuus7MTN9xwAxwOB2655ZaY+Q21tVqtOO6448AYg8/ngyiKuOCCC/D666/js88+G2YfXGG7atUqfPLJJ/joo49C37lcLjzxxBOYMmUKjjvuuJjlmDdvHkpKSvDrX/8afX19w75va2sD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TJo0CYWFhdHsGxERERERERERERGRLQydWV5aWorly5fjhRdeQHV1NS6++GL4/X68/fbbGD58uFV9jGmKosDr9R7x5qrRqLGjDTMk5pCY264ap2Tnemd2q9owSuocOiU71zuzW9WGUVJzMLus7FLHyoxYzS41B7PLyi51rMyI1exSczC7rOxSx8ooJ30WMSLszfJf/vKX+OSTTzB16lQ88cQTOPvss+FyubB48WIr+xfzVFVFv379LK2xow0zJOaQmNuuGqdk53pndqvaMErqHDolO9d7183ubwwiv7gCn+6owP4aP9KTqjE+Jw15Q9LgiXNFpQ2zrzeD653ZrXi9XW2YEavZpeZgdlnZpY6VGbGaXWoOZpeVXepYGeWkzyJGhH0Zlg8++AAzZszAfffdh6lTp8Llav/DCkWHpmmoqKgwfGF8IzV2tGGGxBwSc9tV45TsXO/MblUbRkmdQ6dk53rvmtn9jUEsXrMLi9fsRtG+alT7DqFoXzUWr9mNxWt2wd/Y/r1xuN673pxHWuOU7FLHyoxYzS41B7PLyi51rMyI1exSczC7rOxSx8ooJ30WMSLszfJ169ahpqYGJ510EsaMGYOnn34aFRUVVvaNAOi6joqKCui6blmNHW2YITGHxNx21TglO9c7s1vVhlFS59Ap2bneu2b2/OIK5BdXIjM5AQPTEtE9TsPAtERkJicgf1cl8ovbf+/J9d715jzSGqdklzpWZsRqdqk5mF1WdqljZUasZpeag9llZZc6VkY56bOIEWFvlo8dOxZLly7Fvn37cN111+G1117DUUcdBU3TsGrVKtTU1FjZTyIiIiJyuE93VEBVFXg9ra8U6PXEQVWaniciIiIiIrJK2JvlzbxeL6655hqsW7cOmzZtwq233oqFCxciPT0d5557rhV9JCIiIqIYsL/GD6+77Uv9ed1x2F/jt7lHREREREQUSwxvlrd0zDHH4JFHHsG3336LV199NVp9ohYURUFycrLhu8gaqbGjDTMk5pCY264ap2Tnemd2q9owSuocOiU713vXzJ6e5IEv0HRdcgUK3G43FDS93hdoRHqSJ+I2Inm9GVzvzG5VnySud7v6JTG71BzMLiu71LEyI1azS83B7LKySx0ro5z0WcSIuI5f0jGXy4Xzzz8f559/fjS+HLWgqir69OljaY0dbZghMYfE3HbVOCU71zuz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SUhPT8f555+P7du3t3pNfX095syZg9TUVHTv3h0XXnghysrKOqnH0RFO7okTJx4277Nnz+6kHkfPs88+ixNOOAE9evRAjx49MG7cOHzwwQeh55043806yu7UOf+5hQsXQlEUzJs3L/SYk+e9pbayO3XeO3r/4uQ57yi7U+ccAL777jtcfvnlSE1NRbdu3XD88cfj888/Dz3v1PdyQMfZnfp+buDAgYflUhQFc+bMAeDsY72j7E491oPBIO6++25kZWWhW7duGDx4MO6//37ouh56jVOP9XCyO/VYB4CamhrMmzcPAwYMQLdu3ZCbm4sNGzaEnnfqvAMdZ3fKvEdjT+aHH37AZZddhh49eiAlJQUzZsxAbW2tjSmMi0butn4mLFy40MYUsnCz3Cavv/46brnlFtx777344osvMGLECJx11lnYv39/Z3fNcsceeyz27dsX+m/dunWd3SVL+Hw+jBgxAs8880ybzz/yyCN48sknsXjxYnz22Wfwer0466yzUF9fb3NPo6uj3ABw9tlnt1oDr776qo09tM7atWsxZ84cFBYWYtWqVWhoaMCZZ54Jn88Xes3NN9+Mv//973jjjTewdu1afP/995g2bVon9jpy4eQGgFmzZrWa90ceeaSTehw9ffv2xcKFC7Fx40Z8/vnnmDRpEs477zxs2bIFgDPnu1lH2QFnznlLGzZswHPPPYcTTjih1eNOnvdmR8oOOHfe23v/4vQ57+i9mxPn/MCBA8jLy0N8fDw++OADbN26FY899hh69uwZeo1T38uFkx1w5vu5DRs2tMq0atUqAMBFF10EwNnHekfZAWce6w8//DCeffZZPP300ygqKsLDDz+MRx55BE899VToNU491sPJDjjzWAeAmTNnYtWqVXjppZewadMmnHnmmZg8eTK+++47AM6dd6Dj7IAz5j0aezKXXXYZtmzZglWrVuHdd9/FJ598gmuvvdauCKZEay9qwYIFrdbA//zP/9jRfZl0ssUpp5yiz5kzJ/TvYDCoH3XUUfpDDz3Uib2y3r333quPGDGis7thOwD6W2+9Ffq3pml6Zmam/uijj4YeO3jwoO7xePRXX321E3pojZ/n1nVdnz59un7eeed1Sn/stn//fh2AvnbtWl3Xm+Y4Pj5ef+ONN0KvKSoq0gHo69ev76xuRt3Pc+u6rk+YMEG/6aabOq9TNurZ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6Nu3b+/cTkdBe7nr6ur0M888U+/du7ceHx+vDxgwQJ81a5ZjfknUVm4A+rJly0KvOXTokH7DDTfoPXv21BMTE/ULLrhA37dvX+d1Ogo6yv3NN9/op512mt6rVy/d4/HoQ4YM0W+77Ta9qqqqczseBddcc40+YMAA3e12671799bPOOOM0Ea5rjtzvpu1l93Jc96Wn2+WO3nef65ldifPe0fvX5w85+1ld/Kc67qu//3vf9ePO+443ePx6EOHDtWXLFnS6nmnvpfT9fazO/393MqVK3UAbc6lk491XT9ydicf69XV1fpNN92k9+/fX09ISNAHDRqk/+53v9P9fn/oNU491jvK7vRj/fXXX9cHDRqku91uPTMzU58zZ45+8ODB0PNOnXddbz+7k+Y9GnsylZWV+q9//Wu9e/fueo8ePfSrr75ar6mp6YQ04Ys098aNG/UxY8boycnJekJCgj5s2DD9D3/4Q5f7ZUk0Kbqu61aeuU5EREREREREREREJB2vWU5EREREREREREREMY+b5UREREREREREREQU87hZTkREREREREREREQxj5vlRERERERERERERBTzuFlORERERERERERERDGPm+VEREREREREREREFPO4WU5EREREREREREREMY+b5UREREREREREREQU87hZTkREREQUgxRFwdtvv226fs2aNVAUBQcPHoyoH1dddRXOP//8iL4GEREREVE0xHV2B5xM0zQEAoHO7gYREZEp8fHxcLlcnd0Noi6rvLwc99xzD9577z2UlZWhZ8+eGDFiBO655x7k5eV1dvcilpubi3379iE5Obmzu0JEREREFBXcLLdIIBBASUkJNE3r7K4QERGZlpKSgszMTCiK0tldIepyLrzwQgQCAfz5z3/GoEGDUFZWho8++giVlZWd3bWocLvdyMzM7OxuEBERERFFDTfLLaDrOvbt2weXy4V+/fpBVXm1GyIi6lp0XUddXR32798PAOjTp08n94ioazl48CA+/fRTrFmzBhMmTAAADBgwAKecckqr1z3++ONYtmwZdu/ejV69euGXv/wlHnnkEXTv3h0AsHz5csybNw8vv/wybr31VuzduxfnnHMO/vKXv+CNN97Avffei6qqKlxxxRVYtGhR6K9BBg4ciBkzZmDr1q145513kJKSgt/+9reYM2fOEfu8d+9e3HrrrfjnP/8JVVUxfvx4/O///i8GDhzY5uvXrFmD008/HQcOHEBKSkqor6+//jrmzZuHvXv34tRTT8WyZctC30OCwSBuu+02vPjii3C5XJgxYwZ0XW/1dTVNw8MPP4wlS5agtLQUOTk5uPvuu/Hf//3f0HUdU6ZMgcvlwj/+8Q8oioIffvgBJ5xwAq655hosWLDA1HwREREREQHcLLdEY2Mj6urqcNRRRyExMbGzu0NERGRKt27dAAD79+9Heno6L8lCZED37t3RvXt3vP322xg7diw8Hk+br1NVFU8++SSysrKwe/du3HDDDbj99tvxpz/9KfSauro6PPnkk3jttddQU1ODadOm4YILLkBKSgref/997N69GxdeeCHy8vLwq1/9KlT36KOP4re//S3uu+8+rFy5EjfddBNycnIwZcqUw/rR0NCAs846C+PGjcOnn36KuLg4PPDAAzj77LPx1Vdfwe12h5W7rq4Of/zjH/HSSy9BVVVcfvnl+M1vfoNXXnkFAPDYY49h+fLlePHFFzFs2DA89thjeOuttzBp0qTQ13jooYfw8ssvY/HixcjOzsYnn3yCyy+/HL1798aECRPw5z//GccffzyefPJJ3HTTTZg9ezaOPvpo3HPPPWH1kYiIiIjoSLhZboFgMAgAYX+oICIikqr5l74NDQ3cLCcyIC4uDsuXL8esWbOwePFijBo1ChMmTMAll1yCE044IfS6efPmhf5/4MCBeOCBBzB79uxWm+UNDQ149tlnMXjwYADAf//3f+Oll15CWVkZunfvjuHDh+P000/Hxx9/3GqzPC8vD3feeScAICcnB/n5+Vi0aFGbm+Wvv/46NE3D888/H7rs0rJly5CSkoI1a9bgzDPPDCt3Q0MDFi9eHOrr3LlzW53t/cQTT+Cuu+7CtGnTAACLFy/GypUrQ8/7/X784Q9/wIcffohx48YBAAYNGoR169bhueeew4QJE3D00Ufjueeew5VXXonS0lK8//77+Pe//424OH60ISIiIqLI8PogFuL1XYmIqKvjzzIi8y688EJ8//33eOedd3D22WdjzZo1GDVqFJYvXx56zYcffogzzjgDRx99NJKSknDFFVegsrISdXV1odckJiaGNp8BICMjAwMHDgxdqqX5sebLJjVr3mxu+e+ioqI2+/qf//wHxcXFSEpKCp0V36tXL9TX12PXrl1hZ/55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wtatW1ttrhn1wgsv4NZbbz3sLPIbbrgBL774IhYuXGj6a5u1dUHbN88Cmi6t0tLGuyeH/dp1d5weWcfa0N5cDx8+HB6PB9988w0mTJjQZn1+fj5yc3Nxww03hB7btWtX1PvZGRrLy494aQ01MRGN5eWW96ErHYtH4nK5cOgIZ2xb7ZgvNh75SVfr77M5+euO8EIAauv7YQ/56MNIutUmHotEREREREREnYub5QKlJ3lQVFrT5nO+QCP69zJ+XVyjXC5X6BIOLtfhG/derxfXX389brvtNvTq1Qv9+/fHI488grq6OsyYMQMAMHv2bDz22GO47bbbMHPmTGzcuBHLly9v9XXuuOMOjB07FnPnzsXMmTPh9XqxdetWrFq1Ck8//XSH/fzyyy/xxRdf4JVXXsHQoUNbPffrX/8aCxYswAMPPIC4OHuXupHriFv12nC1N9dJSUn4zW9+g5tvvhmapuHUU09FVVUV8vPz0aNHD0yfPh3Z2dn4y1/+gpUrVyIrKwsvvfQSNmzYgKysrKj31W5xvXvD/+M1pH9Oq6uDp18/y/vQVY7FZo2NjSgtLQXw02VYtm7dijvuuMPkCETGyHXErXptuHgsEhEREREREXUuteOXkN3G56RB03T4/K1v5ujzN0LTm563Q48ePdCjR48jPr9w4UJceOGFuOKKKzBq1CgUFxdj5cqV6NmzJ4CmSzf83//9H95++22MGDECixcvxh/+8IdWX+OEE07A2rVrsWPHDowfPx4jR47EPffcg6OOOiqsPr7wwgsYPnz4YRvlAHDBBRdg//79eP/99w2kjk3tzfX999+Pu+++Gw899BCGDRuGs88+G++9915oA+66667DtGnT8Ktf/QpjxoxBZWVlqzNbuzJvXi50TYPm87V6XPP5mm7ymZdrSz+6wrHYbMuWLejTpw/69OmDE088EX/961/x7LPP4sorrzQePAbxWCQiIiIiIiLqPIqu63pnd8Jp6uvrUVJSgqysLCQkJBiu9zcGsXjNLuTvqoSqNF16xRdo2ijPG5yK2RMHwxPX9mVaiCh6tEAAlUuWwldY2HTt8sREaHV1TRvlY8ci9dpZUN3uzu4mkaUi/ZlGRERERERE1FXwMiwCeeJcmD1xMI7vm4xPd1Rgf40f/XslYnxOGvKGpHGjnMgmqtuN1GtnIeG4Y+HLL0BjeTk8/frBm5cLb24uN8qJiIiIiIiIiByEZ5ZbgGfhERGRU/BnGhEREREREcUKXrOciIiIiIiIiIiIiGIeN8uJiIiIiIiIiIiIKOZxs5yIiIiIiIiIiIiIYh43yy3Ey8ETEVFXx59lREREREREFCu4WW4Bl8sFAAgEAp3cEyIiosjU1dUBAOLj4zu5J0RERERERETWiuvsDjhRXFwcEhMTUV5ejvj4eKgqfydBRERdi67rqKurw/79+5GSkhL6RTARERERERGRUyk6/77aEoFAACUlJdA0rbO7QkREZFpKSgoyMzOhKEpnd4WIiIiIiIjIUtwst5CmabwUCxERdVnx8fE8o5yIiIiIiIhiBjfLiYiIiIiIiIiIiCjm8WLaRERERERERERERBTzuFlORERERERERERERDGPm+VEREREREREREREFPO4WU5EREREREREREREMY+b5UREREREREREREQU87hZTkREREREREREREQxj5vlRERERERERERERBTz/j/sTfJzAT5zuQAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "num_samples = modela.shape[0]\n",
+ "indexes = np.arange(num_samples)\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(18, 4))\n",
+ "\n",
+ "# plot sample index vs score and their mean\n",
+ "ax.scatter(indexes, modela, s=30, color=\"tab:blue\", marker=\"o\", label=\"Model A\", zorder=3, alpha=0.6)\n",
+ "ax.axhline(modela.mean(), color=\"tab:blue\", linestyle=\"--\", label=\"Mean\", zorder=3)\n",
+ "ax.scatter(indexes, modelb, s=30, color=\"tab:red\", marker=\"o\", label=\"Model B\", zorder=3, alpha=0.6)\n",
+ "ax.axhline(modelb.mean(), color=\"tab:red\", linestyle=\"--\", label=\"Mean\", zorder=3)\n",
+ "\n",
+ "# configure the x-axis\n",
+ "ax.set_xlabel(\"Sample index\")\n",
+ "ax.set_xlim(0 - (eps := 0.01 * num_samples), num_samples + eps)\n",
+ "ax.xaxis.set_major_locator(IndexLocator(5, 0))\n",
+ "ax.xaxis.set_minor_locator(IndexLocator(1, 0))\n",
+ "\n",
+ "# configure the y-axis\n",
+ "ax.set_ylabel(\"AUPIMO [%]\")\n",
+ "ax.set_ylim(0 - 0.05, 1 + 0.05)\n",
+ "ax.yaxis.set_major_locator(MaxNLocator(6))\n",
+ "ax.yaxis.set_major_formatter(PercentFormatter(1))\n",
+ "\n",
+ "# configure the grid, legend, etc\n",
+ "ax.grid(axis=\"both\", which=\"major\", linestyle=\"-\")\n",
+ "ax.grid(axis=\"x\", which=\"minor\", linestyle=\"--\", alpha=0.5)\n",
+ "ax.legend(ncol=4, loc=\"upper left\", bbox_to_anchor=(0, -0.08))\n",
+ "ax.set_title(\"AUPIMO scores direct comparison\")\n",
+ "\n",
+ "fig # noqa: B018, RUF100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Notice that several images actually have the same AUPIMO score for both models (e.g. from 10 to 15).\n",
+ "\n",
+ "Others like 21 show a big difference -- model B didn't detect the anomaly at all, but model A did a good job (60% AUPIMO).\n",
+ "\n",
+ "Let's simplify this and only show the differences."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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Dx6M1NRU6WagFcWsG4jn3blzB4GBgdi3bx86deqkc4yuIxDe3t64du0avLy8DMpNrVYjJSUF1atXL3PHWtY45pRLeno6zp8/j+bNm5fpzrXmUhfWtvximFMurG3pYly/fh1DhgyB06tDYeVU8umkLtkPMLFHa6z7KwHJNsWPVyU+QNLOLxAZGYmgoCCjvh9jxTGXGIBxtt3KVltjxWFtyy8O97nlF+Px48cIDg42SQNh9qcwPSsgIAA1atTArVu3imwgFAoFFAqF1nJ7e3s4Ozsb9LpqtRoqlQrOzs5l3uDKGseccink4OBgcG2NlYu5xDBmHKDy1NbccgFY22dlZmbC3t4ewNMvXZ79IS+Xy3Hnzh14vOoCha1PibHyU2MBALEZeYgvkBU7NjdVhdg7dyCXyzU+C3OpiznFeFZZtt3KVltjxgFY2/KKA3CfWx4xCk/TN4UX6j4QDx8+RFJSEjw9PU2dChERERFRlWTSIxAZGRm4deuW9Pju3bu4ePEiXFxc4OLigvnz56Nv377w8PDA7du38cEHH6BOnToICwszYdZERERERFWXSRuIs2fPomPHjtLjGTNmAABGjBiB1atX4/Lly/j++++hVCrh5eWFrl274l//+pfOU5SIiIiIiKj8mbSB6NChA4q7hnvPnj0VmA0REREREZXkhboGgoiIiIiITIsNBBERERER6e2FmsaViIiMz9LSEt26dYNKpSryJp1ERESF2EAQEVVxNjY22LlzJ+Lj42FjY2PqdIiIyMzxFCYiIiIiItIbGwgiIiIiItIbGwgioiouMzMTDg4OCAgIQGZmpqnTISIiM8drIIiICFlZWaZOgYiIXhA8AkFERERERHpjA0FERERERHpjA0FERERERHpjA0FERERERHpjA0FERERERHrjLExERFWchYUF2rdvD5VKBQsLfq9ERETFYwNBRFTF2dra4sCBA4iPj4etra2p0yEiIjPHr5qIiIiIiEhvbCCIiIiIiEhvbCCIiKq4zMxM1KxZE8HBwcjMzDR1OkREZOZM2kAcOXIEvXr1gpeXF2QyGbZv366xXgiBuXPnwtPTE7a2tujcuTNu3rxpmmSJiCqxxMREJCcnmzoNIiJ6AZi0gcjMzESTJk2wcuVKnes///xzfP3111izZg1Onz6NatWqISwsDDk5ORWcKRERERERASaehalbt27o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jsT333+PatWqYeLEiVizZg1Wr16N+vXro23btrh27ZrecYmISH9Wpk6AiIj0d+PGDfz111/Ytm0bgKfXCAwYMADr1q1Dhw4dDIo5aNAgWFpaIjs7G25ubli3bh0aN25c7HPc3Nyk06eEEOjRowdq1Kihc6yxjo4UCg8PR3h4uPR4/vz56Ny5M6ytrbFw4UJcuXIFO3fuxPDhw3Hu3DmjvjYREbGBICJ6oaxbtw75+fnw8vKSlgkhoFAo8M0338DJyQmOjo4Anl5U7OzsrPF8pVIJJycnjWVffvklOnfuDCcnp1JdaDx69GhMmTIFAHReuFynTh3IZDJER0fjzTff1FofHR2N6tWrl+ni5uvXr2Pjxo24cOEC1q9fj3bt2sHNzQ39+/fH6NGjkZ6eDgcHB4PjExGRNp7CRET0gsjPz8d//vMfLF26FBcvXpT+XLp0CV5eXvjxxx8BAHXr1oWFhYXWt+937txBamoq6tWrp7Hcw8MDderUKfUv8q+//jpUKhXy8vIQFhamtd7V1RVdunTBqlWrNGZsAoDY2FhERkZiwIABkMlkpXrdQkIIjB8/HsuWLYO9vT0KCgqQl5cHANLfBQUFBsUmIqKi8QgEEdELYufOnUhJScGYMWO0jiL07dsX69atw4QJE+Dg4IB33nkHM2fOhJWVFV566SU8ePAAH374IV5++WW0adPGKPlYWloiOjpa+rcu33zzDdq0aYOwsDAsXLgQ/v7+uHbtGmbNmoVatWph0aJFBr/+v//9b7i5uUn3fWjbti3Cw8Nx6tQp7Nq1Cw0bNtQ6AkNERGXHIxBERC+IdevWSacaPa9v3744e/YsLl++DAD46quvMGLECHz44YcIDg7GyJEj0bhxY+zYscPgb/x1cXR0lE6Z0qVu3bo4e/YsAgIC0L9/fwQGBmLcuHHo2LEjTp48CRcXF4NeNy4uDosWLcLXX38tLWvVqhVmzpyJHj164Oeff9aYJYqIiIxHJox9dRsREZERhIeHY/v27bh48aJR4sXExMDf3x8XLlxA06ZNjRKTiKgq4hEIIiIyW1euXIG9vT1WrVpVpjjdunVDcHCwkbIiIqraeASCiIjMUnJyMpKTkwE8nTZW16lb+nr06JF0IbePjw/kcrlRciQiqorYQBARERERkd54ChMREREREemNDQQREREREemNDQQREREREemNDQQREREREemNDQQREREREemNDQQREREREemNDQQREREREemNDQQREREREent/wC9W/Aa22cpcQAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "differences = modela - modelb\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(9, 3))\n",
+ "ax.hist(differences, bins=np.linspace(-1, 1, 61), edgecolor=\"black\")\n",
+ "ax.axvline(differences.mean(), color=\"black\", linestyle=\"--\", label=\"Mean\")\n",
+ "\n",
+ "# configure the x-axis\n",
+ "ax.set_xlabel(\"AUPIMO [%]\")\n",
+ "ax.set_xlim(-1, 1)\n",
+ "ax.xaxis.set_major_locator(MaxNLocator(9))\n",
+ "ax.xaxis.set_minor_locator(MaxNLocator(41))\n",
+ "ax.xaxis.set_major_formatter(PercentFormatter(1))\n",
+ "\n",
+ "# configure the y-axis\n",
+ "ax.set_ylabel(\"Count\")\n",
+ "\n",
+ "# configure the grid, legend, etc\n",
+ "ax.grid(axis=\"both\", which=\"major\", linestyle=\"-\", alpha=1, linewidth=1.0)\n",
+ "ax.grid(axis=\"x\", which=\"minor\", linestyle=\"-\", alpha=0.3)\n",
+ "ax.legend(loc=\"upper right\")\n",
+ "ax.set_title(\"AUPIMO scores differences distribution (Model A - Model B)\")\n",
+ "\n",
+ "fig # noqa: B018, RUF100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "It looks like there is a bias to the right indeed (so model A > model B). \n",
+ "\n",
+ "Is that statistically significant or just random?\n",
+ "\n",
+ "> **Dependent t-test for paired samples**\n",
+ "> \n",
+ "> - null hypothesis: `average(A) == average(B)` \n",
+ "> - alternative hypothesis: `average(A) != average(B)`\n",
+ "> \n",
+ "> See [`scipy.stats.ttest_rel`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.ttest_rel.html) and [\" Wikipedia's page on \"Student's t-test\"](https://en.wikipedia.org/wiki/Student's_t-test#Dependent_t-test_for_paired_samples).\n",
+ ">\n",
+ "> **Confidence Level**\n",
+ "> \n",
+ "> Instead of reporting the p-value, we'll report the \"confidence level\" [that the null hypothesis is false], which is `1 - pvalue`.\n",
+ "> \n",
+ "> *Higher* confidence level *more confident* that `average(A) > average(B)`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "test_result=TtestResult(statistic=-2.8715471705520033, pvalue=0.004917091449731462, df=108)\n",
+ "confidence=99.5%\n"
+ ]
+ }
+ ],
+ "source": [
+ "test_result = stats.ttest_rel(modela, modelb)\n",
+ "confidence = 1.0 - float(test_result.pvalue)\n",
+ "print(f\"{test_result=}\")\n",
+ "print(f\"{confidence=:.1%}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "So, we're very confident that model A has a higher AUPIMO score than model B.\n",
+ "\n",
+ "Maybe is that due to some big differences in a few images?\n",
+ "\n",
+ "What if we don't count much for these big differences?"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Non-parametric (rank comparison)\n",
+ "\n",
+ "In non-parametric comparison, bigger differences don't matter more than smaller differences. \n",
+ "\n",
+ "It's all about their relative position.\n",
+ "\n",
+ "Let's look at the analogous plots for this type of comparison."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABboAAAEsCAYAAAAFEQVZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC2mklEQVR4nOydd3hURduHf7tppJCEECB0AoQiKC+IIKCCDRDsHVFBxAovVuwFK9j1tVewgNgAGyiIgDQRQT4UEQGDCAQUkAQS0vbM90fIskm2zUnOyZOzv/u6cml2Z3bmnnnmObPD5qxLKaVACCGEEEIIIYQQQgghhNRR3LXdAUIIIYQQQgghhBBCCCGkOvCgmxBCCCGEEEIIIYQQQkidhgfdhBBCCCGEEEIIIYQQQuo0POgmhBBCCCGEEEIIIYQQUqfhQTchhBBCCCGEEEIIIYSQOg0PugkhhBBCCCGEEEIIIYTUaXjQTQghhBBCCCGEEEIIIaROw4NuQgghhBBCCCGEEEIIIXUaHnQTQgghhBBCCCGEEEIIqdPwoJsQQgghhBDieFwuF8aOHVvb3SCEEEIIIRbBg25CCCGEEFJrvPTSS3C5XOjdu7ff57ds2QKXy4Unn3zS7/NPPvkkXC4XtmzZ4n1swIABcLlc3p+0tDQcc8wxeOutt2AYhrfcyJEjkZSUVOH1yutmZWX5bW/evHne1/3444+rPL9u3TpceumlaN68OeLi4tCsWTMMHz4c69atCzUUhBBCCCGEkGrAg25CCCGEEFJrTJ06FW3atMEPP/yATZs21djrtmjRAu+++y7effdd3HvvvSgtLcWVV16Ju+66K2TdevXqYdOmTfjhhx/89rdevXp+682YMQM9evTA/PnzccUVV+Cll17ClVdeiQULFqBHjx6YOXNmtb0IIYQQQggh/uFBNyGEEEIIqRWys7OxbNkyPP3002jUqBGmTp1aY6+dkpKCSy+9FJdeeiluuukmLF26FC1atMALL7yAkpKSoHXbtWuHjh074v3336/weGFhIWbOnImhQ4dWqbN582ZcdtllaNu2LdauXYuHH34YV155JR566CGsXbsWbdu2xWWXXYY//vijxhytorCwsMIn3+0kPz+/VtolhBBCCCF1Hx50E0IIIYSQWmHq1Klo0KABhg4divPPP79GD7ork5CQgGOPPRb5+fn4559/QpYfNmwYPvjggwoHvp9//jkKCgpw4YUXVin/xBNPoKCgAK+99hoaNWpU4bn09HS8+uqryM/Px+OPPx6y7eeffx5dunRBQkICGjRogJ49e2LatGkVymzfvh1XXnklmjVrhri4OGRmZuK6665DcXGxt8wff/yBCy64AGlpaV7/L7/8ssLrLFy4EC6XC9OnT8c999yD5s2bIyEhAXl5eQCAFStWYPDgwUhJSUFCQgL69++PpUuXVniN/fv348Ybb0SbNm0QFxeHxo0b49RTT8Xq1auDek6YMAEulwu//vorLrnkEjRo0ADHHXccAGDt2rUYOXIk2rZti3r16iEjIwOjRo3Cnj17/L7Gpk2bMHLkSKSmpiIlJQVXXHEFCgoKQo71ww8/DLfbjeeff15r/AkhhBBCiDyia7sDhBBCCCEkMpk6dSrOPfdcxMbGYtiwYXj55ZexcuVKHHPMMZa098cffyAqKgqpqakhy15yySWYMGECFi5ciJNOOgkAMG3aNJx88slo3LhxlfKff/452rRpg+OPP97v651wwglo06ZNlYPmyrz++usYN24czj//fNxwww0oLCzE2rVrsWLFClxyySUAgB07dqBXr17Yt28frr76anTq1Anbt2/Hxx9/jIKCAsTGxmLXrl3o27cvCgoKMG7cODRs2BBvv/02zjzzTHz88cc455xzKrT70EMPITY2FrfeeiuKiooQGxuLb7/9FqeddhqOPvpo3H///XC73Zg8eTJOOukkLF68GL169QIAXHvttfj4448xduxYHHHEEdizZw+WLFmC9evXo0ePHiHH+oILLkBWVhYeffRRKKUAlN0L/Y8//sAVV1yBjIwMrFu3Dq+99hrWrVuH77//Hi6Xq8JrXHjhhcjMzMTEiROxevVqvPHGG2jcuDEee+yxgO3ec889ePTRR/Hqq6/iqquuCnv8CSGEEEKITHjQTQghhBBCbGfVqlX47bffvJ+kPe6449CiRQtMnTq1Rg66PR4Pdu/eDQDYvXs3Xn75ZaxevRpnnHEGEhISQtbPysryfpL3pJNOwr59+zB79my8/vrrVcrm5uZix44dOOuss4K+5lFHHYXPPvsM+/fvR/369f2W+fLLL9GlSxd89NFHAV/nzjvvxM6dO7FixQr07NnT+/iDDz7oPSieNGkSdu3ahcWLF3s/JX3VVVfhqKOOws0334yzzjoLbvfhP+4sLCzEjz/+iPj4eACAUgrXXnstTjzxRMyZM8d7sHzNNdegS5cuuOeeezB37lxvn6+66io89dRT3te77bbbgo6FL926davyienrr78et9xyS4XHjj32WAwbNgxLliyp8g8K3bt3x5tvvun9fc+ePXjzzTcDHnTfeuuteOaZZzB58mSMGDHC+3g4408IIYQQQmTCW5cQQgghhBDbmTp1Kpo0aYITTzwRAOByuXDRRRdh+vTp8Hg81X793377DY0aNUKjRo3QuXNnPP/88xg6dCjeeuutsF/jkksuwYwZM1BcXIyPP/4YUVFRVT4JDZTdugNAwMPrcsqfL78tiD9SU1Oxbds2rFy50u/zhmFg1qxZOOOMMyoccpdTfiA9e/Zs9OrVy3vIDQBJSUm4+uqrsWXLFvz6668V6o0YMcJ7yA0Aa9aswcaNG3HJJZdgz5492L17N3bv3o38/HycfPLJ+O6777y3dUlNTcWKFSuwY8eOoP6BuPbaa6s85tuXwsJC7N69G8ceeywA+L0lSuXXOP7447Fnz54qY62UwtixY/Hcc8/hvffeq3DIXe4SbPwJIYQQQohceNBNCCGEEEJsxePxYPr06TjxxBORnZ2NTZs2YdOmTejduzd27dqF+fPna79m5VtZtGnTBvPmzcM333yDJUuWYOfOnfjiiy+Qnp4e9mtefPHFyM3NxZw5czB16lScfvrpfg+zyx8rP/AORDgH4rfffjuSkpLQq1cvZGVlYcyYMRXuif3PP/8gLy8PXbt2DdrWn3/+iY4dO1Z5vHPnzt7nfcnMzKzw+8aNGwGUHYCX/4NB+c8bb7yBoqIi5ObmAgAef/xx/PLLL2jZsiV69eqFCRMmaH3pZuW2AWDv3r244YYb0KRJE8THx6NRo0becuXt+tKqVasKvzdo0AAA8O+//1Z4/J133sGLL76I559/HsOGDavyOqHGnxBCCCGEyIW3LiGEEEIIIbby7bffIicnB9OnT8f06dOrPD916lQMHDgQAFCvXj0AwMGDB/2+VvkXDpaXKycxMRGnnHJKtfrZtGlTDBgwAE899RSWLl2KTz75xG+5lJQUNG3aFGvXrg36emvXrkXz5s2RnJwcsEznzp2xYcMGfPHFF/jqq6/wySef4KWXXsJ9992HBx54oFo+wfD9BDUA76e1n3jiCfznP//xWycpKQlA2f2xjz/+eMycORNz587FE088gcceewwzZszAaaedpt12+WsuW7YM48ePx3/+8x8kJSXBMAwMHjy4wheElhMVFeX3tctv5VJOv379sGbNGrzwwgu48MILkZaWVuH52hp/QgghhBBSfXjQTQghhBBCbGXq1Klo3LgxXnzxxSrPzZgxAzNnzsQrr7zi/SRvQkICNmzY4Pe1NmzYgISEBK1PautwySWXYPTo0UhNTcWQIUMCljv99NPx+uuvY8mSJRVuF1LO4sWLsWXLFlxzzTUh20xMTMRFF12Eiy66CMXFxTj33HPxyCOP4M4770SjRo2QnJyMX375JehrtG7d2u+Y/fbbb97ng9GuXTsAQHJyclj/YNC0aVNcf/31uP766/H333+jR48eeOSRR8I66K7Mv//+i/nz5+OBBx7Afffd5328/FPm1aF9+/Z4/PHHMWDAAAwePBjz58+v8gn7YONf+R9UCCGEEEKIHHjrEkIIIYQQYhsHDx7EjBkzcPrpp+P888+v8jN27Fjs378fn332GYCyT+oOHDgQn3/+ObZu3VrhtbZu3YrPP/8cAwcODPiJ3upy/vnn4/7778dLL72E2NjYgOXGjx+P+Ph4XHPNNdizZ0+F5/bu3Ytrr70WCQkJGD9+fND2KteNjY3FEUccAaUUSkpK4Ha7cfbZZ+Pzzz/Hjz/+WKV++SeYhwwZgh9++AHLly/3Ppefn4/XXnsNbdq0wRFHHBG0H0cffTTatWuHJ598EgcOHKjy/D///AOg7DY0lW8l0rhxYzRr1gxFRUVB2whE+VxW/jT2s88+a+r1KnPUUUdh9uzZWL9+Pc4444wKfy0QavwJIYQQQohc+IluQgghhBBiG5999hn279+PM8880+/zxx57LBo1aoSpU6fioosuAgA8+uijOPbYY9GjRw9cffXVaNOmDbZs2YLXXnsNLpcLjz76qGX9TUlJwYQJE0KWy8rKwttvv43hw4fjyCOPxJVXXonMzExs2bIFb775Jnbv3o3333/f+0npQAwcOBAZGRno168fmjRpgvXr1+OFF17A0KFDvZ88fvTRRzF37lz0798fV199NTp37oycnBx89NFHWLJkCVJTU3HHHXfg/fffx2mnnYZx48YhLS0Nb7/9NrKzs/HJJ5/A7Q7+eRe324033ngDp512Grp06YIrrrgCzZs3x/bt27FgwQIkJyfj888/x/79+9GiRQucf/756NatG5KSkvDNN99g5cqVeOqpp8IeZ1+Sk5Nxwgkn4PHHH0dJSQmaN2+OuXPnIjs729Tr+ePYY4/Fp59+iiFDhuD888/HrFmzEBMTE9b4E0IIIYQQmfCgmxBCCCGE2MbUqVNRr149nHrqqX6fd7vdGDp0KKZOnYo9e/agYcOG6Ny5M1asWIEJEybgzTffxN69e5GWloZTTz0V999/Pzp16mSzhX8uuOACdOrUCRMnTvQebjds2BAnnngi7rrrrpBfIAkA11xzDaZOnYqnn34aBw4cQIsWLTBu3Djcc8893jLNmzfHihUrcO+992Lq1KnIy8tD8+bNcdpppyEhIQEA0KRJEyxbtgy33347nn/+eRQWFuKoo47C559/jqFDh4blM2DAACxfvhwPPfQQXnjhBRw4cAAZGRno3bu39xYsCQkJuP766zF37lzMmDEDhmGgffv2eOmll3DdddeZGMUypk2bhv/+97948cUXoZTCwIEDMWfOHDRr1sz0a1bmpJNOwocffojzzjsPl112GaZNmxbW+BNCCCGEEJm4VOW/CSSEEEIIIYQQQgghhBBC6hC8RzchhBBCCCGEEEIIIYSQOg0PugkhhBBCCCGEEEIIIYTUaXjQTQghhBBCCCGEEEIIIaROw4NuQgghhBBCCCGEEEIIIXUaHnQTQgghhBBCCCGEEEIIqdPwoJsQQgghhBBCCCGEEEJInSa6tjtgN4ZhYMeOHahfvz5cLldtd4cQQgghhBBCCCGEEEKIH5RS2L9/P5o1awa3O/hntiPuoHvHjh1o2bJlbXeDEEIIIYQQQgghhBBCSBj89ddfaNGiRdAyEXfQXb9+fQBlg5OcnBx2vZKSEsydOxcDBw5ETExMWHU8Hg82b96Mdu3aISoqqsbL29WGrrtUD906dsy5mTpOcZc6VhLj3Uwdp7gz3unOeK/5OpHq7pR4N1PHKe6Md7oz3oNDd8a7FW2YqeMUd6ljJTHezdRxirtT4t1MHTNtmCEvLw8tW7b0nukGI+IOustvV5KcnKx90J2QkIDk5GStoEpKSkJycnLYAaJT3q42dN2leujWsWPOzdRxirvUsZIY72bqOMWd8U53xnvN14lUd6fEu5k6TnFnvNOd8R4cujPerWjDTB2nuEsdK4nxbqaOU9ydEu9m6phpozqEcwtqfhklIYQQQgghhBBCCCGEkDoND7oJIYQQQgghhBBCCCGE1Gl40G0hbrcbWVlZIb8R1Gx5u9rQRaoH3WW5Sx0rXeyaj0h1Z7zT3ao2dJHqQXdZ7lzr8uJEF6kedJflLnWszBCp7lI96C7LXepY6SJ1f+IUd6fEu5k6dl2rdJDTE4dSWlpqaXm72tBFqgfdrUWih0Rvu+o4xZ3xbn0dq9uQGie6SPWgu7VI9YhUd4neZuo4Zc7N1HGKu9SxMkOkukv1oLu1SPSQ6G1XHae4OyXezdSx61oVLjzothDDMJCdnQ3DMCwpb1cbukj1oLssd6ljpYtd8xGp7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRki1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ486CaEEEIIIYQQQgghhBBSp+FBNyGEEEIIIYQQQgghhJA6DQ+6LUb3huxmbuBuRxu6SPWgu7VI9JDobVcdp7gz3q2vY3UbUuNEF6kedLcWqR6R6i7R20wdp8y5mTpOcZc6VmaIVHepHnS3FokeEr3tquMUd6fEu5k6kr6IEgCia7sDTiYqKgodOnSwrLxdbegi1YPustyljpUuds1HpLoz3uluVRu6SPWguyx3rnV5caKLVA+6y3KXOlZmiFR3qR50l+Uudax0kbo/cYq7U+LdTB27rlU61OpB93fffYcnnngCq1atQk5ODmbOnImzzz47aJ2FCxfi5ptvxrp169CyZUvcc889GDlypGV9NIqLkb9sGfYvXoyMn3/GP2vXov7xxyOxb1+4Y2P91ikq9WDppt347vd/kPNvAZo2SMAJHRqhX/t0xEVHBWwjf+lSFObsRL2mGUjs1y9oG7p1dPtkxr06bdjhodvGot924f82urFarUf/Tk2CtmGmX7p17GxDx70cpRTy8/ORmJgIl8sVsJwdHmbWlK67HR5m6tix1qszvpLyotT8LjXPmR1fO+bQyrVeTrg5zkwdu/OJpDxn5x7Iyuu6XWvdjuu6RPfqxImkfawd8e4k93LCzaVmrutm25B2bTPjLjF+pV7bzMavzt5B4l7OTB2pe3jJ5w7S3rc5Za1L359Iine73O3CpZRStdX4nDlzsHTpUhx99NE499xzQx50Z2dno2vXrrj22msxevRozJ8/HzfeeCO+/PJLDBo0KKw28/LykJKSgtzcXCQnJwctaxQXY89rryP/+++hXC78s38/GtWvD5dSSDz2WDS8+qoqE1hU6sErCzdj6aY9cLkUVEkRXDFxUMqFfu0b4toB7SoEiW8bcLtx0DAQ73YDhhGwDd06un0y417dNuzwMNPGgX/3IKlBw6BtmOmXbp3aaCMcd188Hg82btyIrKwsREUFvjhZ7WFmTem62+FhV5zorvWaGF8JeVFqfpea56ozvnbMoVVr3ZdwcpyZOrWVTyTkudrYA1lxXbdrrdtxXZfoXt04kbKPtSPeneTuSzi51Mx1vTptSLq2mXGXGL9Sr23Vid9w9w4S93JS48SOeK8LZxtWvW9zylqvC/sTKfFul3t10TnLrdUbqZx22ml4+OGHcc4554RV/pVXXkFmZiaeeuopdO7cGWPHjsX555+PZ555xpL+5S9bhvzvv0dMkyaIbd0anuRkxLZujZgmTZD//ffIX7asSp2lm3Zj6aY9yEiph8z0RDRMiEZmeiIyUuph6eY9WLppd9A2kJYWsg3dOrp9MuNeE23Y4aHTRpuGiUiJBdo0DN6GmX7p1rG7jXDddbHDw8ya0nW3w8NMHTvWenXHV0pelJrfpea56o6vHXNoxVq3g9rIJ1LynN17IKuu63atdTuu6xLdayJOJOxj7Yh3J7nrYua6Xt02pFzbzLhLjF+p17baiF8JezkzdaTu4aWfO0h63+aUtV5X9icS4t0udzuRdcfwECxfvhynnHJKhccGDRqE5cuXB6xTVFSEvLy8Cj8AUFJSEvJn/+LFUC4XEB8PwzAAoOy/8fFQLhf2L15cpc6i33bB5VKIj3HDMAwoZcAwDMTHuOGCwqLfdgVtQykVsg3dOrp9MuNeE23Y4aHbRrl3sDbM9Eu3Tm20EY575R+PxxP0eTs8zKwpXXc7POyKE921XhPjKyEvSs3vUvNcdcfXjjm0Yq3r5jipeVFqnquNPZAV13W71rod13WJ7jURJxL2sXbEu5PcdXOpmet6dduQcm0z4y4xfqVe26obv+HsHSTu5aTGiR3xXlfONqx43+aUtV5X9icS4t0u95r4CZdavXWJLy6XK+StSzp06IArrrgCd955p/ex2bNnY+jQoSgoKEB8fHyVOhMmTMADDzxQ5fFp06YhISEhaJ8ypk6Fq7gEHj8fi4/Ky4OKjcHO4cMrPD75dzdKPECKn0/p5xYDMVHAFR2MarWhW0e3T2xDrw076khtQxc7POxYt06KE93xckpelOohNc/ZMb4S59AOnJRPJK51qR6RPIdOiROJedFJ7rpIbcMpcSI1FiXulc0gcd2aqeOUNrgflze+kbo/sWsO7XCvLgUFBbjkkkvCunVJrX4ZpR3ceeeduPnmm72/5+XloWXLlhg4cGDIwfln7VoU/b4Rsa1awTAMbNu2DS1atIDb7Ubxn38irkMWegwZUqHOarUev+06gJYNE6u8nmdPPjo1ScKQIZ39tlGZQG3o1tHtkxn36rZhh4duG4ZhYPu2bWh+yDtQG2b6pVvH7jbCddfFDg8za0rX3Q4PM3XsWOvVHd9w+mVHXpSa36XmueqMb7judrRhR57TpTbyiZQ8Z/ceyKrrul1r3Y7rukT36saJlH2sHfHuJHddzFzXq9NGZWrz2mbGXWL8Sr222R2/4bRhx17OTB2pe3jp5w5m2rDqfZtT1npd2J+EU8eOeLfLvbqU350jHOrUrUsyMjKwa9euCo/t2rULycnJfj/NDQBxcXFITk6u8AMAMTExIX/qH388XEoBBw/C7S4bKrfbDRw8CJdSqH/88VXq9O/UBEq5cLDEgNvtQmlpCdzust8VXOjfqUmQNg6XD9aGbh3dPplxr34bdnjotnHYO1gbZvqlW8f+NsJz9/2Jjo5Gfn4+oqOjA5axw8PMmtJ1t8PDrjjRXevVH18ZeVFqfpea56o3vnbMoTVrXTfHSc2LUvOc/Xsga67rdq11O67rEt2rHycy9rF2xLuT3HVzqZnrevXakHNtM+MuMX6lXtuqE7/h7h0k7uWkxokd8V43zjased/mlLVeN/YnMuLdLvea+AmXOvWJ7j59+mD27NkVHps3bx769OljSXuJffui8Jd13m84jdq/H8V//un9htPEvn2r1OnXPh0/b8vF0s174AZglBTCHVMPBoB+7RqiX/v0gG3A7cJBQ0G5XYARuA3dOrp9MuNe3Tbs8NBtwwWFA8Vl/4Kl4ArYhpl+6daxu41w3X0xDAM7d+5E/fr1A36ruB0eZtaUrrsdHmbq2LHWqzu+UvKi1PwuNc9VZ3ztmEOr1rov4eQ4M3VqI59IyXN274Gsuq7btdbtuK5LdK9unEjZx9oR705y9yWcXGrmul6dNiRd28y4S4xfqde26sRvuHsHiXs5M3Wk7uGlnztIet/mlLVeF/YnUuLdLnc7qdV7dB84cACbNm0CAHTv3h1PP/00TjzxRKSlpaFVq1a48847sX37drzzzjsAgOzsbHTt2hVjxozBqFGj8O2332LcuHH48ssvMWjQoLDazMvLQ0pKSlj3dQEAo7gY+cuWYf/ixfjr55/R8sgjUf/445HYty/csX5uYAOgqNSDpZt2Y9GGv5GdsweZTRuif8fG6Nc+HXHRVS9w5W0cWLIE+7KzkZqZiaTjjgvahm4d3T6Zca9OG3Z4aLfx2y7838Y/0S2rNfp3ahK0DTP90q1jaxsa7uV4PB5s3LgRWVlZQTdydniYWVO67nZ4mKljx1qv1vgKyotS87vUPGd2fO2YQyvXejnh5jgzdWzPJ4LynK17IAuv63atdTuu6xLdqxMnkvaxdsS7k9zLCTeXmrmum21D2rXNjLvE+JV6bTMbvzp7B4l7OTN1pO7hRZ87CHvf5pS1Ln1/Iine7XKvDlpnuaoWWbBggQJQ5WfEiBFKKaVGjBih+vfvX6XOf/7zHxUbG6vatm2rJk+erNVmbm6uAqByc3O16hUXF6tZs2ap4uLisOuUlpaq9evXq9LSUkvK29WGrrtUD906dsy5mTpOcZc6VhLj3Uwdp7gz3uluVRuRGu9KRa67U+LdTB2nuDPe6R4OjHe6W9WGxLHie1bGu1Vt0F1WnDhprZtB5yy3Vm9dMmDAAKggHyifMmWK3zo//fSThb2qOVwuFxITE+FyuSwpb1cbukj1oLssd6ljpYtd8xGp7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRki1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ516h7ddQ23242WLVtaVt6uNnSR6kF3We5Sx0oXu+YjUt0Z73S3qg1dpHrQXZY717q8ONFFqgfdZblLHSszRKq7VA+6y3KXOla6SN2fOMXdKfFupo5d1yod3LXdASdjGAZ2794NwzAsKW9XG7pI9aC7LHepY6WLXfMRqe6Md7pb1YYuUj3oLsuda11enOgi1YPustyljpUZItVdqgfdZblLHStdpO5PnOLulHg3U8eua5UOPOi2EKUUdu/eHfT2LNUpb1cbukj1oLssd6ljpYtd8xGp7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRki1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ486CaEEEIIIYQQQgghhBBSp+FBNyGEEEIIIYQQQgghhJA6DQ+6LcTlciElJUXr20p1ytvVhi5SPeguy13qWOli13xEqjvjne5WtaGLVA+6y3LnWpcXJ7pI9aC7LHepY2WGSHWX6kF3We5Sx0oXqfsTp7g7Jd7N1LHrWqVDdG13wMm43W40bdrUsvJ2taGLVA+6y3KXOla62DUfkerOeKe7VW3oItWD7rLcudblxYkuUj3oLstd6liZIVLdpXrQXZa71LHSRer+xCnuTol3M3XsulbpwE90W4hhGMjJydH6tlKd8na1oYtUD7rLcpc6VrrYNR+R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhUt2letBdlrvUsdJF6v7EKe5OiXczdey6VunAg24LUUohNzdX69tKdcrb1YYuUj3oLstd6ljpYtd8RKo7453uVrWhi1QPusty51qXFye6SPWguyx3qWNlhkh1l+pBd1nuUsdKF6n7E6e4OyXezdSx61qlAw+6CSGEEEIIIYQQQgghhNRpeNBNCCGEEEIIIYQQQgghpE7Dg24LcblcSE9P1/q2Up3ydrWhi1QPustylzpWutg1H5Hqzninu1Vt6CLVg+6y3LnW5cWJLlI96C7LXepYmSFS3aV60F2Wu9Sx0kXq/sQp7k6JdzN17LpW6RBd2x1wMm63G+np6ZaVt6sNXaR60F2Wu9Sx0sWu+YhUd8Y73a1qQxepHnSX5c61Li9OdJHqQXdZ7lLHygyR6i7Vg+6y3KWOlS5S9ydOcXdKvJupY9e1Sgd+ottCDMPAX3/9pfVtpTrl7WpDF6kedJflLnWsdLFrPiLVnfFOd6va0EWqB91luXOty4sTXaR60F2Wu9SxMkOkukv1oLssd6ljpYvU/YlT3J0S72bq2HWt0oEH3RailEJ+fr7Wt5XqlLerDV2ketBdlrvUsdLFrvmIVHfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oMkeou1YPustyljpUuUvcnTnF3SrybqWPXtUoHHnQTQgghhBBCCCGEEEIIqdPwoJsQQgghhBBCCCGEEEJInYYH3RbidruRkZEBtzu8YdYtb1cbukj1oLssd6ljpYtd8xGp7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRki1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ7Rtd0BJ+NyuZCammpZebva0EWqB9316ugi0UOit111nOLOeLe+ji4S3SV6m6njlDk3U8cp7lzr4Ze3qw1dpHrQXa+OLhI97PA2045T3KV60F2vji4SPSR621XHKe5OiXczdey6Vukg58jdgRiGgT/++EPr20p1ytvVhi5SPeguy13qWOli13xEqjvjne5WtaGLVA+6y3LnWpcXJ7pI9aC7LHepY2WGSHWX6kF3We5Sx0oXqfsTp7g7Jd7N1LHrWqUDD7otRCmF4uJirW8r1SlvVxu6SPWguyx3qWOli13zEanujHe6W9WGLlI96C7LnWtdXpzoItWD7rLcpY6VGSLVXaoH3WW5Sx0rXaTuT5zi7pR4N1PHrmuVDjzoJoQQQgghhBBCCCGEEFKn4UE3IYQQQgghhBBCCCGEkDoND7otxO12o0WLFlrfVqpT3q42dJHqQXdZ7lLHShe75iNS3RnvdLeqDV2ketBdljvXurw40UWqB91luUsdKzNEqrtUD7rLcpc6VrpI3Z84xd0p8W6mjl3XKh2ia7sDTsblciEpKcmy8na1oYtUD7rLcpc6VrrYNR+R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhUt2letBdlrvUsdJF6v7EKe5OiXczdey6Vukg58jdgXg8Hvz+++/weDyWlLerDV2ketBdlrvUsdLFrvmIVHfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oMkeou1YPustyljpUuUvcnTnF3SrybqWPXtUoHHnRbjGEYlpa3qw1dpHrQ3Vokekj0tquOU9wZ79bXsboNqXGii1QPuluLVI9IdZfobaaOU+bcTB2nuEsdKzNEqrtUD7pbi0QPid521XGKu1Pi3Uwdu65V4cKDbkIIIYQQQgghhBBCCCF1Gu2D7vfffz/gc+PHj69WZwghhBBCCCGEEEIIIYQQXbQPuq+77jrMmTOnyuM33XQT3nvvvRrplFNwu93IzMzU+rZSnfJ2taGLVA+6y3KXOla62DUfkerOeKe7VW3oItWD7rLcudblxYkuUj3oLstd6liZIVLdpXrQXZa71LHSRer+xCnuTol3M3XsulbpoN2TqVOnYtiwYViyZIn3sf/+97/48MMPsWDBghrtnBOIjo62tLxdbegi1YPu1iLRQ6K3XXWc4s54t76O1W1IjRNdpHrQ3VqkekSqu0RvM3WcMudm6jjFXepYmSFS3aV60N1aJHpI9LarjlPcnRLvZurYda0KF+2D7qFDh+Kll17CmWeeiVWrVuH666/HjBkzsGDBAnTq1MmKPtZZDMPAxo0bw74xu255u9rQRaoH3WW5Sx0rXeyaj0h1Z7zT3ao2dJHqQXdZ7lzr8uJEF6kedJflLnWszBCp7lI96C7LXepY6SJ1f+IUd6fEu5k6dl2rdDB17H7JJZdg37596NevHxo1aoRFixahffv2Nd03QgghhBBCCCGEEEIIISQkYR1033zzzX4fb9SoEXr06IGXXnrJ+9jTTz9dMz0jhBBCCCGEEEIIIYQQQsIgrIPun376ye/j7du3R15envd5l8tVcz0jhBBCCCGEEEIIIYQQQsIgrINufsmkOdxuN7KysrS+rVSnvF1t6CLVg+6y3KWOlS52zUekujPe6W5VG7pI9aC7LHeudXlxootUD7rLcpc6VmaIVHepHnSX5S51rHSRuj9xirtT4t1MHbuuVTrI6YlDKS0ttbS8XW3oItWD7tYi0UOit111nOLOeLe+jtVtSI0TXaR60N1apHpEqrtEbzN1nDLnZuo4xV3qWJkhUt2letDdWiR6SPS2q45T3J0S72bq2HWtChftg+78/Hzce++96Nu3L9q3b4+2bdtW+CGHMQwD2dnZWt9WqlPerjZ0kepBd1nuUsdKF7vmI1LdGe90t6oNXaR60F2WO9e6vDjRRaoH3WW5Sx0rM0Squ1QPustylzpWukjdnzjF3SnxbqaOXdcqHcK6dYkvo0ePxqJFi3DZZZehadOmvC83IYQQQgghhBBCCCGEkFpF+6B7zpw5+PLLL9GvXz8r+kMIIYQQQgghhBBCCCGEaKF965IGDRogLS3Nir44Et0bspu5gbsdbegi1YPu1iLRQ6K3XXWc4s54t76O1W1IjRNdpHrQ3VqkekSqu0RvM3WcMudm6jjFXepYmSFS3aV60N1aJHpI9LarjlPcnRLvZupI+iJKAHAppZROhffeew+ffvop3n77bSQkJFjVL8vIy8tDSkoKcnNzkZycHHa9kpISzJ49G0OGDEFMTIyFPZRHpLpHqjdAd7pHlnukegN0p3tkuUeqN0B3ukeWe6R6A3SPRPdI9QboTvfIco9U73J0znK1j92feuopfP3112jSpAmOPPJI9OjRo8IPOYxSCgcOHEC4/5agW96uNnSR6kF3We5Sx0oXu+YjUt0Z73S3qg1dpHrQXZY717q8ONFFqgfdZblLHSszRKq7VA+6y3KXOla6SN2fOMXdKfFupo5d1yodtA+6zz77bNxyyy249dZbcf755+Oss86q8EMOYxgGtm3bpvVtpTrl7WpDF6kedJflLnWsdLFrPiLVnfFOd6va0EWqB91luXOty4sTXaR60F2Wu9SxMkOkukv1oLssd6ljpYvU/YlT3J0S72bq2HWt0kH7yyjvv/9+K/pBCCGEEEIIIYQQQgghhJhC1h3DCSGEEEIIIYQQQgghhBBNtD/R7fF48Mwzz+DDDz/E1q1bUVxcXOH5vXv31ljn6joulwuxsbFwuVyWlLerDV2ketBdlrvUsdLFrvmIVHfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oMkeou1YPustyljpUuUvcnTnF3SrybqWPXtUoH7YPuBx54AG+88QZuueUW3HPPPbj77ruxZcsWzJo1C/fdd58VfayzuN1utG3b1rLydrWhi1QPustylzpWutg1H5Hqzninu1Vt6CLVg+6y3LnW5cWJLlI96C7LXepYmSFS3aV60F2Wu9Sx0kXq/sQp7k6JdzN17LpW6aB965KpU6fi9ddfxy233ILo6GgMGzYMb7zxBu677z58//33VvSxzqKUwr59+7S+rVSnvF1t6CLVg+6y3KWOlS52zUekujPe6W5VG7pI9aC7LHeudXlxootUD7rLcpc6VmaIVHepHnSX5S51rHSRuj9xirtT4t1MHbuuVTpoH3Tv3LkTRx55JAAgKSkJubm5AIDTTz8dX375Zc32ro5jGAZ27typ9W2lOuXtakMXqR50l+Uudax0sWs+ItWd8U53q9rQRaoH3WW5c63LixNdpHrQXZa71LEyQ6S6S/Wguyx3qWOli9T9iVPcnRLvZurYda3SQfugu0WLFsjJyQEAtGvXDnPnzgUArFy5EnFxcTXbO0IIIYQQQgghhBBCCCEkBNoH3eeccw7mz58PAPjvf/+Le++9F1lZWbj88ssxatSoGu8gIYQQQgghhBBCCCGEEBIM7S+jnDRpkvf/L7roIrRu3RrLli1DVlYWzjjjjBrtXF3H5XIhMTFR69tKdcrb1YYuUj3oLstd6ljpYtd8RKo7453uVrWhi1QPusty51qXFye6SPWguyx3qWNlhkh1l+pBd1nuUsdKF6n7E6e4OyXezdSx61qlg/ZBd2WOPfZYHHvssQCAH3/8ET179qx2p5yC2+1Gy5YtLStvVxu6SPWguyx3qWOli13zEanujHe6W9WGLlI96C7LnWtdXpzoItWD7rLcpY6VGSLVXaoH3WW5Sx0rXaTuT5zi7pR4N1PHrmuVDtq3Ljlw4AAOHjxY4bE1a9bgjDPOQO/evWusY07AMAzs3r1b6ybuOuXtakMXqR50l+Uudax0sWs+ItWd8U53q9rQRaoH3WW5c63LixNdpHrQXZa71LEyQ6S6S/Wguyx3qWOli9T9iVPcnRLvZurYda3SIeyD7r/++gt9+vRBSkoKUlJScPPNN6OgoACXX345evfujcTERCxbtszKvtY5lFLYvXs3lFKWlLerDV2ketBdlrvUsdLFrvmIVHfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oMkeou1YPustyljpUuUvcnTnF3SrybqWPXtUqHsG9dMn78eBQWFuK5557DjBkz8Nxzz2Hx4sXo3bs3Nm/ejBYtWljZT0IIIYQQQgghhBBCCCHEL2EfdH/33XeYMWMGjj32WFx44YXIyMjA8OHDceONN1rYPUIIIYQQQgghhBBCCCEkOGHfumTXrl3IzMwEADRu3BgJCQk47bTTLOuYE3C5XEhJSdH6tlKd8na1oYtUD7rLcpc6VrrYNR+R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhUt2letBdlrvUsdJF6v7EKe5OiXczdey6VukQ9ie6gbJv0/T9/9jY2BrvkJNwu91o2rSpZeXtakMXqR50l+Uudax0sWs+ItWd8U53q9rQRaoH3WW5c63LixNdpHrQXZa71LEyQ6S6S/Wguyx3qWOli9T9iVPcnRLvZurYda3SIexPdCul0KFDB6SlpSEtLQ0HDhxA9+7dvb+X/5DDGIaBnJwcrW8r1SlvVxu6SPWguyx3qWOli13zEanujHe6W9WGLlI96C7LnWtdXpzoItWD7rLcpY6VGSLVXaoH3WW5Sx0rXaTuT5zi7pR4N1PHrmuVDmEfdE+ePBnPPvssnnnmGTzzzDOYPHkynnvuOe/v5T/kMEop5Obman1bqU55u9rQRaoH3WW5Sx0rXeyaj0h1Z7zT3ao2dJHqQXdZ7lzr8uJEF6kedJflLnWszBCp7lI96C7LXepY6SJ1f+IUd6fEu5k6dl2rdAj71iUjRoywsh+EEEIIIYQQQgghhBBCiCm07tHtFOJdLhgHD8KI9qMfFQV3XJz3V6OgoOy/JSVwFRfDKCiAERNT9qTbDXe9elXKen/3eKAKC2EUFMAVE1Ox7MGDQKV/8fCWP3gQUUlJQct6n6v05wFGYSEQ7E8GfN1ClHUnJHj/31VSUtE9SFmjqOiwd1RUlbKu+HjvjeqN4mKgtLTiWPnU8VcWgN/yrnr14Dp0H3lVXAx1qKy3Xz513ImJQcsCh+dceTzAIe9AZctRPjGlSkqgSkoClnXFxsJ1qLwqLQ04Xv7KBh3fmBi4yvtbWgpVXBx4fH3LejxQRUUV3H3n3BUdDdeh+/L7li2nwvjGxR0uaxhQhYVV+lleXhWXAPFRQct66/h8wYFSCurgwYBlER0NHHJVSlVZnxWotO6rrPUgZY2CgsDzESBH+J2PymUrrfsKdaKj4Y6PD1i2QvnK+STIujcqxatWPikqAjyegEV9c4Q6NL4B473Suq+xfBIgR/iNd518kpDgbSdgPimPd4/ncFyGyBHKp+9a+cTjCT6+lXJEsHj3lyMCjm+AHOE3X/uW9bPuzeYTo7gYUYfWRqgc4fupg5D5JCqqLKeUt6eRT4LFr78cEXY+ObTu/c6HyxU0R1SI+djYimX9rHvfNqLq1w9a1rdOhd9D5AidfOK77tWh/Uk4+UQVFwePdz/rXjuf+Iv3uLigOSJgPgmy7g2PpyyfHCJkPvG9fh7aGwSi8roPO58EGCtvWT85Iqx84rPuTeUT33iPj4e7vGyAdW8mn1ReBaFyRNj5pNK618onBw/CCBTzAXJEWPmk0rqvXKfCewKdfBJk3evmE9/9uO/7B39o5ZMK674keLzr5JMAOSJkPvGz7n3jXSUmHt4b6OSTEDlC+XxvV43mk8o5Itx8cmjd+32/HqCs17tyG9HRQXNEhTpxceHnk6IiRPmujSDrXiufuN3efWU4ZSvkk6KiwPPhJ0cYgd6DBsgRgeI9WI4Imk/8rHvfOUdKStCyFdrw3ROFyBHK53vpQuYT33Vfk/nET44IGO8BcoTffOL7/sFfPvHdn8THVzyPCLDuDY+nwj5HK5/4OWOoMA4+axmGEfR8ym+O0MkngXJQgBxR7XwSG+v3HLJC+fI5Lyrynk8FKut9rvIZgUaOMA4e9MZoFSqte618onEO6VvWCPZerXKTStLny20gLy8P23v1Dvh8Yv8T0OrVV72//9a9R8CNbcIxx6D1u+94f/+9T194/v3Xb9l6Xbsi8+OPvL9vOulklOzY4bdsbLt2aPflF97fN59+Ooo3bfZbNrpZMzT48AOkpaXB7XYj+/wLUPjLL37LRjVogPZLl2Dv3r1IS0vDXyNGomDlSr9lXfHx6PTTagBASUkJ1lxwAZJ+2+C3LAB0/m299///GncDDsydG7Bsx9WrvMG74447kTtrVsCyWcuWIvrQvd93Pvgg/p32fsCy7b75BrEtmgMAdj3+BPa+9VbAsm0//wxxWVkAgH+efwG7X3wxYNkW709D/e7dAQB73nwTfz/xZMCyLadMRmH79khLS8O+99/HroceDvy6r7yM+gMGwDAM7HjvPex/dGLAss2ffQbJgwcDAHJnz8GOm28OWLbpo48i9dxzAAD7Fy7EtmuvC1i2yb33IG34cABA/oofsDXIX240Hn8rGl55JQDg4M8/Y8sFFwYsmz5mDBr9dywAoGjjRvxxxpkByza44gpk3H4bAKB423ZsPuWUgGVTh12MmDFjkJaWBmPfPmzs2y9g2ZSzz0bGo49g7969SK1XDxt7HhOwbP1Bg9DiuWcBlMX7piOPClhWRI5o3w7tvgg/R2R9O9/7e7Ac4W7QAL/dcTuGDBmCmJgY/HnZ5UFzRIdVP3rzybbrrkP+ou/8lgUO5wjDMJB9/RgUL1wYsKxvjth+xx3Im/VpwLISckSbjz5E/JFHAggvRyQdeywAYO/UqUFzRPOXX0LxkUciLS0NebM+Rc5ddwUueyhHGIaBnI8/Qd599wUs65sj9s2fj5wxYwOWlZAj0kaNQpPbxgMIL0c0vf9+AEDp3r1Bc0T9M8/Eqn59MWTIEESVlGBDj6MDlx00CM2eedob7xuO6BKwrG+OMAyj7HUD/AOehBwR06wZ2oeZI6IaNECH5cu8v4fKEenz5nr3J1uvuSZojuj46zrv+O646Wbs//rrwGUP5QjDMLDllltQNOergGV9c8SO+ycg94MPApaVkCNavf02Env3AhA6RyQ//hiann463G439s2YGTRHZDz5JL7zlGLIkCE4OH8+tt94U8Cy5TnCMAzkfPEF8m67PWBZ3xxx4Pvv8dfIKwKWlZAjGlwyDBmH8mOoHJF89lloPmkSgLI3hsFyRNLAgYi/715vvK/v1Dlg2cT+J6DFyy974/33o3uGtY8wDAO/9+0LtS/Xb9m6mCPK32sACJkjGi1Z7B3fbTfcGDRHtF3xPb5auBBDhgzBP/feF9Z7DcMw8Ofd96Bw5syAZX1zxM7HHse/kycH7oOAHFH+XgNAyByR/OCDaHr+eXC73cj76qugOSLjkYfh6d8faWlpyP/uu7DeaxiGgZ3fzEfuuHEBy/rmiPz/+z9svejigGUl5IiUs89Gs0ll79/CyREt//ec9/egOeKEE5Dw6CPeeA/1XqPZW29i9uzZGDJkCLJP6B/WPsIwDGw86WQYO3f6LVsXc4TveUSoHJE+by4aNm8Ot9sd8jyi3ZLFyAOQlpaGvx9+OKz3GoZhYOtDD+Hg+9MDlvXNEX//73nseemlgGUl5Ajf84hQOaL+XXei2aWXwu12hzyPaHzP3VCDByMtLQ0HV/4Y1nuNkpISzH/1VbR+IXBe9c0RBzf8ji1nnRWwrIQc4XseAQTPEQnHH4/Wr7/m/T1Yjog/5hgkPfO0N5+E817DMAzs3bsX/154EUrD2EcYhoFNQ4bCs2WL37I1mSOO2PAbcnNzkZyc7Ld+OWHfo5vYiCt0Ed+i6enpcAf6l5ZKuN1urfJmcLk0BByGy6U/vm63G0lJ9UMXLG/D7azx1YkXl8slLt6lY2W0mBlft9uNOJ9/rQ6Fy1ID+3G5wh8r3XgHysa3fnL4+cRpWHn9MRvvkXxNtDpfu91u1IurF7qgQ0lOTrb0+uZ2u0O+kfBFJ7/VBXSuP3bsT9xuN9wOG2MdrN7Pud1uxMeHn0+cltvrJ9cPe3zNvt9J8fnEbTjlnYRWvLjsifcoh42xDg0bNrQ8X8fHJ4QueAin5ZOkJJ18ov9+Rxe3w85PdNA9LwQOx3y4o+Z2uxEV7f8vF2qLiPxEd0ZqKnbk5CC5vp/DgAC3LikpKcHXc+di0MCBiAn31iWGgR07dqBZs2ZwR0eHvnVJefnmzRGdmBi0rPc5pZCzdy+aH/oXyZC3GqhXD9u3b0fz5s2B4uKw/mSgpKQEcz79FINOPfWwe4CyAFB68CB2/PVXmbefBeX3VgO+Y+VTJ+CtS/yUD3mrAZ86UQkJIW9dUj7ng884A7GH5i7krUtiYrBj5040b94cLo8nrFsNGIaBbX/+iWaNGgVMQL5/VuQpLsb2LVsCj6+/W5cEGt8Aty7xF+8hb13iO76xsaFvNXCofPNWrRBVPr6hbl3idiPnn3/KxtflCn3rkuhobN++Hc2aNYMryJ9B+a77kpISzJk1q+JaD1AWAEoPHPA7tgAC37rE33yEunWJb52oqNC3LgmUT4LkiJKSEu8noGJiYvTySUlJWLcuMQwD27Kz0axJk8Dx7rPuSwsLsWPr1prJJwFyhN9418kn8fGhb11SHu+ZmYgqX3OhbjUQHY0du3bp55OtW9EsyIbGd90XHzyIr774ImC8+711SaDxDXTrEn/5OtStBkzmk2atWiG6PJ+EuNVAqVKY8803GDJkCKKjo0PfuiQm5nC8B8lTvjnCMAxs27QpYPxWXvda+aT8VgP+5iPErUsqxHw4ty7xaSM63FshGQZy/v338P4k1K1LNPJJ+brXzSfF+fn4avbswPHu71YDmvnEb7yHunVJoHwS7FYDhoEdu3ejRatWcLvdIfNJqcuFOXPnlsW7yxXWrQZ084mnpATbs7MD52t/ty4JJ5/43mrARD6pEO/h3LrERD4xXC7k7N59ON5D3bok3Hzis+5184lx8CBKiourvn8BAt+6JJx8UvlWA5XqhLx1SaB8EuxWA5r5pDQ6GnPmzCn7ix2lwrp1SVj5xGfdewoLsT3Y/kQnnwS6dUmofOJn3fvGe2y4ty6pnE9C3WogKgo7/v67bH9iGDWXT3zWslY+ObTu/b5fD1DW6115PkLdasC3Tmxs+PmkZUtE+66jYLca0Mknbjc8UVHeT3RHBbkOVMknmzejWdOm/ufD361LPB7/e5RAty4JEO9Bb10SLJ/4Wfe+cx4X7q1LDAM79u5FixYtysY31K1L4uLK9vDNm5eVC+PWJYZhYNuWLWjWuHHN5BM/OSJgvAe6dYm/fBLq1iW++5N69cK7dYlhYMc//6BF69b6+USpsG5dUlJSgtlffIHBJ50U8HyqQj4pLcX2P/7QyieB4jfgrUuqm09iYkLeusQ756edhjjf62eIWyHl7NkTdj5x16sHwzCwfft2NE1LgzvQP8L4rHvtfGLy1iV5+/ejQUZGWJ/oNn2P7t27dwMo+9eBusZBpeCOj68wgIEoL+MuKYGKjYU7IQHuMA57gbJNfIFhwBUfD3ele9X4TnSV8j6b1EBlfevk5+d77zPlrlS3Mh6f8lEhylZoJyYmqLsvrtjYgN6VccfGArGxQceqclkg+NiW98F7/6ZyB586vvca8lcWODznFe6hF6BsOb7j6/Z58xcMpRQKiorCGi8AQFRU2OPrio6GKzo6rPF1RUXBFWa8+5b1eviOr++Yud1VyvqW972/VKCyvnW84xuiLHB4PoCq6zMYoda6L674+PDj/VAfwor3Suu+xvJJkHXvrrS50conYX5KWymFgpKSsOPdFRNjST7xXcsh4z1UPgkjR3jjPcA/NPnDdD4pLAx/fKOjw4738nWvm09C5ms/a9lsPvEdI5fLFTRHuHziPVRZoFK8h5lPlFJhxy+gmU/K7x1sIp8Ei3l/6963jVBlfevkb9t2eH8SIkfYkk9iY8OP90NrWTefVHt/EuB7NCqjPB4UFBZ6xzdUPqkQ74f2BqHQzSdwu8Pfn+jkE591byafBIr3QOveTD6psh8XkE/c8fFwh5njtfJJpXUfdH+ik0+CrHvdfOIb777vH4Khm0+gsT+xLJ/4Wfe+8e67zrXySYgcUWF/IiGfHFr34bxf18onftZ9oDoh80mlGAyWI7TziW+86+QTj0crn4QTv8DhdV/j+cTPuved81BlK7RRUHB4fEPkiAr5WiefFBdbmk/CivdKH1jRzScB9ydB1r3yeFBQVGQun/g5YwjIoX8ICef9Olwu7XwSVr72Wfc1mU8A/2vZO+eV4rsm8wlQFr/5+flwHfqAXTjltfKJxjmkb1l3kH9kqlIv7JIA9u3bhzFjxiA9PR1NmjRBkyZNkJ6ejrFjx2Lfvn06L0UIIYQQQgghhBBCCCGE1Ahhf6J779696NOnD7Zv347hw4ejc+eym6P/+uuvmDJlCubPn49ly5ahQYMGYTf+3Xff4YknnsCqVauQk5ODmTNn4uyzzw5YfuHChTjxxBOrPJ6Tk4OMjIyw2yWE1ByFBQexasbX+GfBd/D8vQu/NW6CRieegKPPHYR6CYH/GoEQQuoCZnIc8yIhhFQfO3Ip8zWxAsYVIYTUHmEfdD/44IOIjY3F5s2b0aRJkyrPDRw4EA8++CCeeeaZsBvPz89Ht27dMGrUKJx77rlh19uwYUOFe7I0btw47Lp24na7kZGRofVFBzrl7WpDF6kedK9598KCg5h3zxOIXrMKsW43SmPjEP1nNvLe2ox5q9fi1IfHB9zMSR0rXeyaj0h1lxTv1WlDapyYQaK7pBwnPS+aQeocSnTnWpcXJ7pI9Yg09+rk0nCRnq/tmHO7+iXR3SqP6sZuXXa3uw0zSPSQ6G1XHae4OyXezdSx61qlQ9g9mTVrFp588skqh9wAkJGRgccffxwzZ87Uavy0007Dww8/jHPOOUerXuPGjZGRkeH9kTSgvrhcLqSmpob9Lbq65e1qQxepHnSvefdVM75G9JpVKE5LR0nTFlANG6GkaQsUN2iI6P9bhVUzvq7RPkVqvJup4xR3SfFenTakxokZJLpLynHS86IZpM6hRHeudXlxootUj0hzr04uDRfp+dqOOberXxLdrfKobuzWZXe72zCDRA+J3nbVcYq7U+LdTB27rlU6hP2J7pycHHTp0iXg8127dsXOnTtrpFOh+M9//oOioiJ07doVEyZMQL9+/QKWLSoqQpHPN7fm5eUBKPvG0pJg30pcifKyOnUMw8DWrVvR6tA3WNd0ebva0HWX6qFbx445N1NHkvs/336HGLcbql48oBRKSkrKvvk4PgEqdy/++fY7lFw0tNY8nBLvZuo4xV1SvFenDalx4hR3q+LdTI6TnhfDdbe7X4x3uvPaVvN16rJ7dXIp97Fc61b0Kdw61YkrM/3ie1bGuxV9squOU9ydEu9m6phpwww63i5V/vWbIWjevDk++OADHHfccX6fX7x4MS666CLs2LEj7MYrdMTlCnmP7g0bNmDhwoXo2bMnioqK8MYbb+Ddd9/FihUr0KNHD791JkyYgAceeKDK49OmTUNCuN/oSgjxS+Er0xBVUoLCpOQqz9U7kAdPTAzqXXtJLfSMEEKqj5kcx7xICCHVx45cynxNrIBxRQghNU9BQQEuueQS5ObmVriVtT/C/kT3oEGDcPfdd2PevHmIjY2t8FxRURHuvfdeDB482FyPw6Rjx47o2LGj9/e+ffti8+bNeOaZZ/Duu+/6rXPnnXfi5ptv9v6el5eHli1bYuDAgSEHx5eSkhLMmzcPp556atm/yIaBx+PB5s2b0a5dO0RFRdV4ebva0HWX6qFbx445N1NHkvuXny5CzNZsRCclAVAoLi5BbGwMABdiD+xDcdPmGDJkSK15OCXezdRxirukeK9OG1LjxCnuVsW7mRwnPS+G6253vxjvdOe1rebr1GX36uRS7mO51msz3qsTV2b6xfesjHcp+d1MHae4OyXezdQx04YZyu/OEQ5aX0bZs2dPZGVlYcyYMejUqROUUli/fj1eeuklFBUVBTxstpJevXphyZIlAZ+Pi4tDXFxclcdjYmLCDg6z9dxuN6KiohATExPWhOuWt6uNcsJ1l+ph1t3KOTdTR5J7o5NOQN5bm+E6WACVkAC4ALhccBUUwKUUGp10QsD6UseqHEnxbqaOU9wlxXt12pAaJ+XUdXer4t1MjpOeF33hWq/5NrjW5cVJOZEa70DddK9OLi2H+1iu9ZpuI5w61Y1difndTB1e2yIj3qtbxynuTol3M3WqM4c6hOsMaBx0t2jRAsuXL8f111+PO++8E+V3PHG5XDj11FPxwgsvoGXLlvq9rSZr1qxB06ZNbW83HNxuN1q0aBH2fWp0y9vVhi5SPehe8+5HnzsI81avRez/rYLK+xfumDhElxTBZRgo7XY0jj53UI32KVLj3Uwdp7hLivfqtCE1Tswg0V1SjpOeF80gdQ4lunOty4sTXaR6RJp7dXJpuEjP13bMuV39kuhulUd1Y7cuu9vdhhkkekj0tquOU9ydEu9m6th1rdIh7INuAMjMzMScOXPw77//YuPGjQCA9u3bIy0tzVTjBw4cwKZNm7y/Z2dnY82aNUhLS0OrVq1w5513Yvv27XjnnXcAAM8++ywyMzPRpUsXFBYW4o033sC3336LuXPnmmrfalwuF5KSkiwrb1cbukj1oHvNu9dLiMepD4/HqhlfY/eCxXD9uwclTZsj/cTjcfS5g1AvIb5G+xSp8W6mjlPcJcV7ddqQGidmkOguKcdJz4tmkDqHEt251uXFiS5SPSLNvTq5NFyk52s75txMO05xt8qjurFbl93tbsMMEj0kettVxynuTol3M3XsulbpYOrIvUGDBujVqxd69epl+pAbAH788Ud0794d3bt3BwDcfPPN6N69O+677z4AQE5ODrZu3eotX1xcjFtuuQVHHnkk+vfvj//7v//DN998g5NPPtl0H6zE4/Hg999/h8fjsaS8XW3oItWD7ta410uIR79Lz8bprz2OTpPuwumvPY5+l54dchMndax0sWs+ItVdWrybbUNqnJhBoru0HCc5L5pB6hxKdOdalxcnukj1iER3s7lUB8n52o45t6tfEt2t9KhO7NZ1dzvbMINED4nedtVxirtT4t1MHbuuVTqE/YnuUaNGhVXurbfeCrvxAQMGeG+B4o8pU6ZU+P22227DbbfdFvbrB8IVE4eCYg+ii0urPOd2uVAv5vB9ZQoOlSkpKUWRp+z3GOUKWrYcj8eDgqLSsjrRqFD2YLEHCspv+YPFHiTFBy9bjuExYBiG9/fCEg+MIGMaF+Xylg9VNiH2cHiUGBXdg5UtKjnsHRVV9fXjY6LgcpW9TlGpBx5DVRgr3zr+ygLwW75edBTc7rKyxaUGSn3GpXKdxDh30LLA4Tn3GArldwMKVLacaBe841viMVDiCVw2NsqN6Cj3odf1BByvymVLPUbQ8Y2JciPGp2yxxwg4vr5lPYZCUamngrvvnEe73YiNrlq2HN824mJc3rKGoVBYWjXplZcvLjUQf+heToHKelHKO75KKRwsCVw2yu3yzodSqsr69KXyWq7sHqxsQXFpwPkIlCP8zUflspXXvW+d6CggPtZcPgm27ktKKo6RVfmksDhw/AKV133weNfJJ4FyhL9418knCXFuRIXIJ+XlPYZC+a3LQuWIKChT+aQkRD6pnCOCxbu/HBFofAPlCH/lfcv6W/dm80lRqYGEQwMcKkcYPuMZqqzb5UKM+3B+18knweK3OvmkfN37G18XXEFzhG/Mxyp3hbL+1rJvG/XDzCcej8ey/Ynvui8sCR7vlfNJsHj3t+5184m/8nHRUUFzRKB8EmzdezwelPishVA5wuXTZvneIBC+614nn3gMFTTe/eWIcPKJ77o3k098472ey4246OA5wkw+gVFxPx4qR9iRTw4We1Ds5/oGBM4R4eSTyuuzcp0K1/tayifRPvnO9/2DP3TySeV1H2w+dPJJoBwRKp/4W/e+8Z7ojjq8N9DIJ6FyhNtnf1KT+aRyjgg3n5Sve3/7uUBly70rtxHldgXNEb51YmMQfj4p8XjzCRB83evmE9874mrlkyD7cX85otTjf48SKEcEivdgOUI3n/jOeYrP/XtD5RPfA7lQOSLWJ1+HKuu77otqMJ/4yxGB4j1QjvA3HxXeP/jJEb514mNdFc4jAq17j8eDYpP5xN8Zgy8V1rIKfj5Ved3r5pNA8RsoR1Q3n1Q+L/S3lsvnvKjEU+F+1cHWvdLMJ+V9MAwDB4s9cAeI38rrXiefaJ0b+JQtKA7/ID3sg+4pU6agdevW6N69e9DD6bpAq5s/wbFPLvP73IkdG2HyFb28vx/90Dc+ARmN23741vtc78w0fHBNH+/vxz22AHvzi/28ajaOapGCz8Ye533klKcXYfu+g377kNX4H8y7ub/39zNfWIKNfx/wW7Z5aj28eXZz7+8Xvroca7fl+i2blhiLlXed5P19xFs/YEX2Xr9l42OisP6hwd7f39rgxq0rvvVbFgC2TBrq/f9bPl6LOb/sApDtt+yvDw7yBu9dM37BJ6u3+Txbsc6qe05Bw6SyLxN9+Iv1ePf7Pyu92uHyi287ES3TEgAAT87dgNe++yNAb7Mx96YT0KFJfQDAiws24bn5GwOUjUa77nk4OjMdADB5aTYmzvktQFlg6pXHoOGh/3//h62479N1Acu+NbInTurUBADw7eb9ePqdbwKWffGSHhh6VNm96Of++jf+Oz0bgcb3ifOPwgU9y+6X/93GfzBqyo8+z1as8+BZXXB5nzYAgB+y92LY69/7PFsx3u88rROu6d8OAPDL9lyc9eLSAL3Nxg0nZ+GmUzsAADb9cwADn/kuoNvo4xTuOb0LAGD7voM4/vEFActe2rsVLu1cltT35hfj6IcDj9l5PVrg8fO6AgAOlnhw5AOByw45MgMvDT/a+/ttP1R096Vyjuj16IJDOaLqfITOEYfrhJ8jspHVOEkjR+Rg6R2H/+olWI5okBCDCd0O/x4qR/wy4VTv79e9twoLNvzjtyxQMUc8vvhvLHnPf/wCFXPEPbN+wYyfdiBQvAfPERXrBM8RFec8/ByRjU/H9EO3lqkAwskR6eiX1RhA6BzxxmU90OLQnmDWT9sx/uO1Acv65oilW/MxNEg+8c0RizftCRrvwXNExfENnSMOlw8/R2Tj6hPa4q4hnQGEkyM8ePicIwGEzhHndG+GAfXK/v9giQdH3Pd1wLJDjszA8xf/x/t7sLKVc8RFH2xBUan/+K2cI/o/sQh7C0rgL95D54jDdcLLEWXz3jw1HkvvOLw3CLqPSNiG1fcN9P4eKkfMHN7G+3uoHLH5kcN7jps/XIPZP+8MWNY3R/xv2T/45t1A1/uKOWLinA2YGiTeg+eIinMSOkccLh9+jsjG+1cdiz7tynYSoXLEAydnoFPHsv8PlSP+d9FR3v//et0ujJm2OmBZ3xzx4/aCoPnEN0es3LIXw6cG3p8EzxEV64TOEYfLh5cjyub9smNb46Gzy/YGoXLEud2L8PRFZX91GipHnNa1CW7oefjPdkPliDcuP7znqPheoyKVc8SIj/9EbpH/8Q2cI6rGfOgccbiN8HNENtISY7H63sN7g+A5YmuF9xqhcsRXI9t5/z9Ujvi/ew/3t+p7jYr45ojXVu7GF0HyiW+OeGre73hjyRYEivfgOaJindA54nD58HJE2Zz7vtcIlSPuGtDEm09C5YjHzuuKbmVqft5rVMQ3R/yyqzBoPvHNEet25OGcIPkkcI6oGu+hc8ThNsLPEdk4r0cLPHVh2cY5dI4owMuX9vT+HqzsgA6NcEffZO/voXLEe6MOv27g84iqOeLqmX/h73z/4xs8R1SsEzpHHC4ffo7IrnIeEThHlM2573uNUDli1vBM7/+HyhE/+Jyf+D+POIxvjpiyeg8+CZJPfHPEy4s243/fBo73wDmiaryHzhGH2wg/R2RXeK8RKkfc3K8ROh/KJ6FyxIQzOuPYQwcoVd9rVMQ3R/yVD3R7KPD5VOUccXaQfBI8R1SsEzpHHC4ffo7IrnIeEbhsNL7c9394e1Rv7yPBc0QDPND/8F04dHLEoOcWY/u+Qr9lK+eIcV9sw9Z9/sdX672Gxj4iGGEfdF933XV4//33kZ2djSuuuAKXXnpptW5bQgghhBBCCCGEEEIIIYTUBC6l8fHsoqIizJgxA2+99RaWLVuGoUOH4sorr8TAgQO9f/Ilnby8PKSmN8aOHTlITq5f5fnAty4pwddfz8WgQQO9fyYQ6tYlSikUF5cgNjYGUW53yFuXlJePi41FQlx00LKHKwFR8CA2NhYulyusP/ctLi5GbGwsikqNsP5koKSkBJ9+MRunDhxY4U8k/JUFym5LcLCoGLGxMX7jwt+tBnzHyrdOoFuX+Csf6lYDvnXiY6LDuHVJ2ZyfOfQ01IuLDVq2nNgoNzylJYiNjUWpocK61YBSCvkHC+GKig64jirfluDAwaKA4+vv1iWBxjfwrUuqxnuoW5f4thETFRXyVgPl5RPqxSHO+ycywW9d4nYBLqMs3gGEvHVJbJQbxcXFiImJQWFpkD+Z8lnLJSUlmPn57ArugcoCQH5Rid+x9Ve2PEf4m49Qty7xreN2uUPeuiRQPgl+65ISLPxmLoYMGVI2ZhbkE6UU9ucfRFSM//gtf93Df0ZcioOFNZNPAt+6pGq86+STejHRIW9dUl6+fkK9sP6MGABi3C4YnlLtfFJwsBAIkk981/3BwiJ8PvurgPHuL0cEGt9AOcJf+VC3GjCbT+LrxaJezOFYC37rEg/mz/0KQ4YMQXR0dMhbl8RFu73xHqps+VpWSmHfgYMB47c6+aR83fsb39C3Ljkc87ExsSH/nNC3jcS48P40WCmFaBiW7E/K171SCgcKCuGODhzvvjniwMEizJ4TON79rXvdfOKvfKhblwTKJ8FyhFIK8JQiIb4eXC5XGLcu8WDu12Xx7nJHhXWrAd18UuoxsL+gMGC8+8sR4eQT33VvJp/4xnu9uNiQtxowk0/cAFzq8H481J8G25FPym5dUlzl+gYEzhHh5JPKa7lynVC3GrAjn0TDwJw5czBkyBAYLndYty4JJ59UuS1BYeD9uE4+CZQjQuUT/7cuORzvifXiwtpzVM4noW41EO12QR3an3gMFXY+OVhYBOWOCji+vmtZJ58cvnVJ1f1coLLl3pXHN9StBnzrREeFvhWSN5/ExaKez9oImiOgl0+iYGD27NkYMmQISgLcxqG8rG8+yT1wEDEBxtdfjjCU4Td+A+WIQPEeLEfo5hPfOU9JjA9a1reNKOVBXFwcXC5XGLcjcaOkpOz9fbHHCOvWJTWdT/zfusR/vAfKEf7mI9StS3zrxEVHhXXrEqUUlKcUiSbyiaEQ1q1LSkpK8MWXs3HSqYHPpyrsOTwG8jTzSaD4DZQjqptPKp8X+r91SdmcDxk8CEkJ9YKWLccFwK2RT+rFRB3qVzE8iCp7Ab+ve3jd6+YTs7cuycvbj6aN0pCbm4vk5ORA1QFofKIbAOLi4jBs2DAMGzYMf/75J6ZMmYLrr78epaWlWLdunbhv2gyEKilCQmxUhQEMhPew16UQF1X2e0yM/3qVX08phXrRbrjd7ioT7jvR/sqHKutbxzB83njFBC5bXj46Ojqssr7EuIO7+xIXE4WYqDi/3lXK+iz8QGNVuWw45WOj3Yit9F2rger4KwscnvPyC0Wwsr5tuA6Nr++bv1DEx8WGNV4AEB3lRnJCeOMb7XP4FWp8o9yusOPdt2w5gdpw+ylbuXyosr51yuO98uYnUPnoQxuMcNZ7OaHWui8JsdEhx9a3bHm/QtWpvO5rKp8EW/clrooXHKvySWJ8ePELlK37mDDjXSef+K7lUPFeE/nkcHn//9DkD6UUDJd+PqmnmU/Cjffyda+bT0KV97fuayKfhFr3JSUq7LLlbZTHu04+CTdfl79uuPnEd3Opm08qxnzF5/ytZTP5pCxfG2GVLS9vJp8k1As/3uOiw4/38rWsm09qcn8SbN2Xja87rLJAxXiP9nljGwqdfBLldoUd7zr5xF3NfFIh3n32koHWvZl8Unk/LiGfxMdGIdoVHVbM6+STyuszWJ3ayiclJSXe//d9/xAKnXwSG+1GdJjzYVU+8bfufePdd53r5JNQOcJ3f6KTT+JiYyzJJ+XrPpz36zr5xN+6D1RHJ58Awde9bj4pKTm8NnTySX3NfKKUO6w9iu9hutX5xHfOQ5X1bcM33kPlCN98LSmfhBPvvuveTD4JVCfYuq9OPvF3xhAItyv89+tuE/kknPj1Xfc1mU8A/2u5fM7jKsV3TeaTcqKjoxEbZvwCevlEZ5/vW7Y0yLloZcK7KvmreEhCKSXq2zUlYRgGNm7cWGFjVpPl7WpDF6kedJflLnWsdLFrPiLVnfFOd6va0EWqB91luXOty4sTXaR60F2Wu9SxMkOkukv1oLssd6ljpYvU/YlT3J0S72bq2HWt0kHroLuoqAjvv/8+Tj31VHTo0AE///wzXnjhBWzdurXOfJqbEEIIIYQQQgghhBBCiLMI+29brr/+ekyfPh0tW7bEqFGj8P777yM9Pd3KvhFCCCGEEEIIIYQQQgghIQn7oPuVV15Bq1at0LZtWyxatAiLFi3yW27GjBk11jlCCCGEEEIIIYQQQgghJBRhH3RffvnlYd+InJThdruRlZVV5csnaqq8XW3oItWD7rLcpY6VLnbNR6S6M97pblUbukj1oLssd651eXGii1QPustylzpWZohUd6kedJflLnWsdJG6P3GKu1Pi3Uwdu65VOoR90D1lyhQLu+FcSktLERsba1l5u9rQRaoH3WW5Sx0rXeyaj0h1Z7zT3ao2dJHqQXdZ7lzr8uJEF6kedJflLnWszBCp7lI96C7LXepY6SJ1f+IUd6fEu5k6dl2rwkXOkbsDMQwD2dnZWt9WqlPerjZ0kepBd1nuUsdKF7vmI1LdGe90t6oNXaR60F2WO9e6vDjRRaoH3WW5Sx0rM0Squ1QPustylzpWukjdnzjF3SnxbqaOXdcqHcL+RPe5554bVjneo5sQQgghhBBCCCGEEEKInYR90J2SkmJlPwghhBBCCCGEEEIIIYQQU4R90D158mQr++FYdG/IbuYG7na0oYtUD7pbi0QPid521XGKO+Pd+jpWtyE1TnSR6kF3a5HqEanuEr3N1HHKnJup4xR3qWNlhkh1l+pBd2uR6CHR2646TnF3SrybqSPpiygBjYNuANiyZQvmzZuH4uJiDBgwAF26dLGqX44gKioKHTp0sKy8XW3oItWD7rLcpY6VLnbNR6S6M97pblUbukj1oLssd651eXGii1QPustylzpWZohUd6kedJflLnWsdJG6P3GKu1Pi3Uwdu65VOoR97L5gwQJ06dIF11xzDf773/+ie/fueO+996zsW51HKYUDBw5AKWVJebva0EWqB91luUsdK13smo9IdWe8092qNnSR6kF3We5c6/LiRBepHnSX5S51rMwQqe5SPeguy13qWOkidX/iFHenxLuZOnZdq3QI+6D73nvvxamnnort27djz549uOqqq3DbbbdZ2bc6j2EY2LZtm9a3leqUt6sNXaR60F2Wu9Sx0sWu+YhUd8Y73a1qQxepHnSX5c61Li9OdJHqQXdZ7lLHygyR6i7Vg+6y3KWOlS5S9ydOcXdKvJupY9e1SoewD7p/+eUXPProo2jatCkaNGiAJ554An///Tf27NljZf8IIYQQQgghhBBCCCGEkKCEfdCdl5eH9PR07+8JCQmIj49Hbm6uJR0jhBBCCCGEEEIIIYQQQsJB68sov/76a6SkpHh/NwwD8+fPxy+//OJ97Mwzz6y53tVxXC4XYmNj4XK5LClvVxu6SPWguyx3qWOli13zEanujHe6W9WGLlI96C7LnWtdXpzoItWD7rLcpY6VGSLVXaoH3WW5Sx0rXaTuT5zi7pR4N1PHrmuVDloH3SNGjKjy2DXXXOP9f5fLBY/HU/1eOQS32422bdtaVt6uNnSR6kF3We5Sx0oXu+YjUt0Z73S3qg1dpHrQXZY717q8ONFFqgfdZblLHSszRKq7VA+6y3KXOla6SN2fOMXdKfFupo5d1yodwr51iWEYIX94yF0RpRT27dun9W2lOuXtakMXqR50l+Uudax0sWs+ItWd8U53q9rQRaoH3WW5c63LixNdpHrQXZa71LEyQ6S6S/Wguyx3qWOli9T9iVPcnRLvZurYda3SIeyDbqKPYRjYuXOn1reV6pS3qw1dpHrQXZa71LHSxa75iFR3xjvdrWpDF6kedJflzrUuL050kepBd1nuUsfKDJHqLtWD7rLcpY6VLlL3J05xd0q8m6lj17VKh7BvXfK///3P7+MpKSno0KED+vTpU2OdIoQQQgghhBBCCCGEEELCJeyD7meeecbv4/v27UNubi769u2Lzz77DGlpaTXWOUIIIYQQQgghhBBCCCEkFGHfuiQ7O9vvz7///otNmzbBMAzcc889Vva1zuFyuZCYmKj1baU65e1qQxepHnSX5S51rHSxaz4i1Z3xTner2tBFqgfdZblzrcuLE12ketBdlrvUsTJDpLpL9aC7LHepY6WL1P2JU9ydEu9m6th1rdIh7E90B6Nt27aYNGkSRo0aVRMv5xjcbjdatmxpWXm72tBFqgfdZblLHStd7JqPSHVnvNPdqjZ0kepBd1nuXOvy4kQXqR50l+UudazMEKnuUj3oLstd6ljpInV/4hR3p8S7mTp2Xat0qLEvo2zVqhV27txZUy/nCAzDwO7du7Vu4q5T3q42dJHqQXdZ7lLHShe75iNS3RnvdLeqDV2ketBdljvXurw40UWqB91luUsdKzNEqrtUD7rLcpc6VrpI3Z84xd0p8W6mjl3XKh1q7KD7559/RuvWrWvq5RyBUgq7d++GUsqS8na1oYtUD7rLcpc6VrrYNR+R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhUt2letBdlrvUsdJF6v7EKe5OiXczdey6VukQ9q1L8vLy/D6em5uLVatW4ZZbbsGIESNqrGOEEEIIIYQQQgghhBBCSDiEfdCdmpoa8ObiLpcLo0ePxh133FFjHSOEEEIIIYQQQgghhBBCwiHsg+4FCxb4fTw5ORlZWVlISkqqsU45BZfLhZSUFK1vK9Upb1cbukj1oLssd6ljpYtd8xGp7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRki1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ5hH3T3798/ZJlffvkFXbt2rVaHnITb7UbTpk0tK29XG7pI9aC7LHepY6WLXfMRqe6Md7pb1YYuUj3oLsuda11enOgi1YPustyljpUZItVdqgfdZblLHStdpO5PnOLulHg3U8eua5UO1f4yyv379+O1115Dr1690K1bt5rok2MwDAM5OTla31aqU96uNnSR6kF3We5Sx0oXu+YjUt0Z73S3qg1dpHrQXZY717q8ONFFqgfdZblLHSszRKq7VA+6y3KXOla6SN2fOMXdKfFupo5d1yodTB90f/fddxgxYgSaNm2KJ598EieddBK+//77muxbnUcphdzcXK1vK9Upb1cbukj1oLssd6ljpYtd8xGp7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRki1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ5h37oEAHbu3IkpU6bgzTffRF5eHi688EIUFRVh1qxZOOKII6zqIyGEEEIIIYQQQgghhBASkLA/0X3GGWegY8eOWLt2LZ599lns2LEDzz//vJV9I4QQQgghhBBCCCGEEEJCEvYnuufMmYNx48bhuuuuQ1ZWlpV9cgwulwvp6ela31aqU96uNnSR6kF3We5Sx0oXu+YjUt0Z73S3qg1dpHrQXZY717q8ONFFqgfdZblLHSszRKq7VA+6y3KXOla6SN2fOMXdKfFupo5d1yodwj7oXrJkCd58800cffTR6Ny5My677DJcfPHFVvatzuN2u5Genm5Zebva0EWqB91luUsdK13smo9IdWe8092qNnSR6kF3We5c6/LiRBepHnSX5S51rMwQqe5SPeguy13qWOkidX/iFHenxLuZOnZdq3QI+9Ylxx57LF5//XXk5OTgmmuuwfTp09GsWTMYhoF58+Zh//79VvazTmIYBv766y+tbyvVKW9XG7pI9aC7LHepY6WLXfMRqe6Md7pb1YYuUj3oLsuda11enOgi1YPustyljpUZItVdqgfdZblLHStdpO5PnOLulHg3U8eua5UOYR90l5OYmIhRo0ZhyZIl+Pnnn3HLLbdg0qRJaNy4Mc4880wr+lhnUUohPz9f69tKdcrb1YYuUj3oLstd6ljpYtd8RKo7453uVrWhi1QPusty51qXFye6SPWguyx3qWNlhkh1l+pBd1nuUsdKF6n7E6e4OyXezdSx61qlg/ZBty8dO3bE448/jm3btuH999+vqT4RQgghhBBCCCGEEEIIIWFTrYPucqKionD22Wfjs88+q4mXI4QQQgghhBBCCCGEEELCpkYOuol/3G43MjIy4HaHN8y65e1qQxepHnSX5S51rHSxaz4i1Z3xTner2tBFqgfdZblzrcuLE12ketBdlrvUsTJDpLpL9aC7LHepY6WL1P2JU9ydEu9m6th1rdIhurY74GRcLhdSU1MtK29XG7pI9aC7Xh1dJHpI9LarjlPcGe/W19FFortEbzN1nDLnZuo4xZ1rPfzydrWhi1QPuuvV0UWihx3eZtpxirtUD7rr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IYQQUsdwuVyYNWuW6foLFy6Ey+XCvn37qtWPkSNH4uyzz67WaxBCCCGEEFIT8KCbEEIIIYSQSvzzzz+47rrr0KpVK8TFxSEjIwODBg3C0qVLa7trNULfvn2Rk5ODlJSU2u4KIYQQQgghNUJ0bXeAEEIIIYQQaZx33nkoLi7G22+/jbZt22LXrl2YP38+9uzZU9tdqxFiY2ORkZFR290ghBBCCCGkxuAnugkhhBBCCPFh3759WLx4MR577DGceOKJaN26NXr16oU777wTZ555prfc008/jSOPPBKJiYlo2bIlrr/+ehw4cMD7/JQpU5CamoovvvgCHTt2REJCAs4//3wUFBTg7bffRps2bdCgQQOMGzcOHo/HW69NmzZ46KGHMGzYMCQmJqJ58+Z48cUXg/b5r7/+woUXXojU1FSkpaXhrLPOwpYtWwKWr3zrkvK+fv311+jcuTOSkpIwePBg5OTkeOt4PB7cfPPNSE1NRcOGDXHbbbdBKVXhdQ3DwMSJE5GZmYn4+Hh069YNH3/8MQBAKYVTTjkFgwYN8tbbu3cvWrRogfvuuy/4pBBCCCGEEBICHnQTQgghhBDiQ1JSEpKSkjBr1iwUFRUFLOd2u/G///0P69atw9tvv41vv/0Wt912W4UyBQUF+N///ofp06fjq6++wsKFC3HOOedg9uzZmD17Nt599128+uqr3sPgcp544gl069YNP/30E+644w7ccMMNmDdvnt9+lJSUYNCgQahfvz4WL16MpUuXeg+qi4uLw/YuKCjAk08+iXfffRffffcdtm7diltvvdX7/FNPPYUpU6bgrbfewpIlS7B3717MnDmzwmtMnDgR77zzDl555RWsW7cON910Ey699FIsWrQILpcLb7/9NlauXIn//e9/AIBrr70WzZs350E3IYQQQgipNi5V+WMYBEDZJ1ZKSkpquxuEEEKIKWJjY+F289+zCTHLJ598gquuugoHDx5Ejx490L9/f1x88cU46qijAtb5+OOPce2112L37t0Ayj4lfcUVV2DTpk1o164dgLKD3XfffRe7du1CUlISAGDw4MFo06YNXnnlFQBln+ju3Lkz5syZ433tiy++GHl5eZg9ezaAsi+jnDlzJs4++2y89957ePjhh7F+/Xq4XC4AQHFxMVJTUzFr1iwMHDiwSl8XLlyIE088Ef/++y9SU1P99vWl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m2/yi9yCEGqeN23ahIKCApx66qkV6hUXF1e4pcKLL76It956C1u3bsXBgwdRXFyM//znPxXqdOnSxXuwBgBNmzbFzz//bI1YDZK/dBlcbneFQ24AcCcmwuV2I3/pMksOusupa2sRADp27IjPPvsMALB//3588MEHuOCCC7BgwQL07NkzfPkIgmuREEIIIYQQQgiRAQ+6a5i/9xchMTbK73OJsdH4e3+R3+dqklGjRnlvWfDiiy9a1s6BAwdwzTXXYNy4cVWeC/eL2KZNm4bCwsIKB3nlB3S///47OnToUGP9DYdfHxwU8Dm3y1Xh91X3nhJ22SW3n1i9jvkh2DwfOHAAAPDll1+iefPmFZ6Li4sDAEyfPh233nornnrqKfTp0wf169fHE088UeXLQGNiYir87nK5YBhGjbpYQek//8CdkOD3OXdCAkr/+cfyPtSltQgAsbGxaN++vff37t27Y9asWXj22Wfx3nvv1Uhfw6Xj6lWBn4yqmGM7LF0SoCAAd8U7dLWf/011uuUXrkVCCCGEEEIIIaT24UF3DdO4fhzW79zv97n84lK0SvN/8FaTDB48GMXFxXC5XBg0qOrBbbt27RAbG4ulS5eidevWAMpul7By5UrvbQ06d+7s/WRnOd9//32F33v06IFff/21wsGYLm+++SZuueWWKp/evv766/HWW29h0qRJpl/bDAmx4S8Jq8qGS7B5PuKIIxAXF4etW7eif//+fusvXboUffv2xfXXX+99bPPmzTXez9oiulEjFB26nURljIICxLVsaXkf6tJaDERUVBQOBrgtiJUE+kcKO8uGC9ciIYQQQgghhBBS+/Cgu4Y5vkM61u3IQ35RaZV7dBuq7HmriYqK8t72ICqq6qfLExMTcd1112H8+PFIS0tDq1at8Pjjj6OgoABXXnklAODaa6/FU089hfHjx2P06NFYtWpVlS89u/3223Hsscdi7NixGD16NBITE/Hrr79i3rx5eOGFF0L2c82aNVi9ejWmTp2KTp06VXhu2LBhePDBB/Hwww8jOpph6o9g81y/fn3ceuutuOmmm2AYBo477jjk5uZi6dKlSE5OxogRI5CVlYV33nkHX3/9NTIzM/Huu+9i5cqVyMzMrA2dGiexX18Url8PIz+/yj26lWEgsV9fy/tQV9ZiOaWlpdi5cyeAw7cu+fXXX3H77bebHIHIgGuREEIIIYQQQgipfXiCWMP0a5+On7flYunmPXC7ym5Xkl9cdsjdr11D9Gtv/UE3ACQnJwd9ftKkSTAMA5dddhn279+Pnj174uuvv0aDBg0AlN3u4JNPPsFNN92E559/Hr169cKjjz6KUaNGeV/jqKOOwqJFi3D33Xfj+OOPh1IK7dq1w0UXXRRWH998800cccQRVQ65AeCcc87B2LFjMXv2bJx55pka5pFFsHl+6KGH0KhRI0ycOBF//PEHUlNT0aNHD9x1110AgGuuuQY//fQTLrroIrhcLgwbNgzXX3895syZY1f3LSWxb18U/rIO+d9/X3av7oQEGAUFZYfcxx6LxL7WH3QDdWMtlrNu3To0bdoUAJCQkIB27drh5ZdfxuWXX65pHXlwLRJCCCGEEEIIIbWLSymlarsTUigsLER2djYyMzNRr149069TVOrB0k27sfj33fh7fxEa14/D8R3S0a99OuKi/d+/mxBS8xjFxchftgz5S5eh9J9/EN2oERL79UVi375wx8bWdvcIsZSauqYRQgghhNQWI0eORPv27XHPPffUSvunnXYaRo4cqf0BEl+2bNmC9u3bo7S0tNr9adOmDd577z0cd9xx1X4tO0hKSsLvv/+OZs2amX6NKVOm4L333sM339T8d+2QwwwYMACjR4/GpZdeamu7EyZMwLZt2/DGG2/Y2q7TWbhwIUaPHo1NmzbVdldsxx26CNElLjoKJ3VqgvvP7IIXh/fA/Wd2wUmdmvCQmxCbccfGov6AAci4+y60ePYZZNx9F+oPGMBDbkIIIYQQQmqQNm3aICEhAUlJSWjWrBnGjRsHj8dT293yy4QJE9ClSxe43e4qtwSszJw5c7QPuUeOHImHH364Gj20j4ULF2p9z8+GDRtwxhlnoFGjRkhPT8e5556LHTt2BCx/4MAB7UPuNm3aYMmSIF82X0fQjYNff/0VAwcORIMGDdCmTZugZbds2QKXy4WkpCTvz9SpU6vZY3twuVzYtm1bbXfDcQwYMADvvfdebXdDBDzoJoQQQgghhBBCSLWYO3cuDhw4gMWLF+OTTz7Bm2++Wdtd8kv79u3x9NNP15lPRUsiNzcX5557Ln7//Xds374dLVq0wMiRI2u7W7VGTf5jTkxMDC6++GI899xzYZWPiorCgQMHvD/Dhw+vsb6QitTEX2PUhTadAg+6CSGEEEIIIYQQUiO0a9cO/fr1w5o1a7yP/fe//0WzZs2QmpqKgQMHYuvWrd7nXC4XXn75ZWRmZiI9PR0TJ070+7q7du3CUUcdhZdeegkA8Mgjj6Bp06ZITk7GkUceiV9//TWs/l166aUYNGgQEhISQpb1/ZTk999/j+7duyM5ORnNmzfHM888U6X822+/jalTp+Khhx5CUlISrr32Wu9zr7/+Opo2bYqMjAy8/fbb3scPHjyIsWPHolmzZmjRogUmTZoUtE/Lli1Dhw4d0LBhQ9x6660wDMP73IsvvoisrCykp6djxIgRyM/PBwD8/vvvOO6445CcnIwmTZpg/Pjx8Hg8OO200/DHH394PxUcil69euGKK65AgwYNEBcXh7Fjx2L58uUBy/t+evett95C69atUb9+fXTs2BELFy6sUn706NHYunUrBg4cWOFTyoZh4LrrrkNycjKOOOIIrF692ltn69atGDp0KBo2bIjOnTvjq6++8tuXu+++2/sdOTt27IDL5cI777wDoOwfafr16weg7PZ/Y8aMQUZGBlq1aoUHH3zQO8YTJkzAsGHDcN555yEpKQnffvutX69gcRCIrKwsjBo1Ch06dAhZVofhw4fjtddeA1AWOy6XC9999x0A4LXXXqtwQL5x40b07NkTycnJuOiii1BUVOR97uOPP0aXLl2QlpaGM888E3///TeAw38V8OCDDyItLQ1t2rTB119/7bcvAwcOBAB07NgRSUlJWLx4MYCyNXDBBRegfv366N27N7Kzs711fv75Z5xwwglo0KABjj76aPz4449+X/uff/7BaaedhtTUVKSnp2PYsGHe57799luvV1ZWlrfdv/76C0OGDEGDBg1wxBFH4NNPP/XWGTBgAO6991707NkTiYmJKCkpwaJFi3D00UcjNTUVAwYMwObNm739HzZsGNLS0pCWlobjjz/ebx///fdfDB48GOnp6WjUqBGuvvpq7xiXj+P999+P9PR03H///WHnhoceegiLFy/G6NGjkZSUhEcffdT7XKB52bt3Ly655BI0btwYbdu2rZCTfDEMA+PGjUN6ejpSU1NxzDHHYPfu3QCARx99FK1bt0ZycjL69OmDtWvXeuu1adMGTzzxBDp37oz69evjvvvuw4YNG9CzZ0+kpKRUWROBcpcpFPFy8OBB9euvv6qDBw/WdlcIIYSQasFrGiGEEELsonXr1mrx4sVKKaU2bNigMjIy1JNPPul9/v3331f79u1TBQUF6oorrlBnnXWW9zkA6vzzz1f79+9XP//8s4qLi1ObNm1SSik1YsQI9dBDD6lt27apzp07q9dff10ppdT69etVixYtVE5OjjIMQ61fv17l5OQopZSaOHGiGjp0aMg+Dxo0SE2ePDlomf79+6t3331XKaVU79691XvvvaeUUmrv3r1q9erVfuuU97mc7OxsBUCNGzdOFRUVqa+//lolJiaqvLw8pZRS119/vRo2bJjav3+/2r59uzriiCPU559/7ve1W7durf7zn/+onJwcb9k33nhDKaXUhx9+qLp27aq2bNmiCgoK1LBhw9Qtt9yilFLqoosuUo8++qgyDEMdOHBArVixQiml1IIFC1S7du1CjlUgXn/9ddW7d++AzwNQf/31lzpw4ICqX7+++v3335VSSm3ZskX98ccfAR3LY0kppSZPnqyio6PVtGnTVGlpqbr77rvVCSecoJRSyuPxqKOOOko999xzqqSkRC1btkylp6ernTt3VnndOXPmqOOOO04ppdT06dNVZmamuuqqq5RSSt1zzz3q9ttvV0opddddd6n+/furvXv3qj///FNlZWV54+T+++9XcXFx6uuvv1YejyeoV+U4CJfly5er1q1bBy1THlNNmzZVrVq1UjfccIPKz8/3W/bll19Wl156qVJKqUmTJqnMzEz1yCOPKKWUuvTSS9XLL7+slCqL9U6dOqktW7aof//9Vx1xxBHqrbfeUkoptWLFCtW8eXO1du1aVVxcrMaPH6/OO+88pVRZDEVFRalJkyapkpIS9eqrr6r/b+/eg6Ks+jiAf3e5yYILKHeEHQQMUPNusUCQpOKlDFFQErykQF5CENQIRAWdxlFAnRAnp9HMwXE0DEJrKkmtxmtlal4L2ZStFvKyIMvuyu/9g+EZVnZX4H3Ll/p9/nqefc45z7k8HPF3Hs76+PiYrHv7M9EuLy+PbG1t6dixY6TT6SgxMZGSkpKIiEitVpOnpycdPHiQ9Ho9lZeXk7e3t9H/36xatYreeOMN0ul0pNFo6JtvviEiop9//pn69u1LlZWVpNfrqba2lm7cuEFERKGhoZSZmUkajYaqq6vJ3t5euBYREUF+fn5048YNam5uJoVCQc7OznTixAnS6/W0bds2Gj16tNDHL7/8Mj18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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# the `-` sign is to sort in descending order because higher AUPIMO is better\n",
+ "# the rank values are 1 or 2 because there are only two models\n",
+ "# where 1 is the best and 2 is the worst\n",
+ "# when the scores are the same, 1.5 is assigned to both models\n",
+ "ranks = stats.rankdata(-np.stack([modela, modelb], axis=1), method=\"average\", axis=1)\n",
+ "ranksa, ranksb = ranks[:, 0], ranks[:, 1]\n",
+ "\n",
+ "num_samples = ranks.shape[0]\n",
+ "indexes = np.arange(num_samples)\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(18, 2.5))\n",
+ "\n",
+ "# plot sample index vs score and their mean\n",
+ "ax.scatter(indexes, ranksa, s=30, color=\"tab:blue\", marker=\"o\", label=\"Model A\", zorder=3, alpha=0.6)\n",
+ "ax.axhline(ranksa.mean(), color=\"tab:blue\", linestyle=\"--\", label=\"Mean\", zorder=3)\n",
+ "ax.scatter(indexes, ranksb, s=30, color=\"tab:red\", marker=\"o\", label=\"Model B\", zorder=3, alpha=0.6)\n",
+ "ax.axhline(ranksb.mean(), color=\"tab:red\", linestyle=\"--\", label=\"Mean\", zorder=3)\n",
+ "\n",
+ "# configure the x-axis\n",
+ "ax.set_xlabel(\"Sample index\")\n",
+ "ax.set_xlim(0 - (eps := 0.01 * num_samples), num_samples + eps)\n",
+ "ax.xaxis.set_major_locator(IndexLocator(5, 0))\n",
+ "ax.xaxis.set_minor_locator(IndexLocator(1, 0))\n",
+ "\n",
+ "# configure the y-axis\n",
+ "ax.set_ylabel(\"AUPIMO Rank\")\n",
+ "ax.set_ylim(1 - 0.1, 2 + 0.1)\n",
+ "ax.yaxis.set_major_locator(FixedLocator([1, 1.5, 2]))\n",
+ "ax.invert_yaxis()\n",
+ "\n",
+ "# configure the grid, legend, etc\n",
+ "ax.grid(axis=\"both\", which=\"major\", linestyle=\"-\")\n",
+ "ax.grid(axis=\"x\", which=\"minor\", linestyle=\"--\", alpha=0.5)\n",
+ "ax.legend(ncol=4, loc=\"upper left\", bbox_to_anchor=(0, -0.15))\n",
+ "ax.set_title(\"AUPIMO scores ranks\")\n",
+ "\n",
+ "fig.text(\n",
+ " 0.9,\n",
+ " -0.1,\n",
+ " \"Ranks: 1 is the best, 2 is the worst, 1.5 when the scores are the same.\",\n",
+ " ha=\"right\",\n",
+ " va=\"top\",\n",
+ " fontsize=\"small\",\n",
+ ")\n",
+ "\n",
+ "fig # noqa: B018, RUF100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Again, blue seems to have a slight advantage, but -- again -- is it significant enough to be sure that model A is better than model B?\n",
+ "\n",
+ "Remember that AUPIMO is a recall metric, so it is basically a ratio of the area of anomalies. \n",
+ "\n",
+ "Is it relevant if model A has 1% more recall than model B in a given image?\n",
+ "\n",
+ "> You can check that out in [`701b_aupimo_advanced_i.ipybn`](./701b_aupimo_advanced_i.ipynb).\n",
+ "\n",
+ "We'll --arbitrarily -- assume that only differences above 5% are relevant."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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IYQ0aHjQTQghhBBCCCGEEEIIIaRBw4NuC3G5XEhPT9f6tlKd8na1oYtUD7rLcpc6VrrYNR/R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhWt2letBdlrvUsdJF6v7EKe5OiXczdey6VukQW98dcDJutxvZ2dmWlberDV2ketBdlrvUsdLFrvmIVnfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oM0eou1YPustyljpUuUvcnTnF3SrybqWPXtUoHfqLbQrxeL/Ly8rS+rVSnvF1t6CLVg+6y3KWOlS52zUe0ujPe6W5VG7pI9aC7LHeudXlxootUD7rLcpc6VmaIVnepHnSX5S51rHSRuj9xirtT4t1MHbuuVTrwoNtClFLIz8/X+rZSnfJ2taGLVA+6y3KXOla62DUf0erOeKe7VW3oItWD7rLcudblxYkuUj3oLstd6liZIVrdpXrQXZa71LHSRer+xCnuTol3M3XsulbpwINuQgghhBBCCCGEEEIIIQ0aHnQTQgghhBBCCCGEEEIIadDwoNtCXC4XMjMztb6tVKe8XW3oItWD7rLcpY6VLnbNR7S6M97pblUbukj1oLssd651eXGii1QPustylzpWZohWd6kedJflLnWsdJG6P3GKu1Pi3Uwdu65VOsTWdwecjNvtRmZmpmXl7WpDF6kedJflLnWsdLFrPqLVnfFOd6va0EWqB91luXOty4sTXaR60F2Wu9SxMkO0ukv1oLssd6ljpYvU/YlT3J0S72bq2HWt0oGf6LYQr9eL3377TevbSnXK29WGLlI96C7LXepY6WLXfESrO+Od7la1oYtUD7rLcudalxcnukj1oLssd6ljZYZodZfqQXdZ7lLHShep+xOnuDsl3s3UsetapQMPui1EKYXi4mKtbyvVKW9XG7pI9aC7LHepY6WLXfMRre6Md7pb1YYuUj3oLsuda11enOgi1YPustyljpUZotVdqgfdZblLHStdpO5PnOLulHg3U8eua5UOPOgmhBBCCCGEEEIIIYQQ0qDhQTchhBBCCCGEEEIIIYSQBg0Pui3E7XYjKysLbrexYdYtb1cbukj1oLssd6ljpYtd8xGt7ox3ulvVhi5SPeguy51rXV6c6CLVg+6y3KWOlRmi1V2qB91luUsdK12k7k+c4u6UeDdTx65rlQ6x9d0BJ+NyudC4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6JzlGr51yZgxYwyVe/31142+JAYOHOi7BUogpk6dWu33m2++GTfffLPh15eA1+u1tLxdbegi1YPu1iLRQ6K3XXWc4s54t76O1W1IjRNdpHrQ3VqkekSru0RvM3WcMudm6jjFXepYmSFa3aV60N1aJHpI9LarjlPcnRLvZurYda0yiuGD7qlTp6Jdu3bo2bNnyMNpQgghhBBCCCGEEEIIIcRODB90X3HFFXj33XexdetWXHTRRbjgggtM35ubEEIIIYQQQgghhBBCCIkUhr9m97nnnkNeXh5uvvlmfPrpp2jTpg3OOeccfPnll/yEdxDcbjdycnK0vplYp7xdbegi1YPustyljpUuds1HtLoz3uluVRu6SPWguyx3rnV5caKLVA+6y3KXOlZmiFZ3qR50l+Uudax0kbo/cYq7U+LdTB27rlU6aPUkISEBI0aMwLx587BmzRp0794dV155Jdq3b4+ioiKr+tigiY01/KF5U+XtakMXqR50txaJHhK97arjFHfGu/V1rG5DapzoItWD7tYi1SNa3SV6m6njlDk3U8cp7lLHygzR6i7Vg+7WItFDordddZzi7pR4N1PHrmuVUUwfubvdbrhcLiil4PF4Itknx+D1erFx40bDN2bXLW9XG7pI9aC7LHepY6WLXfMRre6Md7pb1YYuUj3oLsuda11enOgi1YPustyljpUZotVdqgfdZblLHStdpO5PnOLulHg3U8eua5UOWgfdZWVlePfddzFo0CB07twZP//8M5599lls374dqampVvWREEIIIYQQQgghhBBCCAmK4c+XX3nllZg+fTratGmDMWPG4N1330VmZqaVfSOEEEIIIYQQQgghhBBCwmL4oPvFF19E27Zt0aFDByxatAiLFi0KWG7GjBkR6xwhhBBCCCGEEEIIIYQQEg7DB93//e9/4XK5rOyL43C73cjNzdX6tlKd8na1oYtUD7rLcpc6VrrYNR/R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhWt2letBdlrvUsdJF6v7EKe5OiXczdey6Vulg+KB76tSpFnbDuVRWViI+Pt6y8na1oYtUD7rLcpc6VrrYNR/R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhWt2letBdlrvUsdJF6v7EKe5OiXczdey6VhlFzpG7A/F6vdi6davWt5Xq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jpUZotVdqgfdZblLHStdpO5PnOLulHg3U8eua5UOhg+6q0hJScGYMWOwdOlS/Pzzz7jxxhsxefJkNG/eHKeeeqoVfWywKKVQXFys9W2lOuXtakMXqR50l+Uudax0sWs+otWd8U53q9rQRaoH3WW5c63LixNdpHrQXZa71LEyQ7S6S/Wguyx3qWOli9T9iVPcnRLvZurYda3SQfug258uXbrg4Ycfxu+//4533303Un0ihBBCCCGEEEIIIYQQQgxTp4PuKmJiYnD66afjk08+icTLEUIIIYQQQgghhBBCCCGGichBNwmM2+1GVlYW3G5jw6xb3q42dJHqQXdZ7lLHShe75iNa3RnvdLeqDV2ketBdljvXurw40UWqB91luUsdKzNEq7tUD7rLcpc6VrpI3Z84xd0p8W6mjl3XKh1i67sDTsblcqFx48aWlberDV2ketBdr44uEj0kettVxynujHfr6+gi0V2it5k6TplzM3Wc4s61bry8XW3oItWD7np1dJHoYYe3mXac4i7Vg+56dXSR6CHR2646TnF3SrybqWPXtUoHOUfuDsTr9WLLli1a31aqU96uNnSR6kF3We5Sx0oXu+YjWt0Z73S3qg1dpHrQXZY717q8ONFFqgfdZblLHSszRKu7VA+6y3KXOla6SN2fOMXdKfFupo5d1yodeNBtIUoplJeXa31bqU55u9rQRaoH3WW5Sx0rXeyaj2h1Z7zT3ao2dJHqQXdZ7lzr8uJEF6kedJflLnWszBCt7lI96C7LXepY6SJ1f+IUd6fEu5k6dl2rdOBBNyGEEEIIIYQQQgghhJAGDQ+6CSGEEEIIIYQQQgghhDRoeNBtIW63G61bt9b6tlKd8na1oYtUD7rLcpc6VrrYNR/R6s54p7tVbegi1YPusty51uXFiS5SPeguy13qWJkhWt2letBdlrvUsdJF6v7EKe5OiXczdey6VukQW98dcDIulwupqamWlberDV2ketBdlrvUsdLFrvmIVnfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oM0eou1YPustyljpUuUvcnTnF3SrybqWPXtUoHOUfuDsTj8WDDhg3weDyWlLerDV2ketBdlrvUsdLFrvmIVnfGO92takMXqR50l+XOtS4vTnSR6kF3We5Sx8oM0eou1YPustyljpUuUvcnTnF3SrybqWPXtUoH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w9FzHs5dKWfOuZkzmTVr1igA6rvvvvOVmTNnjnK5XOqPP/6wre91xex5VLt27dQTTzxhY09lw090h6C8vBwrV67ESSed5HvM7XbjpJNOwooVK+qxZ/awceNGtGzZEh06dMDIkSOxffv2+u6S7WzduhU7d+6sFgPp6eno06dPVMQAACxcuBDNmzdHly5dcMUVV2DPnj313aWIk5+fDwDIyMgAAKxcuRIVFRXV5r1r165o27at4+a9pnsV06ZNQ2ZmJg499FDcdtttKCkpqY/uWYbH48H06dNRXFyMvn37Rs2c1/SuwunzPW7cOAwfPrza/ALRsdaDuVfh1LkPtodx+pyH27s5db4/+eQT9O7dG2effTaaN2+Onj174pVXXvE97+T9XDj3Kpy+nysvL8fbb7+NMWPGwOVyOX6tV1HTuwqnrvV+/fph/vz52LBhAwDgf//7H5YuXYqTTz4ZgLPXejj3Kpy21isrK+HxeJCYmFjt8aSkJCxdutTRcx7OvQqnzXlNjMzxihUr0LhxY/Tu3dtX5qSTToLb7ca3335re58jhU58T548GU2bNkXPnj3xyCOPoLKy0u7uiiG2vjsgmd27d8Pj8aBFixbVHm/RogXWrVtXT72yhz59+mDq1Kno0qUL8vLycM899+DYY4/FL7/8gkaNGtV392xj586dABAwBqqeczJDhw7FmWeeiZycHGzevBm33347Tj75ZKxYsQIxMTH13b2I4PV6cd1116F///449NBDARyY9/j4eDRu3LhaWafNeyB3ADj//PPRrl07tGzZEqtWrcItt9yC9evXY8aMGfXY28jw888/o2/fvigtLUVqaipmzpyJQw45BD/99JOj5zyYN+Ds+QaA6dOn44cffqh2P8MqnL7WQ7kDzp37UHsYJ895uL2bU+cbALZs2YIXXngBN9xwA26//XZ89913uOaaaxAfH49Ro0Y5ej8Xzh2Ijv3crFmzsG/fPowePRqA8/N7FTW9AefmdgC49dZbUVBQgK5duyImJgYejwcPPPAARo4cCcDZ793CuQPOXOuNGjVC3759cd9996Fbt25o0aIF3n33XaxYsQKdOnVy9JyHcwecOec1MTLHO3fuRPPmzas9Hxsbi4yMjAYdB0bj+5prrkGvXr2QkZGB5cuX47bbbkNeXh4ef/xxW/srBR50k4D4/8vw4Ycfjj59+qBd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roTX68Vjjz3mu03Q+++/H7G2vvnmm1q/d+vWLWDZXr164b333kPz5s2RlpYWsT74k56ejuzsbHz77bc47rjjABy4dcnKlSvRq1cvAAfGJyEhAdu3b8eAAQOCvtaNN94It9uNOXPmYNiwYRg+fDhOOOEES/pNCCGEEEKiBx50+1F1T+6qT+AQQgghDZWqW5Z4PB4edBOiyZ49e3D22WdjzJgxOPzww9GoUSN8//33ePjhh3HaaacBADp16oSKigo888wzOOWUU7Bs2TLfPbYjwbJly/Dwww/j9NNPx7x58/DBBx/g888/D1h25MiReOSRR3Daaafh3nvvRevWrfHrr79ixowZuPnmm9G6deuI9Onaa6/F5MmTkZubi65du+Lxxx+vdru/Ro0a4aabbsL1118Pr9eLY445Bvn5+Vi2bBnS0tIwatQofP7553j99dexYsUK9OrVC+PHj8eoUaOwatUqNGnSJCL9JIQQQggh0Qm/pSoA/BNvQgghDR1eywgxT2pqKvr06YMnnngCxx13HA499FBMmDABl1xyCZ599lkAQI8ePfD444/joYcewqGHHopp06Zh0qRJEevDjTfeiO+//x49e/bE/fffj8cffxxDhgwJWDY5ORmLFy9G27ZtceaZZ6Jbt264+OKLUVpaGtFPeN9444248MILMWrUKPTt2xeNGjXCGWecUa3MfffdhwkTJmDSpEno1q0bhg4dis8//xw5OTn466+/cPHFF2PixIm+T4Hfc889aNGiBS6//PKI9ZMQQgghhEQnLqVz4z2HU1paiq1btyInJweJiYn13R1CCCHENLymEdJwad++Pa677jpcd9119d0VQgghhBBCGgz8RDcxzMKFC+Fyuar9iWo42rdvjyeffNKyPhESjXAtEkIIIYQQQgghhFSHB90OYfTo0XC5XAH/7HPcuHFwuVwYPXq0/R0zyO+//474+Hgceuih9d0V0TT0eY4GGuocTZw4ES6Xy/eTnp6OY489FosWLarvromkoc4zIYQQQgghhBDiVHjQ7SDatGmD6dOnY//+/b7HSktL8c4776Bt27b12LPwTJ06Feeccw4KCgrw7bff1nd3RNOQ5zlaaKhz1L17d+Tl5SEvLw8rVqxAbm4u/v3vfyM/P7++uyaShjrPhBD5bNu2jbctIYQQQgghRBMedFtAWaUHX6/bhXs+WY1x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PhuNGjVCnz59sHXrVl+dn3/+GccddxyaNGmCI444At9//33A1/7rr79w8skno3HjxsjMzMSIESN8z3399dc+r9zcXF+7v/32G4YNG4YmTZrgkEMOwccff+yrM3DgQEyYMAG9e/dGSkoKKioqsGjRIhxxxBFo3LgxBg4ciM2bN/v6P2LECGRkZCAjIwPHHntswD7+/fffGDp0KDIzM9GsWTNceumlvjGuGse7774bmZmZuPvuuw3nhvvuuw9LlizB2LFjkZqaigcffND3XLB52bt3L84//3w0b94cHTp0qJaT/PF6vbjmmmuQmZmJxo0b48gjj8Tu3bsBAA8++CDatWuHtLQ09O3bF6tWrfLVa9++PR555BF069YNjRo1wl133YX169ejd+/eSE9Pr7UmguUuUyjiY//+/WrNmjVq//799d0VQgghpE7wmkYIIYQQu2jXrp1asmSJUkqp9evXq6ysLPXoo4/6nn/33XfVvn37VElJibrooovUaaed5nsOgDrrrLNUYWGh+vnnn1VCQoLatGmTUkqpUaNGqfvuu0/9/vvvqlu3buqVV15RSim1du1a1bp1a5WXl6e8Xq9au3atysvLU0opNWnSJDV8+PCwfR4yZIiaMmVKyDIDBgxQb731llJKqT59+qi3335bKaXU3r171Q8//BCwTlWfq9i6dasCoK655hpVVlamvvzyS5WSkqIKCgqUUkpdeeWVasSIEaqwsFD98ccf6pBDDlGffvppwNdu166d+te//qXy8vJ8ZV999VWllFLvv/++OvTQQ9W2bdtUSUmJGjFihLrxxhuVUkqde+656sEHH1Rer1cVFRWpb7/9Viml1IIFC1THjh3DjlUwXnnlFdWnT5+gzwNQv/32myoqKlKNGjVSGzZsUEoptW3bNrVly5agjlWxpJRSU6ZMUbGxseqdd95RlZWV6o477lDHHXecUkopj8ejDj/8cPXUU0+piooKtXz5cpWZmal27txZ63XnzJmjjjnmGKWUUtOnT1c5OTnqkksuUUopdeedd6pbbrlFKaXU7bffrgYMGKD27t2rfv31V5Wbm+uLk7vvvlslJCSoL7/8Unk8npBeNePAKCtWrFDt2rULWaYqprKzs1Xbtm3Vtddeq4qLiwOWfeGFF9QFF1yglFJq8uTJKicnRz3wwANKKaUuuOAC9cILLyilDsR6165d1bZt29Tff/+tDjnkEPX6668rpZT69ttvVatWrdSqVatUeXm5Gj9+vPrPf/6jlDoQQzExMWry5MmqoqJCvfTSS6pt27ZB+14VE1XcfffdKikpSX399deqoqJCXXjhheq///2vUkqpwsJC1bJlS/Xhhx+qyspKNXPmTNWmTZuA729uueUWdcUVV6iKigpVWlqqli1bppRSavPmzapRo0bq008/VZWVlerXX39VGzduVEop1b9/f3XTTTep0tJStWDBApWamup7bsCAAapjx45q48aNav/+/Wr79u0qMzNTLV68WFVWVqqnn35a9e7d2zfGp5xyiiopKVEVFRVq8eLFAd13796tPvnkE1VaWqp27NihevbsqZ544olq43jPPfeo8vJyVVJSopUb/HOVkXkZNmyYuvHGG1Vpaalau3atys7OVv/73/9qve6cOXPUEUccofLz81VlZaVauXKlKiwsVEop9dFHH6k///xTlZeXqwkTJqgePXr46rVr104NGDBA7dmzR61du1YlJCSoQYMGqe3bt6u8vDzVokUL9fXXXyulQucuM/Cg2w8eChBCCHEKvKYRQgghxC7atWunUlNTVUpKigKgzjzzzKB7kHXr1qmmTZv6fgegvv/+e9/vRx55pJo5c6ZS6sBh4dixY1Vubq564403fGU2btyomjVr5jscM4PuQfcxxxyjJk6cqPbs2ROyTrCD7t27d/sea9asmfrxxx+V1+tVSUlJ6o8//vA998wzz6hRo0YFfO12/9/e3QdFVfVxAP/usoAuugvKqwg7CBiLmkplsUIQlKI4GYGgBCqmwKiEoKgRigEyjaOINiFOTKOZg+NomobWVEOOTeNbTaaWMk68pGzNar4sxKuc5w+GO6zsrsDzlA/1/fx1l/2dc88593KG+Z3LuRqNSZvff/998dJLL0n92b9/v/TdpUuXpIRpUlKSSEtLE42NjSb1/TeJ7p5r8NVXX1mM6Z3oVqlU4siRI6K1tdVqveYS3RMnTpQ+X7lyRajVaiFEd1LY39/fpHxsbKzZ63rv3j2hVCpFS0uLWLFihSgrKxNarVYI0X2dexKI48aNkxJwQghRXl4uZsyYIYToTsr2HAshrPbrr0x0G41G8d1334nOzk5RV1cnwsLCxMqVK83GXr58WUpwRkdHi7KyMhEVFSWE6B7rS5cuCSG6x6D34lROTo7IzMwUQgiRlpYmJceFEOL+/ftCoVCIjo4OUV1dLVQqlXjw4IEQQojm5mYBQNy5c8dse8wluufMmSN9rqqqkhKmlZWV0v3d46mnnhLV1dV96s3LyxOvvPJKnwWUoqIikZiY2Ce+oaFB2Nvbiz///FP62fz580VxcbE0Hj3HQnQvoPUsjPRwdnYWtbW1oqKiQuh0OnH58mWzfbakvLzcZMFAqVRK89lA5wZziW5L10Wv1wulUina29ul+NWrV4v8/Pw+9X755Zdi/Pjx4uzZs6Krq8tiX1paWoRMJpOS4BqNRhw+fFj6ftq0aWLbtm3S5/j4eCnJb23uGgxuXWJG73/9ISIiGoqEEI+7CURERPQvcvLkSRiNRhw9ehQXLlxAU1OT9N3mzZvh5+cHlUqFadOm4fbt2yZl3dzcpGOlUmlS9pNPPoFSqTR5KaSfnx+2bduG3NxcuLm5YenSpbh///5f2DugoqICV65cgZ+fH0JCQqxu2fEwGxsbjB49Wvrc00eDwYCWlhYEBgbC0dERjo6OyM3Nxe+//26xLi8vL5NjvV4PoHsLj7S0NKmekJAQGAwGAMCWLVvQ3t6OKVOmYOrUqTh+/PhAu2+isbERM2bMQGFhISIiIh4Z7+DggMrKSuzcuRNubm6YN2+e1ZdYPszS/dHQ0IDa2lqpz46Ojvjss8+kMelNpVLhiSeewLlz5/DNN98gJiZG6sv58+elrUsaGxvh7e0tldNoNCZtHTt27P+sX4M1YsQIBAUFwcbGBhqNBu+88w4+/vhjs7GBgYFoampCXV0dLl68iJSUFFy6dAn19fUwGo2YMGGCFGttnDdv3iyNsZeXFxQKBX777TcAgIuLC+RyuVQOgMnv8KNYO++pU6dMru/PP/9sdoxzcnLg7e2NsLAwBAQESO8IuHHjBnx8fPrENzY2wsXFBcOHD5d+Zu1aNzQ0YN++fSZtaW5uxs2bN5GcnIzIyEjExMRAo9FY3H7JaDRi4cKFGDt2LFQqFbKzs03mQnd3dygUCgAY1NzwMEvXpaGhAa2trXBxcZHq3r17t3Q9e4uMjER6ejpSU1Ph4eGBNWvWoKOjA0D3dkwTJkyAWq2Gu7s7hBAm/XF1dZWOhw8f3udz7+tsae4aDMWgS/4D2dnZQS6XSze8nZ0dZDLZ424WERHRgAghYDAYIJPJYGtr+7ibQ0RERP8SMpkMc+fOxbFjx1BUVITS0lKcOnUKZWVlqK6uhr+/P2pqahAQENDvOjMyMnDt2jUkJCTg0KFDUiIoOTkZycnJuHXrFubPn4+SkhJs2rTpL+pZ977CBw8eRGdnJ8rLy7FgwQLU1dX1iRtIDsHZ2Rn29vb45ZdfMGrUqH6V+fXXX02OPTw8AACenp4oKirCq6++2qeMh4cHPvjgAwghcOzYMcTHx+POnTuDynfcunULL774IlJTU5GWltbvcrNnz8bs2bPR1NSE9PR05ObmYs+ePX3iBtImT09PaLVak72BrQkNDcXx48fR0tICd3d3hISEoLS0FOPGjYOTkxMAYMyYMWhoaICvry+A7iTcmDFjLLbPUr/+zlySXC63+JCLTCZDSEgIdu3ahYCAAAwbNgyBgYF47733oNPp+tVOT09PFBYWIjs7u893169f/6/bb+28M2fOxLFjxx4Zq1KpsGPHDuzYsQNnzpxBREQEXnjhBXh5eZndv3/MmDEwGAxobW3FsGHDAHRf60mTJkkxvcfG09MTy5Ytw86dO82ev6CgAAUFBbh69SrCw8MRHByM8PBwk5iSkhIYDAb88MMPcHZ2xu7du1FZWWn2fAOdGwb6ezNixIh+zwFZWVnIysqS9jSfOHEiwsPDsWrVKpw6dQpBQUFoa2uDg4PDoB62sjZ3DQYT3b3I5XL4+PhAr9f/LatwREREfxWZTIaxY8fCxsbmcTeFiIiI/mXWrFmDZ555Bnl5eTAajbC1tYWzszOam5tRVFQ0oLpkMhn27NmD2NhYLF68GPv27UNNTQ30ej10Oh2USiXs7e37/TdPR0cHHjx4gK6uLnR0dKC1tVV66M2a/fv3IyoqCqNHj8bIkSMtns/V1dVsAtwcuVyORYsWYfXq1di+fTtUKhWuXbsGo9GIadOmmS3z7rvvYtasWejq6kJpaSlWrVoFAFiyZAmKi4sxefJk+Pr6Qq/X4+LFi4iKisKhQ4eg0+mkF4LKZDLIZDK4urrCYDCgubkZDg4OAIA9e/Zg06ZNZvtw//59zJw5E3PmzMH69ev71Ueg+0Wi58+fR2RkJOzt7aFUKvHgwQOzsT3jFxIS8sh6n332WXR1dWHXrl14/fXXAQBnz56FRqMxeSq7R2hoKJYsWYK4uDgAwPPPP4/ly5cjKSlJiklISEBhYSGmTJmCpqYmlJSUYN26dQPul7n7IDw8HOHh4WYXZIQQaGtrQ3t7O4QQaG1thVwuh52dXZ/Yc+fOwcnJCX5+ftDr9XjzzTfx8ssvWxyn0NBQFBQUYM2aNVK/t2zZgry8PItlektJSUFSUhIiIyMxefJk/PHHHzh9+jTmzp3br/K99YxL76elLem5z44ePYo5c+ZIL4QMDg6GWq02ia2qqoJWq4WPjw/UajVkMhlsbGywYMECTJkyBSdOnEBUVBRu3ryJ9vZ2+Pr6IigoCPn5+SgsLMSZM2dw/PhxvP3222bbkpiYCJ1Oh3nz5mH69Olobm7G559/jri4OFRXV8PV1RVarRYqlQoKhcLs/GA0GqFUKqFWq1FfX4+ysjJpgeVhA50bBjLveHp6Ijg4GHl5eXjrrbdgZ2eHH3/8UVoE6e3ChQsQQmDq1KkYOXIkbG1tYWNjg6amJsjlcri4uKCzsxP5+fn9Orc51uauwWCi+yF2dnbw9vZGZ2enxYmXiIjo/13PHyFEREREfzetVouwsDDs2LED+fn5mD59OjQaDZydnbF27Vp89NFHA6pPoVDg4MGDiI6OxooVK5Ceno6cnBxcvXoV9vb2mDFjBrKysgAAxcXFOH36NE6ePGm2rmXLlmHv3r0AgC+++AKpqamorq7u8/Tlw06cOIHMzEy0tbVh/Pjx+PDDD83G9SRSHR0dkZiYiLVr11qtd/v27cjNzcWkSZNgNBrh7+9vdTEgPj4eoaGhuH37NhYuXIiUlBQAwIIFC3D37l1ER0ejsbER7u7uSE9PR1RUFM6dO4eMjAwYjUZ4e3ujsrIS9vb20Gq1mDt3Lry8vNDV1YW7d+/ixo0b0jYeDzty5Ai+//57XLt2DWVlZdLPH7VNRVdXF7Zs2YLExETY2NhAp9OhoqLCbOy6devwxhtvYOXKlSbnMEehUKCqqgqZmZnYuHEjhBB4+umnUV5ebjY+NDQURqNRSqI//BkANmzYgOzsbAQEBMDW1hZLly7FokWLBtyvh++DsrIyq2NbX19vssXG8OHDERYWhq+//hoAMGHCBOTm5uK1117D9evXkZubC4PBACcnJ8TExFjcLsNSvzds2NCvxQQA0Ol02Lp1KxYuXIja2lqMGjUK8fHxg0p0b9y4EbGxsWhra8Onn35qNVatVqOqqgpZWVlYsmQJbG1tMX36dAQHB/eJrampwfLly3H79m24urqitLQUGo0GAHD48GHk5OQgISFB+u8GX19fHDhwAKmpqXB1dYWHhwf27t0Lf39/s23x8fHBgQMHpHnHwcEBERERiIuLg16vR2pqKvR6PdRqNdLT0xEaGtqnjszMTCQkJMDJyQkBAQGIiYmRrq85A5kbMjIysHjxYmzduhXr16/Hc889Z3Vs9+/fj+zsbIwbNw7t7e2YOHEitm/f3ifu3r17WLVqFWpra+Hg4ID4+Hjpfk9LS8OTTz4JBwcHbNiwweyiTH9Ym7saGhoQGBiIn376yezilTkywU08iYiIiIiIiIj+9WbNmoWSkhJotdrH3ZR/FL1ej9jYWHz77bePuylE/2hMdBMRERERERERERHRkGZ9EyoiIiIiIiIiIiIiov9zTHQTERERERERERER0ZDGRDcRERERERERERERDWlMdBMRERERERERERHRkMZENxERERERERERERENaUx0ExEREREREREREdGQxkQ3EREREREREREREQ1pTHQTERERERERERER0ZDGRDcRERERERERERERDWlMdBMRERERERERERHRkMZENxERERERERERERENaf8BgX8xbiZ+VoYAAAAASUVORK5CYII=",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "MIN_ABS_DIFF = 0.05\n",
+ "scores = np.stack([modela, modelb], axis=1)\n",
+ "ranks = stats.rankdata(-scores, method=\"average\", axis=1)\n",
+ "abs_diff = np.abs(np.diff(scores, axis=1)).flatten()\n",
+ "ranks[abs_diff < MIN_ABS_DIFF, :] = 1.5\n",
+ "ranksa, ranksb = ranks[:, 0], ranks[:, 1]\n",
+ "\n",
+ "num_samples = ranks.shape[0]\n",
+ "indexes = np.arange(num_samples)\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(18, 2.5))\n",
+ "\n",
+ "# plot sample index vs score and their mean\n",
+ "ax.scatter(indexes, ranksa, s=30, color=\"tab:blue\", marker=\"o\", label=\"Model A\", zorder=3, alpha=0.6)\n",
+ "ax.axhline(ranksa.mean(), color=\"tab:blue\", linestyle=\"--\", label=\"Mean\", zorder=3)\n",
+ "ax.scatter(indexes, ranksb, s=30, color=\"tab:red\", marker=\"o\", label=\"Model B\", zorder=3, alpha=0.6)\n",
+ "ax.axhline(ranksb.mean(), color=\"tab:red\", linestyle=\"--\", label=\"Mean\", zorder=3)\n",
+ "\n",
+ "# configure the x-axis\n",
+ "ax.set_xlabel(\"Sample index\")\n",
+ "ax.set_xlim(0 - (eps := 0.01 * num_samples), num_samples + eps)\n",
+ "ax.xaxis.set_major_locator(IndexLocator(5, 0))\n",
+ "ax.xaxis.set_minor_locator(IndexLocator(1, 0))\n",
+ "\n",
+ "# configure the y-axis\n",
+ "ax.set_ylabel(\"AUPIMO Rank\")\n",
+ "ax.set_ylim(1 - 0.1, 2 + 0.1)\n",
+ "ax.yaxis.set_major_locator(FixedLocator([1, 1.5, 2]))\n",
+ "ax.invert_yaxis()\n",
+ "\n",
+ "# configure the grid, legend, etc\n",
+ "ax.grid(axis=\"both\", which=\"major\", linestyle=\"-\")\n",
+ "ax.grid(axis=\"x\", which=\"minor\", linestyle=\"--\", alpha=0.5)\n",
+ "ax.legend(ncol=4, loc=\"upper left\", bbox_to_anchor=(0, -0.15))\n",
+ "ax.set_title(\"AUPIMO scores ranks\")\n",
+ "\n",
+ "fig.text(\n",
+ " 0.9,\n",
+ " -0.1,\n",
+ " \"Ranks: 1 is the best, 2 is the worst, 1.5 when the scores are the same.\",\n",
+ " ha=\"right\",\n",
+ " va=\"top\",\n",
+ " fontsize=\"small\",\n",
+ ")\n",
+ "\n",
+ "fig # noqa: B018, RUF100"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The advantage of A over B is clearer now.\n",
+ "\n",
+ "Most of cases where B was better were within the difference margin of 5%.\n",
+ "\n",
+ "The average ranks also got more distant.\n",
+ "\n",
+ "Could it be by chance or can we be confident that model A is better than model B?\n",
+ "\n",
+ "> **Wilcoxon signed rank test**\n",
+ "> \n",
+ "> - null hypothesis: `average(rankA) == average(rankB)` \n",
+ "> - alternative hypothesis: `average(rankA) != average(rankB)`\n",
+ "> \n",
+ "> See [`scipy.stats.wilcoxon`](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.wilcoxon.html#scipy.stats.wilcoxon) and [\"Wilcoxon signed-rank test\" in Wikipedia](https://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test).\n",
+ ">\n",
+ "> Confidence Level (reminder): *higher* confidence level *more confident* that `average(rankA) > average(rankB)`.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "WilcoxonResult(statistic=1965.5, pvalue=0.001788856917447151)"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "stats.wilcoxon(differences, zero_method=\"zsplit\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "test_result=WilcoxonResult(statistic=1823.0, pvalue=0.0002876893285960681)\n",
+ "confidence=100.0%\n"
+ ]
+ }
+ ],
+ "source": [
+ "MIN_ABS_DIFF = 0.05\n",
+ "differences = modela - modelb\n",
+ "differences[abs_diff < MIN_ABS_DIFF] = 0.0\n",
+ "test_result = stats.wilcoxon(differences, zero_method=\"zsplit\")\n",
+ "confidence = 1.0 - float(test_result.pvalue)\n",
+ "print(f\"{test_result=}\")\n",
+ "print(f\"{confidence=:.1%}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We got such a high confidence that we can say for sure that these differences are not due to chance.\n",
+ "\n",
+ "So we can say that model A is _consistently_ better than model B -- even though some counter examples exist as we saw in the image by image comparison."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Cite Us\n",
+ "\n",
+ "AUPIMO was developed during [Google Summer of Code 2023 (GSoC 2023)](https://summerofcode.withgoogle.com/archive/2023/projects/SPMopugd) with the `anomalib` team from Intel's OpenVINO Toolkit.\n",
+ "\n",
+ "arXiv: [arxiv.org/abs/2401.01984](https://arxiv.org/abs/2401.01984) (accepted to BMVC 2024)\n",
+ "\n",
+ "Official repository: [github.com/jpcbertoldo/aupimo](https://github.com/jpcbertoldo/aupimo) (numpy-only API and numba-accelerated versions available)\n",
+ "\n",
+ "```bibtex\n",
+ "@misc{bertoldo2024aupimo,\n",
+ " author={Joao P. C. Bertoldo and Dick Ameln and Ashwin Vaidya and Samet Akçay},\n",
+ " title={{AUPIMO: Redefining Visual Anomaly Detection Benchmarks with High Speed and Low Tolerance}}, \n",
+ " year={2024},\n",
+ " url={https://arxiv.org/abs/2401.01984}, \n",
+ "}\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Utils: pairwise statistical tests with multiple models\n",
+ "\n",
+ "What if you have multiple models to compare?\n",
+ "\n",
+ "Here we define a functions that will return all the pairwise comparisons between the models."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import itertools\n",
+ "from typing import Any, Literal\n",
+ "\n",
+ "import numpy as np\n",
+ "from numpy import ndarray\n",
+ "from scipy import stats\n",
+ "from torch import Tensor\n",
+ "\n",
+ "\n",
+ "def _validate_models(models: dict[str, Tensor | ndarray]) -> dict[str, ndarray]:\n",
+ " \"\"\"Make sure the input `models` is valid and convert all the dict's values to `ndarray`.\n",
+ "\n",
+ " Args:\n",
+ " models (dict[str, Tensor | ndarray]): {\"model name\": sequence of shape (num_images,)}.\n",
+ " Validations:\n",
+ " - keys are strings (model names)\n",
+ " - there are at least two models\n",
+ " - values are sequences of floats in [0, 1] or `nan`\n",
+ " - all sequences have the same shape\n",
+ " - all `nan` values are at the positions\n",
+ " Returns:\n",
+ " dict[str, ndarray]: {\"model name\": array (num_images,)}.\n",
+ " \"\"\"\n",
+ " if not isinstance(models, dict):\n",
+ " msg = f\"Expected argument `models` to be a dict, but got {type(models)}.\"\n",
+ " raise TypeError(msg)\n",
+ "\n",
+ " if len(models) < 2:\n",
+ " msg = \"Expected argument `models` to have at least one key, but got none.\"\n",
+ " raise ValueError(msg)\n",
+ "\n",
+ " ref_num_samples = None\n",
+ " ref_nans = None\n",
+ " for key in models:\n",
+ " if not isinstance(key, str):\n",
+ " msg = f\"Expected argument `models` to have all keys of type str. Found {type(key)}.\"\n",
+ " raise TypeError(msg)\n",
+ "\n",
+ " value = models[key]\n",
+ "\n",
+ " if not isinstance(value, Tensor | ndarray):\n",
+ " msg = (\n",
+ " \"Expected argument `models` to have all values of type Tensor or ndarray. \"\n",
+ " f\"Found {type(value)} on {key=}.\"\n",
+ " )\n",
+ " raise TypeError(msg)\n",
+ "\n",
+ " if isinstance(value, Tensor):\n",
+ " models[key] = value = value.numpy()\n",
+ "\n",
+ " if not np.issubdtype(value.dtype, np.floating):\n",
+ " msg = f\"Expected argument `models` to have all values of floating type. Found {value.dtype} on {key=}.\"\n",
+ " raise ValueError(msg)\n",
+ "\n",
+ " if value.ndim != 1:\n",
+ " msg = f\"Expected argument `models` to have all values of 1D arrays. Found {value.ndim} on {key=}.\"\n",
+ " raise ValueError(msg)\n",
+ "\n",
+ " if ref_num_samples is None:\n",
+ " ref_num_samples = num_samples = value.shape[0]\n",
+ " ref_nans = nans = np.isnan(value)\n",
+ "\n",
+ " if num_samples != ref_num_samples:\n",
+ " msg = \"Argument `models` has inconsistent number of samples.\"\n",
+ " raise ValueError(msg)\n",
+ "\n",
+ " if (nans != ref_nans).any():\n",
+ " msg = \"Argument `models` has inconsistent `nan` values (in different positions).\"\n",
+ " raise ValueError(msg)\n",
+ "\n",
+ " if (value[~nans] < 0).any() or (value[~nans] > 1).any():\n",
+ " msg = (\n",
+ " \"Expected argument `models` to have all sequences of floats \\\\in [0, 1]. \"\n",
+ " f\"Key {key} has values outside this range.\"\n",
+ " )\n",
+ " raise ValueError(msg)\n",
+ "\n",
+ " return models\n",
+ "\n",
+ "\n",
+ "def test_pairwise(\n",
+ " models: dict[str, Tensor | ndarray],\n",
+ " *,\n",
+ " test: Literal[\"ttest_rel\", \"wilcoxon\"],\n",
+ " min_abs_diff: float | None = None,\n",
+ ") -> list[dict[str, Any]]:\n",
+ " \"\"\"Compare all pairs of models using statistical tests.\n",
+ "\n",
+ " Scores are assumed to be *higher is better*.\n",
+ "\n",
+ " General hypothesis in the tests:\n",
+ " - Null hypothesis: two models are equivalent on average.\n",
+ " - Alternative hypothesis: one model is better than the other (two-sided test).\n",
+ "\n",
+ " Args:\n",
+ " models (dict[str, Tensor | ndarray]): {\"model name\": sequence of shape (num_images,)}.\n",
+ " test (Literal[\"ttest_rel\", \"wilcoxon\"]): The statistical test to use.\n",
+ " - \"ttest_rel\": Paired Student's t-test (parametric).\n",
+ " - \"wilcoxon\": Wilcoxon signed-rank test (non-parametric).\n",
+ " min_abs_diff (float | None): Minimum absolute difference to consider in the Wilcoxon test. If `None`, all\n",
+ " differences are considered. Default is `None`. Ignored in the t-test.\n",
+ " \"\"\"\n",
+ " models = _validate_models(models)\n",
+ " if test not in {\"ttest_rel\", \"wilcoxon\"}:\n",
+ " msg = f\"Expected argument `test` to be 'ttest_rel' or 'wilcoxon', but got '{test}'.\"\n",
+ " raise ValueError(msg)\n",
+ " # remove nan values\n",
+ " models = {k: v[~np.isnan(v)] for k, v in models.items()}\n",
+ " models_names = sorted(models.keys())\n",
+ " num_models = len(models)\n",
+ " comparisons = list(itertools.combinations(range(num_models), 2))\n",
+ "\n",
+ " # for each comparison, compute the test and confidence (1 - p-value)\n",
+ " test_results = []\n",
+ " for modela_idx, modelb_idx in comparisons: # indices of the sorted model names\n",
+ " modela = models_names[modela_idx]\n",
+ " modelb = models_names[modelb_idx]\n",
+ " modela_scores = models[modela]\n",
+ " modelb_scores = models[modelb]\n",
+ " if test == \"ttest_rel\":\n",
+ " test_result = stats.ttest_rel(modela_scores, modelb_scores, alternative=\"two-sided\")\n",
+ " else: # test == \"wilcoxon\"\n",
+ " differences = modela_scores - modelb_scores\n",
+ " if min_abs_diff is not None:\n",
+ " differences[np.abs(differences) < min_abs_diff] = 0.0\n",
+ " # extreme case\n",
+ " if (differences == 0).all():\n",
+ " test_result = stats._morestats.WilcoxonResult(np.nan, 1.0) # noqa: SLF001\n",
+ " else:\n",
+ " test_result = stats.wilcoxon(differences, zero_method=\"zsplit\", alternative=\"two-sided\")\n",
+ " test_results.append({\n",
+ " \"modela\": modela,\n",
+ " \"modelb\": modelb,\n",
+ " \"confidence\": 1 - test_result.pvalue,\n",
+ " \"pvalue\": test_result.pvalue,\n",
+ " \"statistic\": test_result.statistic,\n",
+ " })\n",
+ "\n",
+ " return test_results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's first test it with the same two models we used before."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "