aboutsummaryrefslogtreecommitdiff
path: root/evaluation/adept/evaluation_gswm.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'evaluation/adept/evaluation_gswm.ipynb')
-rw-r--r--evaluation/adept/evaluation_gswm.ipynb428
1 files changed, 428 insertions, 0 deletions
diff --git a/evaluation/adept/evaluation_gswm.ipynb b/evaluation/adept/evaluation_gswm.ipynb
new file mode 100644
index 0000000..31abb91
--- /dev/null
+++ b/evaluation/adept/evaluation_gswm.ipynb
@@ -0,0 +1,428 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import seaborn as sns\n",
+ "import warnings\n",
+ "import scipy.stats as stats\n",
+ "import os\n",
+ "\n",
+ "warnings.simplefilter(action='ignore', category=FutureWarning)\n",
+ "pd.options.mode.chained_assignment = None \n",
+ "plt.style.use('ggplot')\n",
+ "sns.color_palette(\"Paired\");\n",
+ "sns.set_theme();"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Data Loading"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "FileNotFoundError",
+ "evalue": "[Errno 2] No such file or directory: '../../out/pretrained/adept/gswm/results/'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[2], line 5\u001b[0m\n\u001b[1;32m 2\u001b[0m root_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m../../out/pretrained/adept/gswm/results/\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# list all folders in root path that don't stat with a dot\u001b[39;00m\n\u001b[0;32m----> 5\u001b[0m nets \u001b[38;5;241m=\u001b[39m [f \u001b[38;5;28;01mfor\u001b[39;00m f \u001b[38;5;129;01min\u001b[39;00m \u001b[43mos\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlistdir\u001b[49m\u001b[43m(\u001b[49m\u001b[43mroot_path\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m'\u001b[39m)]\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# read pickle file\u001b[39;00m\n\u001b[1;32m 8\u001b[0m sf \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame()\n",
+ "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../../out/pretrained/adept/gswm/results/'"
+ ]
+ }
+ ],
+ "source": [
+ "# setting path to results folder\n",
+ "root_path = '../../out/pretrained/adept/gswm/results/'\n",
+ "\n",
+ "# list all folders in root path that don't stat with a dot\n",
+ "nets = [f for f in os.listdir(root_path) if not f.startswith('.')]\n",
+ "\n",
+ "# read pickle file\n",
+ "sf = pd.DataFrame()\n",
+ "af = pd.DataFrame()\n",
+ "\n",
+ "# load statistics files from nets\n",
+ "for net in nets:\n",
+ " #path = os.path.join(root_path, net, 'control', 'statistics',)\n",
+ " path = os.path.join(root_path, 'statistics',)\n",
+ " with open(os.path.join(path, 'slotframe.csv'), 'rb') as f:\n",
+ " sf_temp = pd.read_csv(f, index_col=0)\n",
+ " sf_temp['net'] = net\n",
+ " sf = pd.concat([sf,sf_temp])\n",
+ "\n",
+ " with open(os.path.join(path, 'accframe.csv'), 'rb') as f:\n",
+ " af_temp = pd.read_csv(f, index_col=0)\n",
+ " af_temp['net'] = net\n",
+ " af = pd.concat([af,af_temp])\n",
+ "\n",
+ "# cast variables\n",
+ "sf['visible'] = sf['visible'].astype(bool)\n",
+ "sf['bound'] = sf['bound'].astype(bool)\n",
+ "sf['occluder'] = sf['occluder'].astype(bool)\n",
+ "sf['inimage'] = sf['inimage'].astype(bool)\n",
+ "sf['alpha_pos'] = 1-sf['alpha_pos']\n",
+ "sf['alpha_ges'] = 1-sf['alpha_ges']\n",
+ "\n",
+ "# scale to percentage\n",
+ "sf['TE'] = sf['TE'] * 100\n",
+ "\n",
+ "# add surprise as dummy code\n",
+ "sf['control'] = [('control' in set) for set in sf['set']]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Calculate Tracking Error (TE)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Tracking Error when visible: M: 30.3 , STD: 14.1, Count: 507\n",
+ "Tracking Error when occluded: M: 25.8 , STD: 16.1, Count: 15\n",
+ "Tracking Error Overall: M: 30.2 , STD: 14.1, Count: 522\n"
+ ]
+ }
+ ],
+ "source": [
+ "grouping = (sf.inimage & sf.bound & ~sf.occluder & sf.control)\n",
+ "\n",
+ "def get_stats(col):\n",
+ " return f' M: {col.mean():.3} , STD: {col.std():.3}, Count: {col.count()}'\n",
+ "\n",
+ "# When Visible\n",
+ "temp = sf[grouping & sf.visible]\n",
+ "print(f'Tracking Error when visible:' + get_stats(temp['TE']))\n",
+ "\n",
+ "# When Occluded\n",
+ "temp = sf[grouping & ~sf.visible]\n",
+ "print(f'Tracking Error when occluded:' + get_stats(temp['TE']))\n",
+ "\n",
+ "# When Overall\n",
+ "temp = sf[grouping]\n",
+ "print(f'Tracking Error Overall:' + get_stats(temp['TE']))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Calculate Succesfull Trackings (TE)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<div>\n",
+ "<style scoped>\n",
+ " .dataframe tbody tr th:only-of-type {\n",
+ " vertical-align: middle;\n",
+ " }\n",
+ "\n",
+ " .dataframe tbody tr th {\n",
+ " vertical-align: top;\n",
+ " }\n",
+ "\n",
+ " .dataframe thead th {\n",
+ " text-align: right;\n",
+ " }\n",
+ "</style>\n",
+ "<table border=\"1\" class=\"dataframe\">\n",
+ " <thead>\n",
+ " <tr style=\"text-align: right;\">\n",
+ " <th></th>\n",
+ " <th>set</th>\n",
+ " <th>evalmode</th>\n",
+ " <th>tracked_pos</th>\n",
+ " <th>tracked_neg</th>\n",
+ " <th>tracked_pos_pro</th>\n",
+ " <th>tracked_neg_pro</th>\n",
+ " </tr>\n",
+ " </thead>\n",
+ " <tbody>\n",
+ " <tr>\n",
+ " <th>0</th>\n",
+ " <td>control</td>\n",
+ " <td>control</td>\n",
+ " <td>1</td>\n",
+ " <td>19</td>\n",
+ " <td>0.05</td>\n",
+ " <td>0.95</td>\n",
+ " </tr>\n",
+ " </tbody>\n",
+ "</table>\n",
+ "</div>"
+ ],
+ "text/plain": [
+ " set evalmode tracked_pos tracked_neg tracked_pos_pro \\\n",
+ "0 control control 1 19 0.05 \n",
+ "\n",
+ " tracked_neg_pro \n",
+ "0 0.95 "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# succesfull trackings: In the last visible moment of the target, the slot was less than 10% away from the target\n",
+ "# determine last visible frame numeric\n",
+ "grouping_factors = ['net','set','evalmode','scene','slot']\n",
+ "ff = sf[sf.visible].groupby(grouping_factors).max()\n",
+ "ff.rename(columns = {'frame':'last_visible'}, inplace = True)\n",
+ "ff = ff[['last_visible']]\n",
+ "\n",
+ "# add dummy variable to sf\n",
+ "sf = sf.merge(ff, on=grouping_factors, how='left')\n",
+ "sf['last_visible'] = (sf['last_visible'] == sf['frame'])\n",
+ "\n",
+ "# same for first bound frame\n",
+ "ff = sf[sf.visible & sf.bound & sf.inimage].groupby(grouping_factors).min()\n",
+ "ff.rename(columns = {'frame':'first_visible'}, inplace = True)\n",
+ "ff = ff[['first_visible']]\n",
+ "\n",
+ "# add dummy variable to sf\n",
+ "sf = sf.merge(ff, on=grouping_factors, how='left')\n",
+ "\n",
+ "# extract the trials where the target was last visible and threshold the TE\n",
+ "ff = sf[sf['last_visible']] \n",
+ "ff['tracked_pos'] = (ff['TE'] < 10)\n",
+ "ff['tracked_neg'] = (ff['TE'] >= 10)\n",
+ "\n",
+ "# fill NaN with 0\n",
+ "sf = sf.merge(ff[grouping_factors + ['tracked_pos', 'tracked_neg']], on=grouping_factors, how='left')\n",
+ "sf['tracked_pos'].fillna(False, inplace=True)\n",
+ "sf['tracked_neg'].fillna(False, inplace=True)\n",
+ "\n",
+ "# Aggreagte over all scenes\n",
+ "temp = sf[(sf['frame']== 15) & ~sf.occluder & sf.control & (sf.first_visible < 20)]\n",
+ "temp = temp.groupby(['set', 'evalmode']).sum()\n",
+ "temp = temp[['tracked_pos', 'tracked_neg']]\n",
+ "temp = temp.reset_index()\n",
+ "\n",
+ "temp['tracked_pos_pro'] = temp['tracked_pos'] / (temp['tracked_pos'] + temp['tracked_neg'])\n",
+ "temp['tracked_neg_pro'] = temp['tracked_neg'] / (temp['tracked_pos'] + temp['tracked_neg'])\n",
+ "\n",
+ "temp"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Mostly Tracked stats"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "temp = af[af.index == 'OVERALL']\n",
+ "temp['mostly_tracked'] = temp['mostly_tracked'] / temp['num_unique_objects']\n",
+ "temp['partially_tracked'] = temp['partially_tracked'] / temp['num_unique_objects']\n",
+ "temp['mostly_lost'] = temp['mostly_lost'] / temp['num_unique_objects']\n",
+ "g = temp[['mostly_tracked', 'partially_tracked', 'mostly_lost','set']].set_index(['set']).groupby(['set']).mean().plot(kind='bar', stacked=True);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# MOTA "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<div>\n",
+ "<style scoped>\n",
+ " .dataframe tbody tr th:only-of-type {\n",
+ " vertical-align: middle;\n",
+ " }\n",
+ "\n",
+ " .dataframe tbody tr th {\n",
+ " vertical-align: top;\n",
+ " }\n",
+ "\n",
+ " .dataframe thead th {\n",
+ " text-align: right;\n",
+ " }\n",
+ "</style>\n",
+ "<table border=\"1\" class=\"dataframe\">\n",
+ " <thead>\n",
+ " <tr style=\"text-align: right;\">\n",
+ " <th></th>\n",
+ " <th>idf1</th>\n",
+ " <th>idp</th>\n",
+ " <th>idr</th>\n",
+ " <th>recall</th>\n",
+ " <th>precision</th>\n",
+ " <th>num_unique_objects</th>\n",
+ " <th>mostly_tracked</th>\n",
+ " <th>partially_tracked</th>\n",
+ " <th>mostly_lost</th>\n",
+ " <th>num_false_positives</th>\n",
+ " <th>num_misses</th>\n",
+ " <th>num_switches</th>\n",
+ " <th>num_fragmentations</th>\n",
+ " <th>mota</th>\n",
+ " <th>motp</th>\n",
+ " <th>num_transfer</th>\n",
+ " <th>num_ascend</th>\n",
+ " <th>num_migrate</th>\n",
+ " </tr>\n",
+ " <tr>\n",
+ " <th>set</th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " <th></th>\n",
+ " </tr>\n",
+ " </thead>\n",
+ " <tbody>\n",
+ " <tr>\n",
+ " <th>control</th>\n",
+ " <td>0.54837</td>\n",
+ " <td>0.487418</td>\n",
+ " <td>0.626745</td>\n",
+ " <td>0.70247</td>\n",
+ " <td>0.546309</td>\n",
+ " <td>86.0</td>\n",
+ " <td>35.0</td>\n",
+ " <td>44.0</td>\n",
+ " <td>7.0</td>\n",
+ " <td>4345.0</td>\n",
+ " <td>2216.0</td>\n",
+ " <td>240.0</td>\n",
+ " <td>73.0</td>\n",
+ " <td>0.086869</td>\n",
+ " <td>0.07704</td>\n",
+ " <td>119.0</td>\n",
+ " <td>55.0</td>\n",
+ " <td>19.0</td>\n",
+ " </tr>\n",
+ " </tbody>\n",
+ "</table>\n",
+ "</div>"
+ ],
+ "text/plain": [
+ " idf1 idp idr recall precision num_unique_objects \\\n",
+ "set \n",
+ "control 0.54837 0.487418 0.626745 0.70247 0.546309 86.0 \n",
+ "\n",
+ " mostly_tracked partially_tracked mostly_lost num_false_positives \\\n",
+ "set \n",
+ "control 35.0 44.0 7.0 4345.0 \n",
+ "\n",
+ " num_misses num_switches num_fragmentations mota motp \\\n",
+ "set \n",
+ "control 2216.0 240.0 73.0 0.086869 0.07704 \n",
+ "\n",
+ " num_transfer num_ascend num_migrate \n",
+ "set \n",
+ "control 119.0 55.0 19.0 "
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "af[af.index == 'OVERALL'].groupby(['set']).mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "loci23",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.16"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}