diff --git a/test_custom_rnn.ipynb b/test_custom_rnn.ipynb
new file mode 100644
index 0000000..73d00ff
--- /dev/null
+++ b/test_custom_rnn.ipynb
@@ -0,0 +1,3624 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Goal of this notebook: implement some basic RNN/LSTM/GRU to _forecast_ trajectories based on VIRAT and/or the custom _hof_ dataset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/ruben/suspicion/trap/.venv/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
+ " from .autonotebook import tqdm as notebook_tqdm\n"
+ ]
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "import torch\n",
+ "import matplotlib.pyplot as plt # Visualization \n",
+ "import torch.nn as nn\n",
+ "import pandas_helper_calc # noqa # provides df.calc.derivative()\n",
+ "import pandas as pd\n",
+ "import cv2\n",
+ "import pathlib\n",
+ "from tqdm.autonotebook import tqdm"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "FPS = 12\n",
+ "# SRC_CSV = \"EXPERIMENTS/hofext-maskrcnn/all.txt\"\n",
+ "# SRC_CSV = \"EXPERIMENTS/raw/generated/train/tracks.txt\"\n",
+ "SRC_CSV = \"EXPERIMENTS/raw/hof-meter-maskrcnn2/train/tracks.txt\"\n",
+ "SRC_CSV = \"EXPERIMENTS/20240426-hof-yolo/train/tracked.txt\"\n",
+ "SRC_CSV = \"EXPERIMENTS/raw/hof2/train/tracked.txt\"\n",
+ "# SRC_H = \"../DATASETS/hof/webcam20231103-2-homography.txt\"\n",
+ "SRC_H = None\n",
+ "CACHE_DIR = \"EXPERIMENTS/cache/hof2/\"\n",
+ "SMOOTHING = True # hof-yolo is already smoothed, hof2 isn't\n",
+ "SMOOTHING_WINDOW=3 #2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "in_fields = ['proj_x', 'proj_y', 'vx', 'vy', 'ax', 'ay']\n",
+ "# out_fields = ['v', 'heading']\n",
+ "# velocity cannot be negative, and heading is circular (modulo), this makes it harder to optimise than a linear space, so try to use components\n",
+ "# an we can use simple MSE loss (I guess?)\n",
+ "out_fields = ['vx', 'vy']\n",
+ "window = int(FPS*1.5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "cuda\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Set device\n",
+ "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
+ "print(device)\n",
+ "\n",
+ "# Hyperparameters\n",
+ "input_size = len(in_fields)\n",
+ "hidden_size = 256\n",
+ "num_layers = 3\n",
+ "output_size = len(out_fields)\n",
+ "learning_rate = 0.005 #0.01 #0.005\n",
+ "batch_size = 256\n",
+ "num_epochs = 1000"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cache_path = pathlib.Path(CACHE_DIR)\n",
+ "cache_path.mkdir(parents=True, exist_ok=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Samping 1/5, of 412098 items\n",
+ "Done sampling kept 83726 items\n"
+ ]
+ }
+ ],
+ "source": [
+ "from pathlib import Path\n",
+ "from trap.tools import load_tracks_from_csv\n",
+ "\n",
+ "data = load_tracks_from_csv(Path(SRC_CSV), FPS, 2, 5 )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " ... | \n",
+ " dx | \n",
+ " dy | \n",
+ " vx | \n",
+ " vy | \n",
+ " ax | \n",
+ " ay | \n",
+ " v | \n",
+ " a | \n",
+ " heading | \n",
+ " d_heading | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 194 | \n",
+ " 606.0 | \n",
+ " 4 | \n",
+ " 1593.885864 | \n",
+ " 782.814819 | \n",
+ " 145.704346 | \n",
+ " 195.380432 | \n",
+ " 12.897830 | \n",
+ " 10.750061 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 0.201965 | \n",
+ " -0.291350 | \n",
+ " 0.484716 | \n",
+ " -0.699240 | \n",
+ " -1.622919 | \n",
+ " -1.732144 | \n",
+ " 0.850815 | \n",
+ " 1.399195 | \n",
+ " 304.729842 | \n",
+ " -101.772559 | \n",
+ "
\n",
+ " \n",
+ " 199 | \n",
+ " 611.0 | \n",
+ " 4 | \n",
+ " 1563.890015 | \n",
+ " 700.710510 | \n",
+ " 137.461304 | \n",
+ " 190.194855 | \n",
+ " 13.099794 | \n",
+ " 10.458712 | \n",
+ " 1.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " 0.201965 | \n",
+ " -0.291350 | \n",
+ " 0.484716 | \n",
+ " -0.699240 | \n",
+ " -1.622919 | \n",
+ " -1.732144 | \n",
+ " 0.850815 | \n",
+ " 1.399195 | \n",
+ " 304.729842 | \n",
+ " -101.772559 | \n",
+ "
\n",
+ " \n",
+ " 204 | \n",
+ " 616.0 | \n",
+ " 4 | \n",
+ " 1529.469727 | \n",
+ " 635.622498 | \n",
+ " 129.342651 | \n",
+ " 194.191528 | \n",
+ " 13.020002 | \n",
+ " 9.866642 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.079792 | \n",
+ " -0.592069 | \n",
+ " -0.191501 | \n",
+ " -1.420966 | \n",
+ " -1.622919 | \n",
+ " -1.732144 | \n",
+ " 1.433812 | \n",
+ " 1.399195 | \n",
+ " 262.324609 | \n",
+ " -101.772559 | \n",
+ "
\n",
+ " \n",
+ " 209 | \n",
+ " 621.0 | \n",
+ " 4 | \n",
+ " 1474.449341 | \n",
+ " 569.387634 | \n",
+ " 128.099854 | \n",
+ " 199.766357 | \n",
+ " 12.965776 | \n",
+ " 9.301442 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.054226 | \n",
+ " -0.565200 | \n",
+ " -0.130143 | \n",
+ " -1.356479 | \n",
+ " 0.147259 | \n",
+ " 0.154769 | \n",
+ " 1.362708 | \n",
+ " -0.170650 | \n",
+ " 264.519715 | \n",
+ " 5.268254 | \n",
+ "
\n",
+ " \n",
+ " 214 | \n",
+ " 626.0 | \n",
+ " 4 | \n",
+ " 1443.123535 | \n",
+ " 518.907043 | \n",
+ " 120.022461 | \n",
+ " 202.566772 | \n",
+ " 12.642992 | \n",
+ " 8.976624 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.322784 | \n",
+ " -0.324818 | \n",
+ " -0.774681 | \n",
+ " -0.779564 | \n",
+ " -1.546892 | \n",
+ " 1.384597 | \n",
+ " 1.099023 | \n",
+ " -0.632844 | \n",
+ " 225.179993 | \n",
+ " -94.415332 | \n",
+ "
\n",
+ " \n",
+ " 219 | \n",
+ " 631.0 | \n",
+ " 4 | \n",
+ " 1398.944946 | \n",
+ " 461.813049 | \n",
+ " 106.391357 | \n",
+ " 193.476410 | \n",
+ " 12.465588 | \n",
+ " 8.557788 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.177404 | \n",
+ " -0.418836 | \n",
+ " -0.425771 | \n",
+ " -1.005205 | \n",
+ " 0.837386 | \n",
+ " -0.541539 | \n",
+ " 1.091659 | \n",
+ " -0.017675 | \n",
+ " 247.044148 | \n",
+ " 52.473972 | \n",
+ "
\n",
+ " \n",
+ " 224 | \n",
+ " 636.0 | \n",
+ " 4 | \n",
+ " 1353.237793 | \n",
+ " 438.118896 | \n",
+ " 91.444336 | \n",
+ " 170.930664 | \n",
+ " 12.128433 | \n",
+ " 8.052323 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.337155 | \n",
+ " -0.505465 | \n",
+ " -0.809172 | \n",
+ " -1.213117 | \n",
+ " -0.920163 | \n",
+ " -0.498987 | \n",
+ " 1.458222 | \n",
+ " 0.879752 | \n",
+ " 236.295957 | \n",
+ " -25.795658 | \n",
+ "
\n",
+ " \n",
+ " 229 | \n",
+ " 641.0 | \n",
+ " 4 | \n",
+ " 1272.791992 | \n",
+ " 408.827759 | \n",
+ " 104.274536 | \n",
+ " 180.414551 | \n",
+ " 11.689648 | \n",
+ " 7.684636 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.438785 | \n",
+ " -0.367687 | \n",
+ " -1.053084 | \n",
+ " -0.882448 | \n",
+ " -0.585388 | \n",
+ " 0.793604 | \n",
+ " 1.373936 | \n",
+ " -0.202286 | \n",
+ " 219.961870 | \n",
+ " -39.201809 | \n",
+ "
\n",
+ " \n",
+ " 234 | \n",
+ " 646.0 | \n",
+ " 4 | \n",
+ " 1198.965820 | \n",
+ " 407.952759 | \n",
+ " 103.282104 | \n",
+ " 167.306580 | \n",
+ " 11.207276 | \n",
+ " 7.476216 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.482372 | \n",
+ " -0.208420 | \n",
+ " -1.157693 | \n",
+ " -0.500209 | \n",
+ " -0.251064 | \n",
+ " 0.917374 | \n",
+ " 1.261136 | \n",
+ " -0.270721 | \n",
+ " 203.367915 | \n",
+ " -39.825493 | \n",
+ "
\n",
+ " \n",
+ " 239 | \n",
+ " 651.0 | \n",
+ " 4 | \n",
+ " 1156.309570 | \n",
+ " 415.743408 | \n",
+ " 97.628784 | \n",
+ " 158.774811 | \n",
+ " 10.884154 | \n",
+ " 7.514692 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.323122 | \n",
+ " 0.038476 | \n",
+ " -0.775493 | \n",
+ " 0.092343 | \n",
+ " 0.917282 | \n",
+ " 1.422125 | \n",
+ " 0.780971 | \n",
+ " -1.152395 | \n",
+ " 173.209381 | \n",
+ " -72.380481 | \n",
+ "
\n",
+ " \n",
+ " 244 | \n",
+ " 656.0 | \n",
+ " 4 | \n",
+ " 1094.440430 | \n",
+ " 443.849915 | \n",
+ " 107.938110 | \n",
+ " 177.703979 | \n",
+ " 10.544492 | \n",
+ " 7.870090 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.339661 | \n",
+ " 0.355398 | \n",
+ " -0.815187 | \n",
+ " 0.852955 | \n",
+ " -0.095267 | \n",
+ " 1.825468 | \n",
+ " 1.179857 | \n",
+ " 0.957326 | \n",
+ " 133.703018 | \n",
+ " -94.815270 | \n",
+ "
\n",
+ " \n",
+ " 249 | \n",
+ " 661.0 | \n",
+ " 4 | \n",
+ " 1072.595093 | \n",
+ " 481.461945 | \n",
+ " 118.452148 | \n",
+ " 205.365173 | \n",
+ " 10.486504 | \n",
+ " 8.287758 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.057989 | \n",
+ " 0.417668 | \n",
+ " -0.139173 | \n",
+ " 1.002404 | \n",
+ " 1.622435 | \n",
+ " 0.358678 | \n",
+ " 1.012019 | \n",
+ " -0.402811 | \n",
+ " 97.904355 | \n",
+ " -85.916792 | \n",
+ "
\n",
+ " \n",
+ " 254 | \n",
+ " 666.0 | \n",
+ " 4 | \n",
+ " 1086.627930 | \n",
+ " 526.733154 | \n",
+ " 105.444458 | \n",
+ " 189.750610 | \n",
+ " 10.498393 | \n",
+ " 8.684043 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " 0.011889 | \n",
+ " 0.396285 | \n",
+ " 0.028534 | \n",
+ " 0.951083 | \n",
+ " 0.402496 | \n",
+ " -0.123170 | \n",
+ " 0.951511 | \n",
+ " -0.145220 | \n",
+ " 88.281546 | \n",
+ " -23.094741 | \n",
+ "
\n",
+ " \n",
+ " 259 | \n",
+ " 671.0 | \n",
+ " 4 | \n",
+ " 1099.592285 | \n",
+ " 584.216675 | \n",
+ " 114.395874 | \n",
+ " 218.003479 | \n",
+ " 10.492767 | \n",
+ " 9.267106 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.005626 | \n",
+ " 0.583063 | \n",
+ " -0.013502 | \n",
+ " 1.399352 | \n",
+ " -0.100887 | \n",
+ " 1.075845 | \n",
+ " 1.399417 | \n",
+ " 1.074975 | \n",
+ " 90.552815 | \n",
+ " 5.451045 | \n",
+ "
\n",
+ " \n",
+ " 264 | \n",
+ " 676.0 | \n",
+ " 4 | \n",
+ " 1144.484782 | \n",
+ " 642.779582 | \n",
+ " 96.750326 | \n",
+ " 180.744690 | \n",
+ " 10.484691 | \n",
+ " 9.582745 | \n",
+ " 1.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " -0.008077 | \n",
+ " 0.315639 | \n",
+ " -0.019384 | \n",
+ " 0.757534 | \n",
+ " -0.014116 | \n",
+ " -1.540364 | \n",
+ " 0.757782 | \n",
+ " -1.539925 | \n",
+ " 91.465753 | \n",
+ " 2.191052 | \n",
+ "
\n",
+ " \n",
+ " 269 | \n",
+ " 681.0 | \n",
+ " 4 | \n",
+ " 1179.532959 | \n",
+ " 682.365540 | \n",
+ " 107.764282 | \n",
+ " 200.651733 | \n",
+ " 10.698373 | \n",
+ " 9.950516 | \n",
+ " 2.0 | \n",
+ " 5.0 | \n",
+ " ... | \n",
+ " 0.213682 | \n",
+ " 0.367771 | \n",
+ " 0.512837 | \n",
+ " 0.882650 | \n",
+ " 1.277331 | \n",
+ " 0.300278 | \n",
+ " 1.020820 | \n",
+ " 0.631291 | \n",
+ " 59.842534 | \n",
+ " -75.895726 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
16 rows × 24 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "194 606.0 4 1593.885864 782.814819 145.704346 195.380432 \n",
+ "199 611.0 4 1563.890015 700.710510 137.461304 190.194855 \n",
+ "204 616.0 4 1529.469727 635.622498 129.342651 194.191528 \n",
+ "209 621.0 4 1474.449341 569.387634 128.099854 199.766357 \n",
+ "214 626.0 4 1443.123535 518.907043 120.022461 202.566772 \n",
+ "219 631.0 4 1398.944946 461.813049 106.391357 193.476410 \n",
+ "224 636.0 4 1353.237793 438.118896 91.444336 170.930664 \n",
+ "229 641.0 4 1272.791992 408.827759 104.274536 180.414551 \n",
+ "234 646.0 4 1198.965820 407.952759 103.282104 167.306580 \n",
+ "239 651.0 4 1156.309570 415.743408 97.628784 158.774811 \n",
+ "244 656.0 4 1094.440430 443.849915 107.938110 177.703979 \n",
+ "249 661.0 4 1072.595093 481.461945 118.452148 205.365173 \n",
+ "254 666.0 4 1086.627930 526.733154 105.444458 189.750610 \n",
+ "259 671.0 4 1099.592285 584.216675 114.395874 218.003479 \n",
+ "264 676.0 4 1144.484782 642.779582 96.750326 180.744690 \n",
+ "269 681.0 4 1179.532959 682.365540 107.764282 200.651733 \n",
+ "\n",
+ " x y state diff ... dx dy vx \\\n",
+ "194 12.897830 10.750061 2.0 NaN ... 0.201965 -0.291350 0.484716 \n",
+ "199 13.099794 10.458712 1.0 5.0 ... 0.201965 -0.291350 0.484716 \n",
+ "204 13.020002 9.866642 2.0 5.0 ... -0.079792 -0.592069 -0.191501 \n",
+ "209 12.965776 9.301442 2.0 5.0 ... -0.054226 -0.565200 -0.130143 \n",
+ "214 12.642992 8.976624 2.0 5.0 ... -0.322784 -0.324818 -0.774681 \n",
+ "219 12.465588 8.557788 2.0 5.0 ... -0.177404 -0.418836 -0.425771 \n",
+ "224 12.128433 8.052323 2.0 5.0 ... -0.337155 -0.505465 -0.809172 \n",
+ "229 11.689648 7.684636 2.0 5.0 ... -0.438785 -0.367687 -1.053084 \n",
+ "234 11.207276 7.476216 2.0 5.0 ... -0.482372 -0.208420 -1.157693 \n",
+ "239 10.884154 7.514692 2.0 5.0 ... -0.323122 0.038476 -0.775493 \n",
+ "244 10.544492 7.870090 2.0 5.0 ... -0.339661 0.355398 -0.815187 \n",
+ "249 10.486504 8.287758 2.0 5.0 ... -0.057989 0.417668 -0.139173 \n",
+ "254 10.498393 8.684043 2.0 5.0 ... 0.011889 0.396285 0.028534 \n",
+ "259 10.492767 9.267106 2.0 5.0 ... -0.005626 0.583063 -0.013502 \n",
+ "264 10.484691 9.582745 1.0 5.0 ... -0.008077 0.315639 -0.019384 \n",
+ "269 10.698373 9.950516 2.0 5.0 ... 0.213682 0.367771 0.512837 \n",
+ "\n",
+ " vy ax ay v a heading d_heading \n",
+ "194 -0.699240 -1.622919 -1.732144 0.850815 1.399195 304.729842 -101.772559 \n",
+ "199 -0.699240 -1.622919 -1.732144 0.850815 1.399195 304.729842 -101.772559 \n",
+ "204 -1.420966 -1.622919 -1.732144 1.433812 1.399195 262.324609 -101.772559 \n",
+ "209 -1.356479 0.147259 0.154769 1.362708 -0.170650 264.519715 5.268254 \n",
+ "214 -0.779564 -1.546892 1.384597 1.099023 -0.632844 225.179993 -94.415332 \n",
+ "219 -1.005205 0.837386 -0.541539 1.091659 -0.017675 247.044148 52.473972 \n",
+ "224 -1.213117 -0.920163 -0.498987 1.458222 0.879752 236.295957 -25.795658 \n",
+ "229 -0.882448 -0.585388 0.793604 1.373936 -0.202286 219.961870 -39.201809 \n",
+ "234 -0.500209 -0.251064 0.917374 1.261136 -0.270721 203.367915 -39.825493 \n",
+ "239 0.092343 0.917282 1.422125 0.780971 -1.152395 173.209381 -72.380481 \n",
+ "244 0.852955 -0.095267 1.825468 1.179857 0.957326 133.703018 -94.815270 \n",
+ "249 1.002404 1.622435 0.358678 1.012019 -0.402811 97.904355 -85.916792 \n",
+ "254 0.951083 0.402496 -0.123170 0.951511 -0.145220 88.281546 -23.094741 \n",
+ "259 1.399352 -0.100887 1.075845 1.399417 1.074975 90.552815 5.451045 \n",
+ "264 0.757534 -0.014116 -1.540364 0.757782 -1.539925 91.465753 2.191052 \n",
+ "269 0.882650 1.277331 0.300278 1.020820 0.631291 59.842534 -75.895726 \n",
+ "\n",
+ "[16 rows x 24 columns]"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ "
\n",
+ " \n",
+ " track_id | \n",
+ " frame_id | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 | \n",
+ " 342 | \n",
+ " 1393.736572 | \n",
+ " 0.000000 | \n",
+ " 67.613647 | \n",
+ " 121.391151 | \n",
+ " 1363.3164 | \n",
+ " 232.92647 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 343 | \n",
+ " 1391.775879 | \n",
+ " 0.852371 | \n",
+ " 78.562622 | \n",
+ " 141.050934 | \n",
+ " 1359.1885 | \n",
+ " 266.06586 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 346 | \n",
+ " 1392.164551 | \n",
+ " 7.758987 | \n",
+ " 85.757324 | \n",
+ " 154.357971 | \n",
+ " 1355.7444 | \n",
+ " 297.67404 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 347 | \n",
+ " 1393.844849 | \n",
+ " 12.691238 | \n",
+ " 86.482910 | \n",
+ " 156.264786 | \n",
+ " 1355.2312 | \n",
+ " 308.20670 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 348 | \n",
+ " 1394.839111 | \n",
+ " 15.621338 | \n",
+ " 84.763428 | \n",
+ " 154.584396 | \n",
+ " 1354.9246 | \n",
+ " 310.09225 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 5030 | \n",
+ " 32691 | \n",
+ " 1708.213379 | \n",
+ " 749.260376 | \n",
+ " 133.839966 | \n",
+ " 182.405396 | \n",
+ " 1402.5426 | \n",
+ " 1075.20870 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 32692 | \n",
+ " 1707.651855 | \n",
+ " 748.997437 | \n",
+ " 134.013672 | \n",
+ " 182.391296 | \n",
+ " 1402.2948 | \n",
+ " 1074.97230 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 32720 | \n",
+ " 1700.379639 | \n",
+ " 750.314697 | \n",
+ " 128.792603 | \n",
+ " 181.589783 | \n",
+ " 1395.7992 | \n",
+ " 1074.27320 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 32721 | \n",
+ " 1701.722412 | \n",
+ " 751.000488 | \n",
+ " 125.286865 | \n",
+ " 180.867615 | \n",
+ " 1395.5424 | \n",
+ " 1074.20560 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 32722 | \n",
+ " 1702.384766 | \n",
+ " 750.754517 | \n",
+ " 123.435425 | \n",
+ " 180.945618 | \n",
+ " 1395.4082 | \n",
+ " 1074.06500 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
326960 rows × 7 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " l t w h x \\\n",
+ "track_id frame_id \n",
+ "1 342 1393.736572 0.000000 67.613647 121.391151 1363.3164 \n",
+ " 343 1391.775879 0.852371 78.562622 141.050934 1359.1885 \n",
+ " 346 1392.164551 7.758987 85.757324 154.357971 1355.7444 \n",
+ " 347 1393.844849 12.691238 86.482910 156.264786 1355.2312 \n",
+ " 348 1394.839111 15.621338 84.763428 154.584396 1354.9246 \n",
+ "... ... ... ... ... ... \n",
+ "5030 32691 1708.213379 749.260376 133.839966 182.405396 1402.5426 \n",
+ " 32692 1707.651855 748.997437 134.013672 182.391296 1402.2948 \n",
+ " 32720 1700.379639 750.314697 128.792603 181.589783 1395.7992 \n",
+ " 32721 1701.722412 751.000488 125.286865 180.867615 1395.5424 \n",
+ " 32722 1702.384766 750.754517 123.435425 180.945618 1395.4082 \n",
+ "\n",
+ " y state \n",
+ "track_id frame_id \n",
+ "1 342 232.92647 2 \n",
+ " 343 266.06586 2 \n",
+ " 346 297.67404 2 \n",
+ " 347 308.20670 2 \n",
+ " 348 310.09225 2 \n",
+ "... ... ... \n",
+ "5030 32691 1075.20870 2 \n",
+ " 32692 1074.97230 2 \n",
+ " 32720 1074.27320 2 \n",
+ " 32721 1074.20560 2 \n",
+ " 32722 1074.06500 2 \n",
+ "\n",
+ "[326960 rows x 7 columns]"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data = pd.read_csv(SRC_CSV, delimiter=\"\\t\", index_col=False, header=None)\n",
+ "# data.columns = ['frame_id', 'track_id', 'pos_x', 'pos_y', 'width', 'height']#, '_x', '_y,']\n",
+ "data.columns = ['frame_id', 'track_id', 'l', 't', 'w', 'h', 'x', 'y', 'state']#, '_x', '_y,']\n",
+ "data['frame_id'] = pd.to_numeric(data['frame_id'], downcast='integer')\n",
+ "data['frame_id'] = data['frame_id'] // 10 # compatibility with Trajectron++\n",
+ "\n",
+ "data.sort_values(by=['track_id', 'frame_id'],inplace=True)\n",
+ "\n",
+ "data.set_index(['track_id', 'frame_id'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# cm to meter\n",
+ "data['x'] = data['x']/100\n",
+ "data['y'] = data['y']/100"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data['diff'] = data.groupby(['track_id'])['frame_id'].diff() #.fillna(0)\n",
+ "data['diff'] = pd.to_numeric(data['diff'], downcast='integer')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "326960it [06:37, 821.55it/s] "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "was: 326960 added: 85138 new length: 412098\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "missing=0\n",
+ "old_size=len(data)\n",
+ "# slow way to append missing steps to the dataset\n",
+ "for ind, row in tqdm(data.iterrows()):\n",
+ " if row['diff'] > 1:\n",
+ " for s in range(1, int(row['diff'])):\n",
+ " # add as many entries as missing\n",
+ " missing += 1\n",
+ " data.loc[len(data)] = [row['frame_id']-s, row['track_id'], np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 1, 1]\n",
+ " # new_frame = [data.loc[ind-1]['frame_id']+s, row['track_id'], np.nan, np.nan, np.nan, np.nan, np.nan]\n",
+ " # data.loc[len(data)] = new_frame\n",
+ "\n",
+ "print('was:', old_size, 'added:', missing, 'new length:', len(data))\n",
+ "# now sort, so that the added data is in the right place\n",
+ "data.sort_values(by=['track_id', 'frame_id'], inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# interpolate missing data\n",
+ "df=data.copy()\n",
+ "df = df.groupby('track_id').apply(lambda group: group.interpolate(method='linear'))\n",
+ "df.reset_index(drop=True, inplace=True)\n",
+ "data = df\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Running smoother\n"
+ ]
+ }
+ ],
+ "source": [
+ "from trap.tracker import Smoother\n",
+ "\n",
+ "if SMOOTHING:\n",
+ " df=data.copy()\n",
+ " if 'x_raw' not in df:\n",
+ " df['x_raw'] = df['x']\n",
+ " if 'y_raw' not in df:\n",
+ " df['y_raw'] = df['y']\n",
+ "\n",
+ " print(\"Running smoother\")\n",
+ " # print(df)\n",
+ " # from tsmoothie.smoother import KalmanSmoother, ConvolutionSmoother\n",
+ " smoother = Smoother(convolution=False)\n",
+ " def smoothing(data):\n",
+ " # smoother = ConvolutionSmoother(window_len=SMOOTHING_WINDOW, window_type='ones', copy=None)\n",
+ " return smoother.smooth(data).tolist()\n",
+ " # df=df.assign(smooth_data=smoother.smooth_data[0])\n",
+ " # return smoother.smooth_data[0].tolist()\n",
+ "\n",
+ " # operate smoothing per axis\n",
+ " df['x'] = df.groupby('track_id')['x_raw'].transform(smoothing)\n",
+ " df['y'] = df.groupby('track_id')['y_raw'].transform(smoothing)\n",
+ " \n",
+ "\n",
+ " data = df\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " x_raw | \n",
+ " y_raw | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 9.0 | \n",
+ " 1.0 | \n",
+ " 0.000000 | \n",
+ " 565.566162 | \n",
+ " 88.795326 | \n",
+ " 173.917542 | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 0.881595 | \n",
+ " 7.341152 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 1.0 | \n",
+ " 0.000000 | \n",
+ " 565.116699 | \n",
+ " 88.801704 | \n",
+ " 171.334290 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.870703 | \n",
+ " 7.309168 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 11.0 | \n",
+ " 1.0 | \n",
+ " 0.000000 | \n",
+ " 564.874573 | \n",
+ " 90.596596 | \n",
+ " 177.199951 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.901374 | \n",
+ " 7.370044 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 12.0 | \n",
+ " 1.0 | \n",
+ " 0.000000 | \n",
+ " 564.874268 | \n",
+ " 90.928131 | \n",
+ " 183.125732 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.924360 | \n",
+ " 7.432365 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 13.0 | \n",
+ " 1.0 | \n",
+ " 0.000000 | \n",
+ " 569.931213 | \n",
+ " 86.213280 | \n",
+ " 180.774292 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.906583 | \n",
+ " 7.456334 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 320183 | \n",
+ " 60159.0 | \n",
+ " 3632.0 | \n",
+ " 1830.709717 | \n",
+ " 651.257446 | \n",
+ " 150.202515 | \n",
+ " 157.239746 | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 15.214551 | \n",
+ " 10.027093 | \n",
+ "
\n",
+ " \n",
+ " 320184 | \n",
+ " 60160.0 | \n",
+ " 3632.0 | \n",
+ " 1834.013672 | \n",
+ " 649.612122 | \n",
+ " 153.686646 | \n",
+ " 160.874023 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.244872 | \n",
+ " 10.047117 | \n",
+ "
\n",
+ " \n",
+ " 320185 | \n",
+ " 60161.0 | \n",
+ " 3632.0 | \n",
+ " 1845.373047 | \n",
+ " 651.249756 | \n",
+ " 147.178589 | \n",
+ " 153.729248 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.318496 | \n",
+ " 10.015218 | \n",
+ "
\n",
+ " \n",
+ " 320186 | \n",
+ " 60162.0 | \n",
+ " 3632.0 | \n",
+ " 1857.388916 | \n",
+ " 650.908203 | \n",
+ " 136.407349 | \n",
+ " 142.354614 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.400203 | \n",
+ " 9.935355 | \n",
+ "
\n",
+ " \n",
+ " 320187 | \n",
+ " 60163.0 | \n",
+ " 3632.0 | \n",
+ " 1862.792725 | \n",
+ " 658.719971 | \n",
+ " 141.984253 | \n",
+ " 149.052307 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.416893 | \n",
+ " 10.051785 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
320188 rows × 12 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "0 9.0 1.0 0.000000 565.566162 88.795326 173.917542 \n",
+ "1 10.0 1.0 0.000000 565.116699 88.801704 171.334290 \n",
+ "2 11.0 1.0 0.000000 564.874573 90.596596 177.199951 \n",
+ "3 12.0 1.0 0.000000 564.874268 90.928131 183.125732 \n",
+ "4 13.0 1.0 0.000000 569.931213 86.213280 180.774292 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 60159.0 3632.0 1830.709717 651.257446 150.202515 157.239746 \n",
+ "320184 60160.0 3632.0 1834.013672 649.612122 153.686646 160.874023 \n",
+ "320185 60161.0 3632.0 1845.373047 651.249756 147.178589 153.729248 \n",
+ "320186 60162.0 3632.0 1857.388916 650.908203 136.407349 142.354614 \n",
+ "320187 60163.0 3632.0 1862.792725 658.719971 141.984253 149.052307 \n",
+ "\n",
+ " x y state diff x_raw y_raw \n",
+ "0 0.855100 7.136193 2.0 NaN 0.881595 7.341152 \n",
+ "1 0.873132 7.235233 2.0 1.0 0.870703 7.309168 \n",
+ "2 0.890957 7.328989 2.0 1.0 0.901374 7.370044 \n",
+ "3 0.907784 7.418187 2.0 1.0 0.924360 7.432365 \n",
+ "4 0.923439 7.505012 2.0 1.0 0.906583 7.456334 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 2.0 NaN 15.214551 10.027093 \n",
+ "320184 15.033432 9.870472 2.0 1.0 15.244872 10.047117 \n",
+ "320185 15.211560 9.943236 2.0 1.0 15.318496 10.015218 \n",
+ "320186 15.377673 10.008965 2.0 1.0 15.400203 9.935355 \n",
+ "320187 15.538255 10.075935 2.0 1.0 15.416893 10.051785 \n",
+ "\n",
+ "[320188 rows x 12 columns]"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# del data['diff']\n",
+ "# recalculate diff\n",
+ "data['diff'] = data.groupby(['track_id'])['frame_id'].diff()\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " x_raw | \n",
+ " y_raw | \n",
+ " dt | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 9.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.566162 | \n",
+ " 88.795326 | \n",
+ " 173.917542 | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 0.881595 | \n",
+ " 7.341152 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.116699 | \n",
+ " 88.801704 | \n",
+ " 171.334290 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.870703 | \n",
+ " 7.309168 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 11.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874573 | \n",
+ " 90.596596 | \n",
+ " 177.199951 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.901374 | \n",
+ " 7.370044 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 12.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874268 | \n",
+ " 90.928131 | \n",
+ " 183.125732 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.924360 | \n",
+ " 7.432365 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 13.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 569.931213 | \n",
+ " 86.213280 | \n",
+ " 180.774292 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.906583 | \n",
+ " 7.456334 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 320183 | \n",
+ " 60159.0 | \n",
+ " 3632 | \n",
+ " 1830.709717 | \n",
+ " 651.257446 | \n",
+ " 150.202515 | \n",
+ " 157.239746 | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 15.214551 | \n",
+ " 10.027093 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 320184 | \n",
+ " 60160.0 | \n",
+ " 3632 | \n",
+ " 1834.013672 | \n",
+ " 649.612122 | \n",
+ " 153.686646 | \n",
+ " 160.874023 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.244872 | \n",
+ " 10.047117 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " 320185 | \n",
+ " 60161.0 | \n",
+ " 3632 | \n",
+ " 1845.373047 | \n",
+ " 651.249756 | \n",
+ " 147.178589 | \n",
+ " 153.729248 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.318496 | \n",
+ " 10.015218 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " 320186 | \n",
+ " 60162.0 | \n",
+ " 3632 | \n",
+ " 1857.388916 | \n",
+ " 650.908203 | \n",
+ " 136.407349 | \n",
+ " 142.354614 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.400203 | \n",
+ " 9.935355 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ " 320187 | \n",
+ " 60163.0 | \n",
+ " 3632 | \n",
+ " 1862.792725 | \n",
+ " 658.719971 | \n",
+ " 141.984253 | \n",
+ " 149.052307 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.416893 | \n",
+ " 10.051785 | \n",
+ " 0.083333 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
320188 rows × 13 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "0 9.0 1 0.000000 565.566162 88.795326 173.917542 \n",
+ "1 10.0 1 0.000000 565.116699 88.801704 171.334290 \n",
+ "2 11.0 1 0.000000 564.874573 90.596596 177.199951 \n",
+ "3 12.0 1 0.000000 564.874268 90.928131 183.125732 \n",
+ "4 13.0 1 0.000000 569.931213 86.213280 180.774292 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 60159.0 3632 1830.709717 651.257446 150.202515 157.239746 \n",
+ "320184 60160.0 3632 1834.013672 649.612122 153.686646 160.874023 \n",
+ "320185 60161.0 3632 1845.373047 651.249756 147.178589 153.729248 \n",
+ "320186 60162.0 3632 1857.388916 650.908203 136.407349 142.354614 \n",
+ "320187 60163.0 3632 1862.792725 658.719971 141.984253 149.052307 \n",
+ "\n",
+ " x y state diff x_raw y_raw dt \n",
+ "0 0.855100 7.136193 2.0 NaN 0.881595 7.341152 NaN \n",
+ "1 0.873132 7.235233 2.0 1.0 0.870703 7.309168 0.083333 \n",
+ "2 0.890957 7.328989 2.0 1.0 0.901374 7.370044 0.083333 \n",
+ "3 0.907784 7.418187 2.0 1.0 0.924360 7.432365 0.083333 \n",
+ "4 0.923439 7.505012 2.0 1.0 0.906583 7.456334 0.083333 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 2.0 NaN 15.214551 10.027093 NaN \n",
+ "320184 15.033432 9.870472 2.0 1.0 15.244872 10.047117 0.083333 \n",
+ "320185 15.211560 9.943236 2.0 1.0 15.318496 10.015218 0.083333 \n",
+ "320186 15.377673 10.008965 2.0 1.0 15.400203 9.935355 0.083333 \n",
+ "320187 15.538255 10.075935 2.0 1.0 15.416893 10.051785 0.083333 \n",
+ "\n",
+ "[320188 rows x 13 columns]"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "\n",
+ "# data['node_type'] = 'PEDESTRIAN' # compatibility with Trajectron++\n",
+ "# data['node_id'] = data['track_id'].astype(str)\n",
+ "data['track_id'] = pd.to_numeric(data['track_id'], downcast='integer')\n",
+ "\n",
+ "\n",
+ "data['dt'] = data['diff'] * (1/FPS)\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# position into an average coordinate system. (DO THESE NEED TO BE STORED?)\n",
+ "# Don't do this, messes up\n",
+ "# data['pos_x'] = data['pos_x'] - data['pos_x'].mean()\n",
+ "# data['pos_y'] = data['pos_y'] - data['pos_y'].mean()\n",
+ " \n",
+ "# data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "data['diff'].hist()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The dataset is a bit crappy because it has different frame step: ranging from predominantly 1 and 2 to sometimes have 3 and 4 as well. This inevitabily leads to difference in speed caluclations"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "if SRC_H is not None:\n",
+ " H = np.loadtxt(SRC_H, delimiter=',')\n",
+ "else:\n",
+ " H = None"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "No H given, probably already projected data?\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " x_raw | \n",
+ " y_raw | \n",
+ " dt | \n",
+ " proj_x | \n",
+ " proj_y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 9.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.566162 | \n",
+ " 88.795326 | \n",
+ " 173.917542 | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 0.881595 | \n",
+ " 7.341152 | \n",
+ " NaN | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.116699 | \n",
+ " 88.801704 | \n",
+ " 171.334290 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.870703 | \n",
+ " 7.309168 | \n",
+ " 0.083333 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 11.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874573 | \n",
+ " 90.596596 | \n",
+ " 177.199951 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.901374 | \n",
+ " 7.370044 | \n",
+ " 0.083333 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 12.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874268 | \n",
+ " 90.928131 | \n",
+ " 183.125732 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.924360 | \n",
+ " 7.432365 | \n",
+ " 0.083333 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 13.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 569.931213 | \n",
+ " 86.213280 | \n",
+ " 180.774292 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 0.906583 | \n",
+ " 7.456334 | \n",
+ " 0.083333 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 320183 | \n",
+ " 60159.0 | \n",
+ " 3632 | \n",
+ " 1830.709717 | \n",
+ " 651.257446 | \n",
+ " 150.202515 | \n",
+ " 157.239746 | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " 15.214551 | \n",
+ " 10.027093 | \n",
+ " NaN | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ "
\n",
+ " \n",
+ " 320184 | \n",
+ " 60160.0 | \n",
+ " 3632 | \n",
+ " 1834.013672 | \n",
+ " 649.612122 | \n",
+ " 153.686646 | \n",
+ " 160.874023 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.244872 | \n",
+ " 10.047117 | \n",
+ " 0.083333 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ "
\n",
+ " \n",
+ " 320185 | \n",
+ " 60161.0 | \n",
+ " 3632 | \n",
+ " 1845.373047 | \n",
+ " 651.249756 | \n",
+ " 147.178589 | \n",
+ " 153.729248 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.318496 | \n",
+ " 10.015218 | \n",
+ " 0.083333 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ "
\n",
+ " \n",
+ " 320186 | \n",
+ " 60162.0 | \n",
+ " 3632 | \n",
+ " 1857.388916 | \n",
+ " 650.908203 | \n",
+ " 136.407349 | \n",
+ " 142.354614 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.400203 | \n",
+ " 9.935355 | \n",
+ " 0.083333 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ "
\n",
+ " \n",
+ " 320187 | \n",
+ " 60163.0 | \n",
+ " 3632 | \n",
+ " 1862.792725 | \n",
+ " 658.719971 | \n",
+ " 141.984253 | \n",
+ " 149.052307 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " 15.416893 | \n",
+ " 10.051785 | \n",
+ " 0.083333 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
320188 rows × 15 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "0 9.0 1 0.000000 565.566162 88.795326 173.917542 \n",
+ "1 10.0 1 0.000000 565.116699 88.801704 171.334290 \n",
+ "2 11.0 1 0.000000 564.874573 90.596596 177.199951 \n",
+ "3 12.0 1 0.000000 564.874268 90.928131 183.125732 \n",
+ "4 13.0 1 0.000000 569.931213 86.213280 180.774292 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 60159.0 3632 1830.709717 651.257446 150.202515 157.239746 \n",
+ "320184 60160.0 3632 1834.013672 649.612122 153.686646 160.874023 \n",
+ "320185 60161.0 3632 1845.373047 651.249756 147.178589 153.729248 \n",
+ "320186 60162.0 3632 1857.388916 650.908203 136.407349 142.354614 \n",
+ "320187 60163.0 3632 1862.792725 658.719971 141.984253 149.052307 \n",
+ "\n",
+ " x y state diff x_raw y_raw dt \\\n",
+ "0 0.855100 7.136193 2.0 NaN 0.881595 7.341152 NaN \n",
+ "1 0.873132 7.235233 2.0 1.0 0.870703 7.309168 0.083333 \n",
+ "2 0.890957 7.328989 2.0 1.0 0.901374 7.370044 0.083333 \n",
+ "3 0.907784 7.418187 2.0 1.0 0.924360 7.432365 0.083333 \n",
+ "4 0.923439 7.505012 2.0 1.0 0.906583 7.456334 0.083333 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 2.0 NaN 15.214551 10.027093 NaN \n",
+ "320184 15.033432 9.870472 2.0 1.0 15.244872 10.047117 0.083333 \n",
+ "320185 15.211560 9.943236 2.0 1.0 15.318496 10.015218 0.083333 \n",
+ "320186 15.377673 10.008965 2.0 1.0 15.400203 9.935355 0.083333 \n",
+ "320187 15.538255 10.075935 2.0 1.0 15.416893 10.051785 0.083333 \n",
+ "\n",
+ " proj_x proj_y \n",
+ "0 0.855100 7.136193 \n",
+ "1 0.873132 7.235233 \n",
+ "2 0.890957 7.328989 \n",
+ "3 0.907784 7.418187 \n",
+ "4 0.923439 7.505012 \n",
+ "... ... ... \n",
+ "320183 14.840476 9.786501 \n",
+ "320184 15.033432 9.870472 \n",
+ "320185 15.211560 9.943236 \n",
+ "320186 15.377673 10.008965 \n",
+ "320187 15.538255 10.075935 \n",
+ "\n",
+ "[320188 rows x 15 columns]"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "if H is not None:\n",
+ " print(\"Projecting data\")\n",
+ " data['foot_x'] = data['pos_x'] + 0.5 * data['width']\n",
+ " data['foot_y'] = data['pos_y'] + 0.5 * data['height']\n",
+ " \n",
+ " transformed = cv2.perspectiveTransform(np.array([data[['foot_x','foot_y']].to_numpy()]),H)[0]\n",
+ " data['proj_x'], data['proj_y'] = transformed[:,0], transformed[:,1]\n",
+ " data['proj_x'] = data['proj_x'].div(100) # cm to m\n",
+ " data['proj_y'] = data['proj_y'].div(100) # cm to m\n",
+ " # and shift to mean (THES NEED TO BE STORED AND REUSED IN LIVE SETTING)\n",
+ " mean_x = data['proj_x'].mean()\n",
+ " mean_y = data['proj_y'].mean()\n",
+ " data['proj_x'] = data['proj_x'] - data['proj_x'].mean()\n",
+ " data['proj_y'] = data['proj_y'] - data['proj_y'].mean()\n",
+ "else:\n",
+ " print(\"No H given, probably already projected data?\")\n",
+ " mean_x = 0\n",
+ " mean_y = 0\n",
+ " data['proj_x'] = data['x']\n",
+ " data['proj_y'] = data['y']\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Deriving displacement, velocity and accelation from x and y\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " ... | \n",
+ " y_raw | \n",
+ " dt | \n",
+ " proj_x | \n",
+ " proj_y | \n",
+ " dx | \n",
+ " dy | \n",
+ " vx | \n",
+ " vy | \n",
+ " ax | \n",
+ " ay | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 9.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.566162 | \n",
+ " 88.795326 | \n",
+ " 173.917542 | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 7.341152 | \n",
+ " NaN | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.116699 | \n",
+ " 88.801704 | \n",
+ " 171.334290 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 7.309168 | \n",
+ " 0.083333 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 0.018032 | \n",
+ " 0.099039 | \n",
+ " 0.216383 | \n",
+ " 1.188473 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 11.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874573 | \n",
+ " 90.596596 | \n",
+ " 177.199951 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 7.370044 | \n",
+ " 0.083333 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 0.017825 | \n",
+ " 0.093756 | \n",
+ " 0.213899 | \n",
+ " 1.125077 | \n",
+ " -0.029812 | \n",
+ " -0.760753 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 12.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874268 | \n",
+ " 90.928131 | \n",
+ " 183.125732 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 7.432365 | \n",
+ " 0.083333 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 0.016827 | \n",
+ " 0.089198 | \n",
+ " 0.201924 | \n",
+ " 1.070371 | \n",
+ " -0.143699 | \n",
+ " -0.656466 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 13.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 569.931213 | \n",
+ " 86.213280 | \n",
+ " 180.774292 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 7.456334 | \n",
+ " 0.083333 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 0.015655 | \n",
+ " 0.086825 | \n",
+ " 0.187865 | \n",
+ " 1.041902 | \n",
+ " -0.168701 | \n",
+ " -0.341637 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 320183 | \n",
+ " 60159.0 | \n",
+ " 3632 | \n",
+ " 1830.709717 | \n",
+ " 651.257446 | \n",
+ " 150.202515 | \n",
+ " 157.239746 | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " 10.027093 | \n",
+ " NaN | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 320184 | \n",
+ " 60160.0 | \n",
+ " 3632 | \n",
+ " 1834.013672 | \n",
+ " 649.612122 | \n",
+ " 153.686646 | \n",
+ " 160.874023 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 10.047117 | \n",
+ " 0.083333 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 0.192955 | \n",
+ " 0.083971 | \n",
+ " 2.315463 | \n",
+ " 1.007656 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 320185 | \n",
+ " 60161.0 | \n",
+ " 3632 | \n",
+ " 1845.373047 | \n",
+ " 651.249756 | \n",
+ " 147.178589 | \n",
+ " 153.729248 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 10.015218 | \n",
+ " 0.083333 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 0.178128 | \n",
+ " 0.072764 | \n",
+ " 2.137542 | \n",
+ " 0.873173 | \n",
+ " -2.135059 | \n",
+ " -1.613797 | \n",
+ "
\n",
+ " \n",
+ " 320186 | \n",
+ " 60162.0 | \n",
+ " 3632 | \n",
+ " 1857.388916 | \n",
+ " 650.908203 | \n",
+ " 136.407349 | \n",
+ " 142.354614 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 9.935355 | \n",
+ " 0.083333 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 0.166113 | \n",
+ " 0.065728 | \n",
+ " 1.993352 | \n",
+ " 0.788742 | \n",
+ " -1.730279 | \n",
+ " -1.013172 | \n",
+ "
\n",
+ " \n",
+ " 320187 | \n",
+ " 60163.0 | \n",
+ " 3632 | \n",
+ " 1862.792725 | \n",
+ " 658.719971 | \n",
+ " 141.984253 | \n",
+ " 149.052307 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 10.051785 | \n",
+ " 0.083333 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 0.160582 | \n",
+ " 0.066971 | \n",
+ " 1.926987 | \n",
+ " 0.803649 | \n",
+ " -0.796376 | \n",
+ " 0.178886 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
320188 rows × 21 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "0 9.0 1 0.000000 565.566162 88.795326 173.917542 \n",
+ "1 10.0 1 0.000000 565.116699 88.801704 171.334290 \n",
+ "2 11.0 1 0.000000 564.874573 90.596596 177.199951 \n",
+ "3 12.0 1 0.000000 564.874268 90.928131 183.125732 \n",
+ "4 13.0 1 0.000000 569.931213 86.213280 180.774292 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 60159.0 3632 1830.709717 651.257446 150.202515 157.239746 \n",
+ "320184 60160.0 3632 1834.013672 649.612122 153.686646 160.874023 \n",
+ "320185 60161.0 3632 1845.373047 651.249756 147.178589 153.729248 \n",
+ "320186 60162.0 3632 1857.388916 650.908203 136.407349 142.354614 \n",
+ "320187 60163.0 3632 1862.792725 658.719971 141.984253 149.052307 \n",
+ "\n",
+ " x y state diff ... y_raw dt \\\n",
+ "0 0.855100 7.136193 2.0 NaN ... 7.341152 NaN \n",
+ "1 0.873132 7.235233 2.0 1.0 ... 7.309168 0.083333 \n",
+ "2 0.890957 7.328989 2.0 1.0 ... 7.370044 0.083333 \n",
+ "3 0.907784 7.418187 2.0 1.0 ... 7.432365 0.083333 \n",
+ "4 0.923439 7.505012 2.0 1.0 ... 7.456334 0.083333 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 2.0 NaN ... 10.027093 NaN \n",
+ "320184 15.033432 9.870472 2.0 1.0 ... 10.047117 0.083333 \n",
+ "320185 15.211560 9.943236 2.0 1.0 ... 10.015218 0.083333 \n",
+ "320186 15.377673 10.008965 2.0 1.0 ... 9.935355 0.083333 \n",
+ "320187 15.538255 10.075935 2.0 1.0 ... 10.051785 0.083333 \n",
+ "\n",
+ " proj_x proj_y dx dy vx vy \\\n",
+ "0 0.855100 7.136193 NaN NaN NaN NaN \n",
+ "1 0.873132 7.235233 0.018032 0.099039 0.216383 1.188473 \n",
+ "2 0.890957 7.328989 0.017825 0.093756 0.213899 1.125077 \n",
+ "3 0.907784 7.418187 0.016827 0.089198 0.201924 1.070371 \n",
+ "4 0.923439 7.505012 0.015655 0.086825 0.187865 1.041902 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 NaN NaN NaN NaN \n",
+ "320184 15.033432 9.870472 0.192955 0.083971 2.315463 1.007656 \n",
+ "320185 15.211560 9.943236 0.178128 0.072764 2.137542 0.873173 \n",
+ "320186 15.377673 10.008965 0.166113 0.065728 1.993352 0.788742 \n",
+ "320187 15.538255 10.075935 0.160582 0.066971 1.926987 0.803649 \n",
+ "\n",
+ " ax ay \n",
+ "0 NaN NaN \n",
+ "1 NaN NaN \n",
+ "2 -0.029812 -0.760753 \n",
+ "3 -0.143699 -0.656466 \n",
+ "4 -0.168701 -0.341637 \n",
+ "... ... ... \n",
+ "320183 NaN NaN \n",
+ "320184 NaN NaN \n",
+ "320185 -2.135059 -1.613797 \n",
+ "320186 -1.730279 -1.013172 \n",
+ "320187 -0.796376 0.178886 \n",
+ "\n",
+ "[320188 rows x 21 columns]"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "print(\"Deriving displacement, velocity and accelation from x and y\")\n",
+ "data['dx'] = data.groupby(['track_id'])['proj_x'].diff()\n",
+ "data['dy'] = data.groupby(['track_id'])['proj_y'].diff()\n",
+ "data['vx'] = data['dx'].div(data['dt'], axis=0)\n",
+ "data['vy'] = data['dy'].div(data['dt'], axis=0)\n",
+ "\n",
+ "data['ax'] = data.groupby(['track_id'])['vx'].diff().div(data['dt'], axis=0)\n",
+ "data['ay'] = data.groupby(['track_id'])['vy'].diff().div(data['dt'], axis=0)\n",
+ "\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " ... | \n",
+ " dx | \n",
+ " dy | \n",
+ " vx | \n",
+ " vy | \n",
+ " ax | \n",
+ " ay | \n",
+ " v | \n",
+ " a | \n",
+ " heading | \n",
+ " d_heading | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 9.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.566162 | \n",
+ " 88.795326 | \n",
+ " 173.917542 | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.116699 | \n",
+ " 88.801704 | \n",
+ " 171.334290 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.018032 | \n",
+ " 0.099039 | \n",
+ " 0.216383 | \n",
+ " 1.188473 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 1.208011 | \n",
+ " NaN | \n",
+ " 79.681298 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 11.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874573 | \n",
+ " 90.596596 | \n",
+ " 177.199951 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.017825 | \n",
+ " 0.093756 | \n",
+ " 0.213899 | \n",
+ " 1.125077 | \n",
+ " -0.029812 | \n",
+ " -0.760753 | \n",
+ " 1.145230 | \n",
+ " -0.753373 | \n",
+ " 79.235449 | \n",
+ " -5.350188 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 12.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874268 | \n",
+ " 90.928131 | \n",
+ " 183.125732 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.016827 | \n",
+ " 0.089198 | \n",
+ " 0.201924 | \n",
+ " 1.070371 | \n",
+ " -0.143699 | \n",
+ " -0.656466 | \n",
+ " 1.089251 | \n",
+ " -0.671740 | \n",
+ " 79.316807 | \n",
+ " 0.976297 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 13.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 569.931213 | \n",
+ " 86.213280 | \n",
+ " 180.774292 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.015655 | \n",
+ " 0.086825 | \n",
+ " 0.187865 | \n",
+ " 1.041902 | \n",
+ " -0.168701 | \n",
+ " -0.341637 | \n",
+ " 1.058703 | \n",
+ " -0.366576 | \n",
+ " 79.778828 | \n",
+ " 5.544252 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 320183 | \n",
+ " 60159.0 | \n",
+ " 3632 | \n",
+ " 1830.709717 | \n",
+ " 651.257446 | \n",
+ " 150.202515 | \n",
+ " 157.239746 | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 320184 | \n",
+ " 60160.0 | \n",
+ " 3632 | \n",
+ " 1834.013672 | \n",
+ " 649.612122 | \n",
+ " 153.686646 | \n",
+ " 160.874023 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.192955 | \n",
+ " 0.083971 | \n",
+ " 2.315463 | \n",
+ " 1.007656 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2.525221 | \n",
+ " NaN | \n",
+ " 23.517970 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 320185 | \n",
+ " 60161.0 | \n",
+ " 3632 | \n",
+ " 1845.373047 | \n",
+ " 651.249756 | \n",
+ " 147.178589 | \n",
+ " 153.729248 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.178128 | \n",
+ " 0.072764 | \n",
+ " 2.137542 | \n",
+ " 0.873173 | \n",
+ " -2.135059 | \n",
+ " -1.613797 | \n",
+ " 2.309007 | \n",
+ " -2.594562 | \n",
+ " 22.219713 | \n",
+ " -15.579091 | \n",
+ "
\n",
+ " \n",
+ " 320186 | \n",
+ " 60162.0 | \n",
+ " 3632 | \n",
+ " 1857.388916 | \n",
+ " 650.908203 | \n",
+ " 136.407349 | \n",
+ " 142.354614 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.166113 | \n",
+ " 0.065728 | \n",
+ " 1.993352 | \n",
+ " 0.788742 | \n",
+ " -1.730279 | \n",
+ " -1.013172 | \n",
+ " 2.143727 | \n",
+ " -1.983366 | \n",
+ " 21.588019 | \n",
+ " -7.580324 | \n",
+ "
\n",
+ " \n",
+ " 320187 | \n",
+ " 60163.0 | \n",
+ " 3632 | \n",
+ " 1862.792725 | \n",
+ " 658.719971 | \n",
+ " 141.984253 | \n",
+ " 149.052307 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.160582 | \n",
+ " 0.066971 | \n",
+ " 1.926987 | \n",
+ " 0.803649 | \n",
+ " -0.796376 | \n",
+ " 0.178886 | \n",
+ " 2.087853 | \n",
+ " -0.670484 | \n",
+ " 22.638547 | \n",
+ " 12.606340 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
320188 rows × 25 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "0 9.0 1 0.000000 565.566162 88.795326 173.917542 \n",
+ "1 10.0 1 0.000000 565.116699 88.801704 171.334290 \n",
+ "2 11.0 1 0.000000 564.874573 90.596596 177.199951 \n",
+ "3 12.0 1 0.000000 564.874268 90.928131 183.125732 \n",
+ "4 13.0 1 0.000000 569.931213 86.213280 180.774292 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 60159.0 3632 1830.709717 651.257446 150.202515 157.239746 \n",
+ "320184 60160.0 3632 1834.013672 649.612122 153.686646 160.874023 \n",
+ "320185 60161.0 3632 1845.373047 651.249756 147.178589 153.729248 \n",
+ "320186 60162.0 3632 1857.388916 650.908203 136.407349 142.354614 \n",
+ "320187 60163.0 3632 1862.792725 658.719971 141.984253 149.052307 \n",
+ "\n",
+ " x y state diff ... dx dy vx \\\n",
+ "0 0.855100 7.136193 2.0 NaN ... NaN NaN NaN \n",
+ "1 0.873132 7.235233 2.0 1.0 ... 0.018032 0.099039 0.216383 \n",
+ "2 0.890957 7.328989 2.0 1.0 ... 0.017825 0.093756 0.213899 \n",
+ "3 0.907784 7.418187 2.0 1.0 ... 0.016827 0.089198 0.201924 \n",
+ "4 0.923439 7.505012 2.0 1.0 ... 0.015655 0.086825 0.187865 \n",
+ "... ... ... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 2.0 NaN ... NaN NaN NaN \n",
+ "320184 15.033432 9.870472 2.0 1.0 ... 0.192955 0.083971 2.315463 \n",
+ "320185 15.211560 9.943236 2.0 1.0 ... 0.178128 0.072764 2.137542 \n",
+ "320186 15.377673 10.008965 2.0 1.0 ... 0.166113 0.065728 1.993352 \n",
+ "320187 15.538255 10.075935 2.0 1.0 ... 0.160582 0.066971 1.926987 \n",
+ "\n",
+ " vy ax ay v a heading d_heading \n",
+ "0 NaN NaN NaN NaN NaN NaN NaN \n",
+ "1 1.188473 NaN NaN 1.208011 NaN 79.681298 NaN \n",
+ "2 1.125077 -0.029812 -0.760753 1.145230 -0.753373 79.235449 -5.350188 \n",
+ "3 1.070371 -0.143699 -0.656466 1.089251 -0.671740 79.316807 0.976297 \n",
+ "4 1.041902 -0.168701 -0.341637 1.058703 -0.366576 79.778828 5.544252 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "320183 NaN NaN NaN NaN NaN NaN NaN \n",
+ "320184 1.007656 NaN NaN 2.525221 NaN 23.517970 NaN \n",
+ "320185 0.873173 -2.135059 -1.613797 2.309007 -2.594562 22.219713 -15.579091 \n",
+ "320186 0.788742 -1.730279 -1.013172 2.143727 -1.983366 21.588019 -7.580324 \n",
+ "320187 0.803649 -0.796376 0.178886 2.087853 -0.670484 22.638547 12.606340 \n",
+ "\n",
+ "[320188 rows x 25 columns]"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# then we need the velocity itself\n",
+ "data['v'] = np.sqrt(data['vx'].pow(2) + data['vy'].pow(2))\n",
+ "# and derive acceleration\n",
+ "data['a'] = data.groupby(['track_id'])['v'].diff().div(data['dt'], axis=0)\n",
+ "\n",
+ "# we can calculate heading based on the velocity components\n",
+ "data['heading'] = (np.arctan2(data['vy'], data['vx']) * 180 / np.pi) % 360\n",
+ "\n",
+ "# and derive it to get the rate of change of the heading\n",
+ "data['d_heading'] = data.groupby(['track_id'])['heading'].diff().div(data['dt'], axis=0)\n",
+ "\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " frame_id | \n",
+ " track_id | \n",
+ " l | \n",
+ " t | \n",
+ " w | \n",
+ " h | \n",
+ " x | \n",
+ " y | \n",
+ " state | \n",
+ " diff | \n",
+ " ... | \n",
+ " dx | \n",
+ " dy | \n",
+ " vx | \n",
+ " vy | \n",
+ " ax | \n",
+ " ay | \n",
+ " v | \n",
+ " a | \n",
+ " heading | \n",
+ " d_heading | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 9.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.566162 | \n",
+ " 88.795326 | \n",
+ " 173.917542 | \n",
+ " 0.855100 | \n",
+ " 7.136193 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 1.208011 | \n",
+ " -0.753373 | \n",
+ " 79.681298 | \n",
+ " -5.350188 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 10.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 565.116699 | \n",
+ " 88.801704 | \n",
+ " 171.334290 | \n",
+ " 0.873132 | \n",
+ " 7.235233 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.018032 | \n",
+ " 0.099039 | \n",
+ " 0.216383 | \n",
+ " 1.188473 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 1.208011 | \n",
+ " -0.753373 | \n",
+ " 79.681298 | \n",
+ " -5.350188 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 11.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874573 | \n",
+ " 90.596596 | \n",
+ " 177.199951 | \n",
+ " 0.890957 | \n",
+ " 7.328989 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.017825 | \n",
+ " 0.093756 | \n",
+ " 0.213899 | \n",
+ " 1.125077 | \n",
+ " -0.029812 | \n",
+ " -0.760753 | \n",
+ " 1.145230 | \n",
+ " -0.753373 | \n",
+ " 79.235449 | \n",
+ " -5.350188 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 12.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 564.874268 | \n",
+ " 90.928131 | \n",
+ " 183.125732 | \n",
+ " 0.907784 | \n",
+ " 7.418187 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.016827 | \n",
+ " 0.089198 | \n",
+ " 0.201924 | \n",
+ " 1.070371 | \n",
+ " -0.143699 | \n",
+ " -0.656466 | \n",
+ " 1.089251 | \n",
+ " -0.671740 | \n",
+ " 79.316807 | \n",
+ " 0.976297 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 13.0 | \n",
+ " 1 | \n",
+ " 0.000000 | \n",
+ " 569.931213 | \n",
+ " 86.213280 | \n",
+ " 180.774292 | \n",
+ " 0.923439 | \n",
+ " 7.505012 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.015655 | \n",
+ " 0.086825 | \n",
+ " 0.187865 | \n",
+ " 1.041902 | \n",
+ " -0.168701 | \n",
+ " -0.341637 | \n",
+ " 1.058703 | \n",
+ " -0.366576 | \n",
+ " 79.778828 | \n",
+ " 5.544252 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 320183 | \n",
+ " 60159.0 | \n",
+ " 3632 | \n",
+ " 1830.709717 | \n",
+ " 651.257446 | \n",
+ " 150.202515 | \n",
+ " 157.239746 | \n",
+ " 14.840476 | \n",
+ " 9.786501 | \n",
+ " 2.0 | \n",
+ " NaN | \n",
+ " ... | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2.525221 | \n",
+ " -2.594562 | \n",
+ " 23.517970 | \n",
+ " -15.579091 | \n",
+ "
\n",
+ " \n",
+ " 320184 | \n",
+ " 60160.0 | \n",
+ " 3632 | \n",
+ " 1834.013672 | \n",
+ " 649.612122 | \n",
+ " 153.686646 | \n",
+ " 160.874023 | \n",
+ " 15.033432 | \n",
+ " 9.870472 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.192955 | \n",
+ " 0.083971 | \n",
+ " 2.315463 | \n",
+ " 1.007656 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 2.525221 | \n",
+ " -2.594562 | \n",
+ " 23.517970 | \n",
+ " -15.579091 | \n",
+ "
\n",
+ " \n",
+ " 320185 | \n",
+ " 60161.0 | \n",
+ " 3632 | \n",
+ " 1845.373047 | \n",
+ " 651.249756 | \n",
+ " 147.178589 | \n",
+ " 153.729248 | \n",
+ " 15.211560 | \n",
+ " 9.943236 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.178128 | \n",
+ " 0.072764 | \n",
+ " 2.137542 | \n",
+ " 0.873173 | \n",
+ " -2.135059 | \n",
+ " -1.613797 | \n",
+ " 2.309007 | \n",
+ " -2.594562 | \n",
+ " 22.219713 | \n",
+ " -15.579091 | \n",
+ "
\n",
+ " \n",
+ " 320186 | \n",
+ " 60162.0 | \n",
+ " 3632 | \n",
+ " 1857.388916 | \n",
+ " 650.908203 | \n",
+ " 136.407349 | \n",
+ " 142.354614 | \n",
+ " 15.377673 | \n",
+ " 10.008965 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.166113 | \n",
+ " 0.065728 | \n",
+ " 1.993352 | \n",
+ " 0.788742 | \n",
+ " -1.730279 | \n",
+ " -1.013172 | \n",
+ " 2.143727 | \n",
+ " -1.983366 | \n",
+ " 21.588019 | \n",
+ " -7.580324 | \n",
+ "
\n",
+ " \n",
+ " 320187 | \n",
+ " 60163.0 | \n",
+ " 3632 | \n",
+ " 1862.792725 | \n",
+ " 658.719971 | \n",
+ " 141.984253 | \n",
+ " 149.052307 | \n",
+ " 15.538255 | \n",
+ " 10.075935 | \n",
+ " 2.0 | \n",
+ " 1.0 | \n",
+ " ... | \n",
+ " 0.160582 | \n",
+ " 0.066971 | \n",
+ " 1.926987 | \n",
+ " 0.803649 | \n",
+ " -0.796376 | \n",
+ " 0.178886 | \n",
+ " 2.087853 | \n",
+ " -0.670484 | \n",
+ " 22.638547 | \n",
+ " 12.606340 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
320188 rows × 25 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " frame_id track_id l t w h \\\n",
+ "0 9.0 1 0.000000 565.566162 88.795326 173.917542 \n",
+ "1 10.0 1 0.000000 565.116699 88.801704 171.334290 \n",
+ "2 11.0 1 0.000000 564.874573 90.596596 177.199951 \n",
+ "3 12.0 1 0.000000 564.874268 90.928131 183.125732 \n",
+ "4 13.0 1 0.000000 569.931213 86.213280 180.774292 \n",
+ "... ... ... ... ... ... ... \n",
+ "320183 60159.0 3632 1830.709717 651.257446 150.202515 157.239746 \n",
+ "320184 60160.0 3632 1834.013672 649.612122 153.686646 160.874023 \n",
+ "320185 60161.0 3632 1845.373047 651.249756 147.178589 153.729248 \n",
+ "320186 60162.0 3632 1857.388916 650.908203 136.407349 142.354614 \n",
+ "320187 60163.0 3632 1862.792725 658.719971 141.984253 149.052307 \n",
+ "\n",
+ " x y state diff ... dx dy vx \\\n",
+ "0 0.855100 7.136193 2.0 NaN ... NaN NaN NaN \n",
+ "1 0.873132 7.235233 2.0 1.0 ... 0.018032 0.099039 0.216383 \n",
+ "2 0.890957 7.328989 2.0 1.0 ... 0.017825 0.093756 0.213899 \n",
+ "3 0.907784 7.418187 2.0 1.0 ... 0.016827 0.089198 0.201924 \n",
+ "4 0.923439 7.505012 2.0 1.0 ... 0.015655 0.086825 0.187865 \n",
+ "... ... ... ... ... ... ... ... ... \n",
+ "320183 14.840476 9.786501 2.0 NaN ... NaN NaN NaN \n",
+ "320184 15.033432 9.870472 2.0 1.0 ... 0.192955 0.083971 2.315463 \n",
+ "320185 15.211560 9.943236 2.0 1.0 ... 0.178128 0.072764 2.137542 \n",
+ "320186 15.377673 10.008965 2.0 1.0 ... 0.166113 0.065728 1.993352 \n",
+ "320187 15.538255 10.075935 2.0 1.0 ... 0.160582 0.066971 1.926987 \n",
+ "\n",
+ " vy ax ay v a heading d_heading \n",
+ "0 NaN NaN NaN 1.208011 -0.753373 79.681298 -5.350188 \n",
+ "1 1.188473 NaN NaN 1.208011 -0.753373 79.681298 -5.350188 \n",
+ "2 1.125077 -0.029812 -0.760753 1.145230 -0.753373 79.235449 -5.350188 \n",
+ "3 1.070371 -0.143699 -0.656466 1.089251 -0.671740 79.316807 0.976297 \n",
+ "4 1.041902 -0.168701 -0.341637 1.058703 -0.366576 79.778828 5.544252 \n",
+ "... ... ... ... ... ... ... ... \n",
+ "320183 NaN NaN NaN 2.525221 -2.594562 23.517970 -15.579091 \n",
+ "320184 1.007656 NaN NaN 2.525221 -2.594562 23.517970 -15.579091 \n",
+ "320185 0.873173 -2.135059 -1.613797 2.309007 -2.594562 22.219713 -15.579091 \n",
+ "320186 0.788742 -1.730279 -1.013172 2.143727 -1.983366 21.588019 -7.580324 \n",
+ "320187 0.803649 -0.796376 0.178886 2.087853 -0.670484 22.638547 12.606340 \n",
+ "\n",
+ "[320188 rows x 25 columns]"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# we can backfill the v and a, so that our model can make estimations\n",
+ "# based on these assumed values\n",
+ "data['v'] = data.groupby(['track_id'])['v'].bfill()\n",
+ "data['a'] = data.groupby(['track_id'])['a'].bfill()\n",
+ "\n",
+ "data['heading'] = data.groupby(['track_id'])['heading'].bfill()\n",
+ "data['d_heading'] = data.groupby(['track_id'])['d_heading'].bfill()\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "312423 items in filtered set, out of 320188 in total set\n"
+ ]
+ }
+ ],
+ "source": [
+ "filtered_data = data.groupby(['track_id']).filter(lambda group: len(group) >= window+1) # a lenght of 3 is neccessary to have all relevant derivatives of position\n",
+ "filtered_data = filtered_data.set_index(['track_id', 'frame_id']) # use for quick access\n",
+ "print(filtered_data.shape[0], \"items in filtered set, out of\", data.shape[0], \"in total set\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1263 training tracks, 316 test tracks\n"
+ ]
+ }
+ ],
+ "source": [
+ "track_ids = filtered_data.index.unique('track_id').to_numpy()\n",
+ "np.random.shuffle(track_ids)\n",
+ "test_offset_idx = int(len(track_ids) * .8)\n",
+ "training_ids, test_ids = track_ids[:test_offset_idx], track_ids[test_offset_idx:]\n",
+ "print(f\"{len(training_ids)} training tracks, {len(test_ids)} test tracks\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "here, draw out a sample track to see if it looks alright. **unfortunately the imate isn't mapped properly**."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1058\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0 0\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "