{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WxEsSjtzA_Af"
},
"source": [
"# Model evaluation\n",
"\n",
"After you've trained several models, you may want to generate some accuracy metrics to compare between them. This notebook demonstrates how you'll do that given a trained model.\n",
"\n",
"Let's start by installing SLEAP and downloading the trained model."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "5bNDjxe1BZXV"
},
"outputs": [],
"source": [
"!pip uninstall -y opencv-python opencv-contrib-python > /dev/null 2>&1\n",
"!pip install sleap > /dev/null 2>&1\n",
"!apt install tree > /dev/null 2>&1\n",
"!wget https://storage.googleapis.com/sleap-data/reference/flies13/td_fast.210505_012601.centered_instance.n%3D1800.zip > /dev/null 2>&1\n",
"!unzip -o -d \"td_fast.210505_012601.centered_instance.n=1800\" \"td_fast.210505_012601.centered_instance.n=1800.zip\" > /dev/null 2>&1"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "g6KIMZjwTEmu"
},
"source": [
"A trained SLEAP model will be a folder containing files that specify metadata that is useful for evaluation and analysis. The exact set of files may depend on the configuration, but all models will come with:\n",
"\n",
"- `metrics.train.npz`: Metrics for the training split.\n",
"- `metrics.val.npz`: Metrics for the validation split. This is what you'll want to use most of the time since it wasn't directly used for optimizing the model.\n",
"\n",
"**Note:** A test split will also be evaluated if it was provided during training and saved to `metrics.test.npz`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dTgeUbf8AT0P",
"outputId": "4f03ee9a-5297-4d53-cb8e-20a78e7c7285"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"td_fast.210505_012601.centered_instance.n=1800\n",
"├── best_model.h5\n",
"├── initial_config.json\n",
"├── labels_gt.test.slp\n",
"├── labels_gt.train.slp\n",
"├── labels_gt.val.slp\n",
"├── labels_pr.test.slp\n",
"├── labels_pr.train.slp\n",
"├── labels_pr.val.slp\n",
"├── labels_pr.with_centroid.test.slp\n",
"├── metrics.test.npz\n",
"├── metrics.train.npz\n",
"├── metrics.val.npz\n",
"├── metrics.with_centroid.test.npz\n",
"├── model_info.json\n",
"├── training_config.json\n",
"└── training_log.csv\n",
"\n",
"0 directories, 16 files\n"
]
}
],
"source": [
"!tree td_fast.210505_012601.centered_instance.n=1800"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ywbriY3nUnHk"
},
"source": [
"Additionally, the following files are included and may also be useful:\n",
"- `best_model.h5`: The actual saved model and weights. This can be loaded with `tf.keras.model.load_model()` but it is recommended to use `sleap.load_model()` instead as it takes care of adding some additional inference-only procedures.\n",
"- `training_config.json`: The configuration for the model training job, including metadata inferred during the training procedure. It can be loaded with `sleap.load_config()`.\n",
"- `labels_gt.train.slp` and `labels_pr.train.slp`: These are SLEAP labels files containing the ground truth and predicted points for the training split. They do not contain the images, but can be used to retrieve the poses used.\n",
"- `labels_gt.val.slp` and `labels_pr.val.slp`: These are SLEAP labels files containing the ground truth and predicted points for the validation split. They do not contain the images, but can be used to retrieve the poses used."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_FLiavFrBhCK",
"outputId": "fedb9d7b-6dcc-4048-d030-eba38a006086"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SLEAP: 1.1.5\n",
"TensorFlow: 2.3.1\n",
"Numpy: 1.19.5\n",
"Python: 3.7.11\n",
"OS: Linux-5.4.104+-x86_64-with-Ubuntu-18.04-bionic\n"
]
}
],
"source": [
"import sleap\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"mpl.style.use(\"seaborn-deep\")\n",
"sleap.versions()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "r0TLPw8aU6Rh"
},
"source": [
"SLEAP metrics can be loaded using the `sleap.load_metrics()` API:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2o8ncdDYUy94",
"outputId": "6a8a49f0-1252-438b-a2c3-99160fa4bbc4"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on function load_metrics in module sleap.nn.evals:\n",
"\n",
"load_metrics(model_path: str, split: str = 'val') -> typing.Dict[str, typing.Any]\n",
" Load metrics for a model.\n",
" \n",
" Args:\n",
" model_path: Path to a model folder or metrics file (.npz).\n",
" split: Name of the split to load the metrics for. Must be `\"train\"`, `\"val\"` or\n",
" `\"test\"` (default: `\"val\"`). Ignored if a path to a metrics NPZ file is\n",
" provided.\n",
" \n",
" Returns:\n",
" The loaded metrics as a dictionary with keys:\n",
" \n",
" - `\"vis.tp\"`: Visibility - True Positives\n",
" - `\"vis.fp\"`: Visibility - False Positives\n",
" - `\"vis.tn\"`: Visibility - True Negatives\n",
" - `\"vis.fn\"`: Visibility - False Negatives\n",
" - `\"vis.precision\"`: Visibility - Precision\n",
" - `\"vis.recall\"`: Visibility - Recall\n",
" - `\"dist.avg\"`: Average Distance (ground truth vs prediction)\n",
" - `\"dist.p50\"`: Distance for 50th percentile\n",
" - `\"dist.p75\"`: Distance for 75th percentile\n",
" - `\"dist.p90\"`: Distance for 90th percentile\n",
" - `\"dist.p95\"`: Distance for 95th percentile\n",
" - `\"dist.p99\"`: Distance for 99th percentile\n",
" - `\"dist.dists\"`: All distances\n",
" - `\"pck.mPCK\"`: Mean Percentage of Correct Keypoints (PCK)\n",
" - `\"oks.mOKS\"`: Mean Object Keypoint Similarity (OKS)\n",
" - `\"oks_voc.mAP\"`: VOC with OKS scores - mean Average Precision (mAP)\n",
" - `\"oks_voc.mAR\"`: VOC with OKS scores - mean Average Recall (mAR)\n",
" - `\"pck_voc.mAP\"`: VOC with PCK scores - mean Average Precision (mAP)\n",
" - `\"pck_voc.mAR\"`: VOC with PCK scores - mean Average Recall (mAR)\n",
"\n"
]
}
],
"source": [
"help(sleap.load_metrics)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wG1YbA1-SxGN"
},
"source": [
"Loading the metrics for the validation split of the model we can see all of the available keys:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "hQHHjfUHMerr",
"outputId": "4f1b2c2a-f86d-47c7-979c-ad70f7a14f61"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"vis.tp\n",
"vis.fp\n",
"vis.tn\n",
"vis.fn\n",
"vis.precision\n",
"vis.recall\n",
"dist.dists\n",
"dist.avg\n",
"dist.p50\n",
"dist.p75\n",
"dist.p90\n",
"dist.p95\n",
"dist.p99\n",
"pck.thresholds\n",
"pck.pcks\n",
"pck.mPCK_parts\n",
"pck.mPCK\n",
"oks.mOKS\n",
"oks_voc.match_score_thresholds\n",
"oks_voc.recall_thresholds\n",
"oks_voc.match_scores\n",
"oks_voc.precisions\n",
"oks_voc.recalls\n",
"oks_voc.AP\n",
"oks_voc.AR\n",
"oks_voc.mAP\n",
"oks_voc.mAR\n",
"pck_voc.match_score_thresholds\n",
"pck_voc.recall_thresholds\n",
"pck_voc.match_scores\n",
"pck_voc.precisions\n",
"pck_voc.recalls\n",
"pck_voc.AP\n",
"pck_voc.AR\n",
"pck_voc.mAP\n",
"pck_voc.mAR\n"
]
}
],
"source": [
"metrics = sleap.load_metrics(\"td_fast.210505_012601.centered_instance.n=1800\", split=\"val\")\n",
"print(\"\\n\".join(metrics.keys()))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ROcOrWX2VB1E"
},
"source": [
"To start, let's look at the summary of the **localization errors**:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EchwGMNcNBoN",
"outputId": "dae62b47-cddb-4605-91c2-c22c899839b6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error distance (50%): 0.9010142093245521\n",
"Error distance (90%): 2.0545800141197903\n",
"Error distance (95%): 3.0166608700891056\n"
]
}
],
"source": [
"print(\"Error distance (50%):\", metrics[\"dist.p50\"])\n",
"print(\"Error distance (90%):\", metrics[\"dist.p90\"])\n",
"print(\"Error distance (95%):\", metrics[\"dist.p95\"])"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "o3c91HExVIdx"
},
"source": [
"These are the percentiles of the distribution of how far off the model was from the ground truth location.\n",
"\n",
"We can visualize the entire distribution like this:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
},
"id": "vo3qyz5nNfgf",
"outputId": "59d0c939-53a3-4580-cf0b-be85b58ad067"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:numexpr.utils:NumExpr defaulting to 2 threads.\n"
]
},
{
"data": {
"image/png": "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AvW9KGVnndePn5YGDBjg6LIAAADgYA4LMElJSbrrrrsc1T0MoHpPGAAAAKCaXQLMrFmzah1//fXXt5yrVllZKbPZrCNHjmjy5MnN6vf69et644039PHHHysjI0N+fn6aMGGCli5dqp49e95RW3l5ebbP37KystSjRw9NmTJFixcvVpcuXep9rqioSCtWrNCWLVuUmpoqZ2dnBQcHa/To0Xrrrbfk7e3drHcEAAAAcJNdAsyHH35o+9lkMik5OVnJycm3fWbw4MFavnx5k/ssLS3VmDFjFBcXp8DAQD355JNKS0vTBx98oM8++0xxcXHq06dPo9rKycnRyJEjlZycrD59+mjy5MlKSkrSqlWr9MUXX+jgwYPy8/O75blz585p7NixOnfunPr06aOJEyeqrKxMZrNZ69at04IFCwgwAAAAgB3ZJcDs3btXkmS1WjVmzBhNmDBB//M//1PnvW5ubgoKClJoaGiz+ly2bJni4uI0cuRI7dq1yxYUVq5cqZ///OeaNWuW9u3b16i25s6dq+TkZE2dOlWbNm2Si8uNv5aXX35Zv//97zVv3rxaIU2SysrKNHHiRGVkZOjdd9/VT3/601rXT506VWfoAQAAANB0dgkwo0ePtv38H//xH4qMjKx1zt7Ky8u1Zs0aSdLatWtrjXLMmzdPf/nLXxQTE6OjR482uCdNZmamNm7cKDc3N61bt84WXiRp+fLl+vjjj7Vhwwb99re/VUBAgO3aqlWrZDab9Ytf/OKW8CJJgwYNau5rthvVK4pJUmpqqqzWKgdXBAAAAKOy+zJgH3zwQb3zX+xl//79KigoUHh4uIYOHXrL9WnTpkm6sddMQ3bu3KmqqipFRkaqe/futa65u7tr0qRJslgs2rFjR61rf/rTnyRJc+bMaeprdBg52ZnavjdJ0bGp2rLzsPLzCxxdEgAAAAzKYauQNceJEyckScOGDavzevX5xMREu7S1fv36Wm2dP39eycnJ6tWrl4KDg7V//35FRUWpoKBAYWFheuqpp9S3b987eqf2rnpFseysC44uBQAAAAbW7ADTp08fmUwm7d69W2FhYY2eOC/dmPCfkpJyx31mZGRIknr16lXn9erz6enpLdLWN998I0kKCgrSSy+9pHXr1tV6ZuHChXrzzTf185//vMH+AQAAADReswNMWlqaJKmioqLWcUsqKiqSJHl5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G8BoNBrq378/AaClS5eSRqMR8uLj48nKyopUKhXl5OQI6fn5+eTs7CwcAD99EH769Gmdg74rV67QtWvX9Po+fPgwyWQy8vHx0emXyLQAxhC1Wk1BQUEEgFavXi2kV1VVUUJCAlVWVuqUf/DgAQ0dOpQA0MmTJ3Xyli9fTgBoy5YtBvuqL4D5+OOPCQAFBATQvXv3hPScnBzy9/cnALRhwwaD261UKun06dNCemlpqRBUfvXVV41uP1FtAKV9bVevXq3zOv3666/Uq1cvEovFOgfi2gAGAI0YMYIKCgr02tW+Bl27djX4ur744osEgGbOnEkVFRVCelJSEimVShKLxToBLtGT9err60t37twxavu03nzzTQJAX375pcF8bQDzdBmNRiPUHTRokF69FStWEAB68cUXiYiopqaGgoODCQCtW7eu3vEEBgYSAEpLSzNpOxhjlocDGMYYMyNjA5jjx48L75Q/fVBPRBQZGUkAaNWqVULahx9+SAAoLCys2eOcNWsWAaArV67opDc3gHnppZcIAM2ePdvosRw9epQAUFxcnE56UwMYDw8PAmDwE6a9e/cKB+x1abf7nXfe0asLnpVoAAAKC0lEQVQTHx9vsJ/6JCQkEACKiooymL97924CQAsXLhTS6gYwP/74o8F62tfg6U9viIhSU1MJAKlUKsrPz9fLj4uLIwD06quv6qRr+/z222+N2ra6xo0bZzDw1NIGMCNHjtTLq6yspJ49exIASkpK0smrrq6mESNGEADauHEjrVq1igDQ2LFj9QLuurRrevfu3SZvC2PMskiM/7IZY4wxc0lKSgIATJ06FVKpVC9/9uzZ2L17t1AOAP773/8CAF577TWj+6moqMDhw4dx/vx55ObmorKyEgBw9epVAMCvv/6K/v37N3k76vrwww+xfft2DBs2DJs2bTJY5vLly/j++++RmZmJsrIyEBGKi4uFsTRXVlYWsrKy4OzsjLFjx+rlv/jii7C3t8etW7dw7949dO/eXSffUB0/Pz8AtecUGUN7vklkZKTB/ODgYADA+fPn9fJcXV0xdOjQBtsPDw/XS/vhhx8AAGFhYXB0dNTLnz17NtauXauznrREIhEmTpzYYJ+GPHjwAADg4ODQYLnp06frpUmlUkRHR2PdunVISkrCs88+K+SJxWJs374dgwYNwhtvvIHq6mo4OTlhy5Yt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",
"text/plain": [
"