{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from augmentations.augment import __preprocess_row_sign" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 path\n", "1 participant_id\n", "2 sequence_id\n", "3 sign\n", "4 labels\n", "5 nose_X\n", "6 nose_Y\n", "7 leftEye_X\n", "8 leftEye_Y\n", "9 rightEye_X\n", "10 rightEye_Y\n", "11 leftEar_X\n", "12 leftEar_Y\n", "13 rightEar_X\n", "14 rightEar_Y\n", "15 leftShoulder_X\n", "16 leftShoulder_Y\n", "17 rightShoulder_X\n", "18 rightShoulder_Y\n", "19 leftElbow_X\n", "20 leftElbow_Y\n", "21 rightElbow_X\n", "22 rightElbow_Y\n", "23 leftWrist_X\n", "24 leftWrist_Y\n", "25 rightWrist_X\n", "26 rightWrist_Y\n", "27 wrist_left_X\n", "28 wrist_left_Y\n", "29 thumbCMC_left_X\n", "30 thumbCMC_left_Y\n", "31 thumbMP_left_X\n", "32 thumbMP_left_Y\n", "33 thumbIP_left_X\n", "34 thumbIP_left_Y\n", "35 thumbTip_left_X\n", "36 thumbTip_left_Y\n", "37 indexMCP_left_X\n", "38 indexMCP_left_Y\n", "39 indexPIP_left_X\n", "40 indexPIP_left_Y\n", "41 indexDIP_left_X\n", "42 indexDIP_left_Y\n", "43 indexTip_left_X\n", "44 indexTip_left_Y\n", "45 middleMCP_left_X\n", "46 middleMCP_left_Y\n", "47 middlePIP_left_X\n", "48 middlePIP_left_Y\n", "49 middleDIP_left_X\n", "50 middleDIP_left_Y\n", "51 middleTip_left_X\n", "52 middleTip_left_Y\n", "53 ringMCP_left_X\n", "54 ringMCP_left_Y\n", "55 ringPIP_left_X\n", "56 ringPIP_left_Y\n", "57 ringDIP_left_X\n", "58 ringDIP_left_Y\n", "59 ringTip_left_X\n", "60 ringTip_left_Y\n", "61 littleMCP_left_X\n", "62 littleMCP_left_Y\n", "63 littlePIP_left_X\n", "64 littlePIP_left_Y\n", "65 littleDIP_left_X\n", "66 littleDIP_left_Y\n", "67 littleTip_left_X\n", "68 littleTip_left_Y\n", "69 wrist_right_X\n", "70 wrist_right_Y\n", "71 thumbCMC_right_X\n", "72 thumbCMC_right_Y\n", "73 thumbMP_right_X\n", "74 thumbMP_right_Y\n", "75 thumbIP_right_X\n", "76 thumbIP_right_Y\n", "77 thumbTip_right_X\n", "78 thumbTip_right_Y\n", "79 indexMCP_right_X\n", "80 indexMCP_right_Y\n", "81 indexPIP_right_X\n", "82 indexPIP_right_Y\n", "83 indexDIP_right_X\n", "84 indexDIP_right_Y\n", "85 indexTip_right_X\n", "86 indexTip_right_Y\n", "87 middleMCP_right_X\n", "88 middleMCP_right_Y\n", "89 middlePIP_right_X\n", "90 middlePIP_right_Y\n", "91 middleDIP_right_X\n", "92 middleDIP_right_Y\n", "93 middleTip_right_X\n", "94 middleTip_right_Y\n", "95 ringMCP_right_X\n", "96 ringMCP_right_Y\n", "97 ringPIP_right_X\n", "98 ringPIP_right_Y\n", "99 ringDIP_right_X\n", "100 ringDIP_right_Y\n", "101 ringTip_right_X\n", "102 ringTip_right_Y\n", "103 littleMCP_right_X\n", "104 littleMCP_right_Y\n", "105 littlePIP_right_X\n", "106 littlePIP_right_Y\n", "107 littleDIP_right_X\n", "108 littleDIP_right_Y\n", "109 littleTip_right_X\n", "110 littleTip_right_Y\n", "111 neck_X\n", "112 neck_Y\n" ] } ], "source": [ "df = pd.read_csv('data/processed/spoter_train.csv')\n", "for i, e in enumerate(df.columns):\n", " print(i, e)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "# dataset = 'data/processed/spoter_train.csv'\n", "\n", "def plot(dataset):\n", " df = pd.read_csv(dataset)\n", " # get columns 0 - 26\n", " # df = df.iloc[:, 5:27]\n", "\n", "\n", " # df = df.iloc[:, 27:69]\n", " # df = df.iloc[:, 69:]\n", "\n", " if 'wlasl' in dataset:\n", " df = df.iloc[:, :108]\n", "\n", " else:\n", " df = df.iloc[:, 5:]\n", "\n", "\n", " # get first row\n", " row = df.iloc[20]\n", "\n", " # use matplotlib to create a scatter plot (the columns are X, Y, X, Y, X, Y, X, Y)\n", " import matplotlib.pyplot as plt\n", " import ast\n", "\n", " def __process_row(coords):\n", " coords = coords.tolist()\n", "\n", " new_coords = [] # string to list\n", "\n", " for x in coords:\n", " new_coords.append(ast.literal_eval(x))\n", "\n", " coords = [x[0] for x in new_coords]\n", "\n", " return [float(x) for x in coords]\n", "\n", "\n", " # extract X and Y coordinates from the row\n", " x_coords = row.iloc[::2] # columns 0, 2, 4, 6, ...\n", " y_coords = row.iloc[1::2] # columns 1, 3, 5, 7, ...\n", "\n", " x_coords = __process_row(x_coords)\n", " y_coords = __process_row(y_coords)\n", "\n", " # create a scatter plot\n", " plt.scatter(x_coords, y_coords)\n", "\n", "\n", " plt.xlim(0, 1)\n", " plt.ylim(0, 1)\n", " \n", " # add axis labels and a title\n", " plt.xlabel('X')\n", " plt.ylabel('Y')\n", " plt.title('Scatter plot of X and Y coordinates')\n", "\n", " # show the plot\n", " plt.show()\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6QklEQVR4nO3de1yUZf7/8TegzHjgoCEHjURNMzyRKCweMg3DdDFrLdPylJtpZim1q6aJh0rXyqU8a6V9bV3dytoOhgc2tzXZxRVtPaQdxLRWUDPBNEWZ6/eHP2YdAQUDBuZ+PR+PeTyaa677vj/3XEPz9r6v+x4vY4wRAACABXm7uwAAAAB3IQgBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBHuC2227Tbbfd5u4yXOTk5Kh///667rrr5OXlpZSUFHeXVC4iIiI0bNgwd5dRJVz+uTt48KC8vLy0YsUKt9UElBVBCFXWrl271L9/fzVu3Fh2u12NGjVSz549NW/evArb5qpVq4r9wv7vf/+radOmaefOnRW2bXc4c+aMpk2bps2bN5f7usePH6/169dr0qRJWrlypXr16lVsv40bN8rLy0vTp08v8lpWVpZq166t/v37l3t9FWX16tXy8vLSkiVLin199OjRqlmzpj7//PNKrsxzPP/883rvvffcXQY8hQGqoM8++8z4+vqaG2+80cycOdMsW7bMTJ061dxxxx2mWbNmFbbdPn36mMaNGxdp37Ztm5Fkli9fXmHb/iW6detmunXrVubljh07ZiSZ5OTkcq8pJCTEPPDAA6XqO2jQIGOz2cz+/ftd2nv16mX8/f3N999/X+71XavGjRuboUOHXrFPr169TGBgoMnOznZp/9e//mW8vb3N7373uwqssPJc/rlzOBzm559/NhcuXKjQ7dapU+eqYwCUVg13BzGgOM8995wCAgK0bds2BQYGurx29OhR9xRVAU6fPq06deq4u4wKcfTo0SJjV5I//vGP+vjjjzVq1Cj97W9/k3TxyEpqaqpeeeUVNWzYsAIrLX+LFi1Sq1atNH78eK1atUqSVFBQoEceeUQ33HCDpk2b5t4CS6msn08vLy/Z7fYKrAioAO5OYkBxbrrpJnPbbbeVuv/KlStNx44dTa1atUxgYKDp2rWrWb9+vfP19957z/Tu3duEhYUZX19f07RpUzNjxgyXf7l269bNSHJ5NG7c2HzyySdF2nXZ0aF//vOfJiEhwfj7+5tatWqZW2+91WzZssWlxuTkZCPJ7NmzxwwcONAEBgaaqKioEvdp+fLlRpL5+9//bkaOHGnq169v/Pz8zODBg82JEydc+hZ3RCgnJ8c89NBDJjg42NhsNtO2bVuzYsUK5+tZWVnF7tfVjg598803pn///qZevXqmVq1aJjY21nz44YdF6r78cTVLly41ksyKFSvMjz/+aEJDQ03Hjh1NQUHBVZc9ePCgGT16tGnRooWx2+2mfv36pn///iYrK8ulX2FtW7ZsMePHjzdBQUGmdu3apl+/fubo0aMufR0Oh5k5c6Zp1KiRqVWrlrntttvM7t27S3VEyBhj5syZYySZDRs2GGOMmTt3rpFkPv7446sua8zFz9Sdd95pAgMDTe3atU2bNm1MSkqKS5+0tDTTpUsXU7t2bRMQEGD69u1r9u7dW2RdmZmZplevXsbPz8/UqVPH9OjRw6Snpxf73mzevNmMHj3aNGjQwAQGBjpfX7JkiWnatKmx2+2mY8eO5tNPPy3yuSv8TF36tzF06FBTp04d891335m77rrL1KlTxwQFBZknn3yyyJGjF154wcTFxZn69esbu91u2rdvb9566y2XPsV9ti4dj++++84MHz7cBAcHG19fXxMZGWlee+21Iu/JK6+8YiIjI53/z4iOjjZ/+tOfShwPeC6CEKqkO+64w/j5+Zldu3Zdte+0adOMJNOpUyfzwgsvmJdfftkMGjTITJgwwdmnX79+5r777jMvvPCCWbRokbn33nuNJPPUU085+2zYsMFERUWZoKAgs3LlSrNy5Urz7rvvmuzsbDNjxgwjyYwcOdL52jfffGOMufhl5Ovra+Li4sxLL71k/vjHP5q2bdsaX19f869//cu5/sIgFBkZae666y6zcOFCs2DBghL3q/CLqU2bNqZr167mlVdeMWPGjDHe3t7m1ltvNQ6Hw9n38i+kM2fOmJtvvtnUrFnTjB8/3rzyyiuma9euRpLzy/Snn34yixYtMpLM3Xff7dyvzz//vMSasrOzTUhIiPHz8zOTJ082c+fONe3atTPe3t5m7dq1xpiLQWnlypVGkunZs6dzvVfjcDhM586dTVBQkBk4cKDx8fExmZmZV13OGGPeeust065dOzN16lSzdOlS8/TTT5t69eqZxo0bm9OnTxd5T2+55RbTo0cPM2/ePPPkk08aHx8fc99997msc8qUKUaS6d27t5k/f7556KGHTMOGDU1QUFCpgtD58+dNu3btTLNmzcxXX31l6tata+6///5S7c+GDRuMr6+vady4sUlOTjaLFi0yjz/+uImPj3f22bhxo6lRo4Zp0aKFmTNnjpk+fboJCgoy9erVcwmAu3fvNnXq1DFhYWFm5syZZvbs2aZJkybGZrOZf/7zn0Xem8jISNOtWzczb948M3v2bGOMMa+++qrzb+yVV14x48aNM4GBgaZp06alCkJ2u920atXKPPTQQ2bRokXmN7/5jZFkFi5c6LLf119/vXn00UfN/Pnzzdy5c01MTIyR5BK0V65caWw2m+natavzs7V161ZjzMXP5/XXX2/Cw8PNjBkzzKJFi0zfvn2NJPPHP/7RuY7C0N2/f3+zZMkS8/LLL5sRI0aYxx9/vFTjA89CEEKVtGHDBuPj42N8fHxMXFyc+f3vf2/Wr19v8vPzXfp99dVXxtvb29x9991FjhxcGhTOnDlTZBuPPPKIqV27tjl79qyzraxzhBwOh2nevLlJSEgosr0mTZqYnj17OtsKg9DAgQNL9R4UfjFFR0e77HfhkYa//vWvzrbLg1BKSoqRZN58801nW35+vomLizN169Y1eXl5xpiyzxEaN26ckWT+8Y9/ONtOnTplmjRpYiIiIlzGQJIZM2ZMqdZbaPfu3aZmzZpGkhk3blyplytufNPT040k83//93/OtsL3ND4+3mW8xo8fb3x8fMzJkyeNMcYcPXrU+Pr6mj59+rj0e/rpp4scgbiSwjlB9evXL3bOUHEuXLhgmjRpYho3bmx+/PFHl9curSUqKsoEBwebH374wdn2+eefG29vbzNkyBBnW79+/Yyvr68zuBtjzH//+1/j5+dnbr31Vmdb4XvTpUsXlyM1+fn5Jjg42ERFRZlz58452wvDRGmCkCQzY8YMl3255ZZbTHR0tEvb5eOYn59vWrdubXr06OHSXtIcoREjRpiwsDBz/Phxl/b777/fBAQEONd/1113mVatWhVZHtbEVWOoknr27Kn09HT17dtXn3/+uebMmaOEhAQ1atRI77//vrPfe++9J4fDoalTp8rb2/Xj7OXl5fzvWrVqOf/71KlTOn78uLp27aozZ85o375911znzp079dVXX2nQoEH64YcfdPz4cR0/flynT5/W7bffrk8//VQOh8NlmVGjRpVpGyNHjlTNmjWdz0ePHq0aNWpo3bp1JS6zbt06hYaGauDAgc62mjVr6vHHH9dPP/2kv//972Wq4dL1xsTEqEuXLs62unXrauTIkTp48KD27t17Test5O/vL19fX0nSHXfcUerlLh3f8+fP64cfftCNN96owMBAZWZmFuk/cuRIl89H165dVVBQoG+//VaStGnTJuXn52vs2LEu/caNG1em/YmJidGoUaN04sQJzZo1SyEhIVddZseOHcrKytK4ceOKzLEqrOXIkSPauXOnhg0bpvr16ztfb9u2rXr27On8bBQUFGjDhg3q16+fmjZt6uwXFhamQYMGacuWLcrLy3PZxsMPPywfHx/n83//+986evSoRo0a5RwbSRo2bJgCAgJK/V5c/rnv2rWrDhw44NJ26Tj++OOPys3NVdeuXYsdw8sZY/TOO+8oMTFRxhjn3+Lx48eVkJCg3Nxc53oCAwP13Xffadu2baWuH56LIIQqq2PHjlq7dq1+/PFHZWRkaNKkSTp16pT69+/v/ML95ptv5O3trcjIyCuua8+ePbr77rsVEBAgf39/NWjQQA8++KAkKTc395pr/OqrryRJQ4cOVYMGDVwer776qs6dO1dk/U2aNCnTNpo3b+7yvG7dugoLC9PBgwdLXObbb79V8+bNi4TDm2++2fn6tfj222910003FWn/pest9Nhjj8nb21uNGzfWk08+qfPnz5dquZ9//llTp05VeHi4bDabgoKC1KBBA508ebLY8b3hhhtcnterV0/SxS/fS/fj8ve+QYMGzr6l1bFjR0lShw4dStX/m2++kSS1bt26xD6F9ZU0FoVh/NixYzpz5kyJ/RwOhw4fPuzSfvnns6T3ombNmi7h6krsdrsaNGjg0lavXj3n+13oww8/1K9+9SvZ7XbVr19fDRo00KJFi0r1N3rs2DGdPHlSS5cuLfK3OHz4cEn/u9BiwoQJqlu3rmJiYtS8eXONGTNGn332Wan2BZ6Hq8ZQ5fn6+qpjx47q2LGjWrRooeHDh+utt95ScnJyqZY/efKkunXrJn9/f82YMUPNmjWT3W5XZmamJkyYUOSITVkULvvCCy8oKiqq2D5169Z1eX7pv3rxP2vXrtX777+vlJQUNW/eXH369NELL7ygp59++qrLjh07VsuXL9e4ceMUFxengIAAeXl56f777y92fC894nEpY8wv3o/qriI+nyW935f6xz/+ob59++rWW2/VwoULFRYWppo1a2r58uXOK++upHCcH3zwQQ0dOrTYPm3btpV0MQTu379fH374oVJTU/XOO+9o4cKFmjp1arH3s4JnIwihWin8V/WRI0ckSc2aNZPD4dDevXtLDCKbN2/WDz/8oLVr1+rWW291tmdlZRXpe+lpkNK0N2vWTNLFUzrx8fGl3o+y+Oqrr9S9e3fn859++klHjhxR7969S1ymcePG+s9//iOHw+FyVKjwNGDjxo0llbxfV1rv/v37i7Rfvt6yOnXqlB5//HG1b99ejz32mHx8fPSb3/xGzz77rAYOHHjVo2hvv/22hg4dqpdeesnZdvbsWZ08efKa6incj6+++srlqMexY8eKHMUob4Wfqd27d5f4mSqsr6SxCAoKUp06dWS321W7du0S+3l7eys8PPyK9Vz6XvTo0cPZfv78eWVlZaldu3al27GreOedd2S327V+/XrZbDZn+/Lly4v0Le5z26BBA/n5+amgoKBUf4t16tTRgAEDNGDAAOXn5+uee+7Rc889p0mTJnELAIvh1BiqpE8++aTYf50Xzn0oPNTfr18/eXt7a8aMGUX+5V+4fOG/Ri9dX35+vhYuXFhk/XXq1Cn2MHzhvVQu/2KNjo5Ws2bN9OKLL+qnn34qstyxY8dK3MfSWrp0qcspokWLFunChQu68847S1ymd+/eys7O1po1a5xtFy5c0Lx581S3bl1169ZNklS7dm1JRffrSuvNyMhQenq6s+306dNaunSpIiIirnqKsiRTpkzRkSNHtGTJEud4vfzyy/Lx8dFjjz121eV9fHyKfF7mzZungoKCa6onPj5eNWvW1Lx581zWWxk/E9K+fXs1adJEKSkpRcalsJawsDBFRUXpjTfecOmze/dubdiwwRmSfXx8dMcdd+ivf/2ry6nUnJwcrVq1Sl26dJG/v/8V6+nQoYMaNGigxYsXKz8/39m+YsWKaw6axfHx8ZGXl5fLmB08eLDYO0jXqVOnyLYLw/M777yj3bt3F1nm0r/FH374weU1X19fRUZGyhhT6tOx8BwcEUKVNHbsWJ05c0Z33323WrZsqfz8fG3dulVr1qxRRESE85z/jTfeqMmTJ2vmzJnq2rWr7rnnHtlsNm3btk0NGzbUrFmz1KlTJ9WrV09Dhw7V448/Li8vL61cubLYoBUdHa01a9YoKSlJHTt2VN26dZWYmKhmzZopMDBQixcvlp+fn+rUqaPY2Fg1adJEr776qu688061atVKw4cPV6NGjfT999/rk08+kb+/vz744INf9F7k5+fr9ttv13333af9+/dr4cKF6tKli/r27VviMiNHjtSSJUs0bNgwbd++XREREXr77bf12WefKSUlRX5+fpIungaJjIzUmjVr1KJFC9WvX1+tW7cucX7KxIkT9ec//1l33nmnHn/8cdWvX19vvPGGsrKy9M477xSZk1Qa27dv14IFCzRmzBiXeTSNGjXSjBkzlJSUpHfeeUe/+c1vSlzHr3/9a61cuVIBAQGKjIxUenq6Nm3apOuuu67M9UgXjy489dRTmjVrln7961+rd+/e2rFjhz7++GMFBQVd0zpLy9vbW4sWLVJiYqKioqI0fPhwhYWFad++fdqzZ4/Wr18v6eLp2DvvvFNxcXEaMWKEfv75Z82bN08BAQEuN2x89tlntXHjRnXp0kWPPvqoatSooSVLlujcuXOaM2fOVeupWbOmnn32WT3yyCPq0aOHBgwYoKysLC1fvrzUc4RKo0+fPpo7d6569eqlQYMG6ejRo1qwYIFuvPFG/ec//3HpGx0drU2bNmnu3Llq2LChmjRpotjYWM2ePVuffPKJYmNj9fDDDysyMlInTpxQZmamNm3apBMnTki6OBE/NDRUnTt3VkhIiL744gvNnz9fffr0cf5twELcdLUacEUff/yxeeihh0zLli1N3bp1nT+3MXbsWJOTk1Ok/+uvv25uueUWY7PZTL169Uy3bt3Mxo0bna9/9tln5le/+pWpVauWadiwofNyfEnmk08+cfb76aefzKBBg0xgYKDzhoqF/vrXv5rIyEhTo0aNIpcI79ixw9xzzz3muuuuMzabzTRu3Njcd999Ji0tzdmn8PL5Y8eOleo9uPyGivXq1TN169Y1DzzwgMsl08aUfEPF4cOHm6CgIOPr62vatGlT7E+EbN261URHRxtfX98y3VAxMDDQ2O12ExMT43Kfl0IqxeXzFy5cMO3btzcNGzY0ubm5xb4eFRVlrr/+enPq1KkS1/Pjjz8697Vu3bomISHB7Nu3r8jNDwvf023btrks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g7Vs2TIFBQWVaplJkyYpNzfX+Th8+HAFVwkAAKqLGu7ceFBQkHx8fJSTk+PSnpOTo9DQ0CL9v/nmGx08eFCJiYnONofDIUmqUaOG9u/fr2bNmrksY7PZZLPZKqB6AABQ3bn1iJCvr6+io6OVlpbmbHM4HEpLS1NcXFyR/i1bttSuXbu0c+dO56Nv377q3r27du7cyWkvAABQJm49IiRJSUlJGjp0qDp06KCYmBilpKTo9OnTGj58uCRpyJAhatSokWbNmiW73a7WrVu7LB8YGChJRdoBAACuxu1BaMCAATp27JimTp2q7OxsRUVFKTU11TmB+tChQ/L2rlZTmQAAQDXhZYwx7i6iMuXl5SkgIEC5ubny9/d3dzkAAKAUKur7m0MtAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsmq4uwAAqAwFDqOMrBM6euqsgv3simlSXz7eXu4uC4CbEYQAeLzU3Uc0/YO9OpJ71tkWFmBXcmKkerUOc2NlANyNU2MAPFrq7iMa/WamSwiSpOzcsxr9ZqZSdx9xU2UAqgKCEACPVeAwmv7BXpliXitsm/7BXhU4iusBwAoIQgA8VkbWiSJHgi5lJB3JPauMrBOVVxSAKoUgBMBjHT1Vcgi6ln4APA+TpQF4lEuvDjt+6lyplgn2s1dwVVfGFW2A+xCEAHiM4q4O8/aSSpoC5CUpNOBi8HAXrmgD3ItTYwA8QklXh10pBElScmKk246+cEUb4H4EIQDV3pWuDit0edYJDbBr0YPt3XbUhSvagKqBU2MAqr2rXR0mXTwy9EyfmxXkZ6sS83DKckVbXLPrKq8wwGIIQgCqvdJe9RXkZ9NdUY0quJrS4Yo2oGrg1BiAaq+0V325++qwS1XHmgFPRBACUO3FNKmvsAC7SjrR5aWLV2K58+qwy1XHmgFPRBAC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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot('data/wlasl/WLASL100_train.csv')" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+8UlEQVR4nO3de1zUVeL/8TcgzHgDNBTQyFuWkRcShaU00zAs17LWMi1vtVmmllK7apakVrpdzPKulfa1bXW738wb5bYWu7iilZlWimmt4C3BNEXh/P7wx6zDRWdwhhnm83o+HjwezeF8Zs5nPkPz9pzzOSfIGGMEAABgQcG+bgAAAICvEIQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYQAAIBlEYSAAHDNNdfommuu8XUznOTn56tfv3664IILFBQUpJkzZ/q6SR7RvHlzDR061NfN8AtlP3e7du1SUFCQlixZ4rM2Ae4iCMFvff311+rXr5+aNWsmu92upk2bqmfPnpo1a5bXXvP111+v8Av7v//9rx5//HFt3rzZa6/tC8eOHdPjjz+udevWefy5x44dq1WrVmnChAlaunSpevXqVWG9NWvWKCgoSJMnTy73u9zcXNWpU0f9+vXzePu8ZdmyZQoKCtKCBQsq/P2IESMUGhqqL7/8sppbFjieeuopvfvuu75uBgKFAfzQ559/bsLCwszFF19spk6dahYtWmQmTZpkrrvuOtOqVSuvvW7v3r1Ns2bNypVv2LDBSDKLFy/22mufj27duplu3bq5fdz+/fuNJJORkeHxNkVHR5s77rjDpboDBw40NpvNbN++3am8V69eJjw83Pz8888eb19VNWvWzAwZMuSsdXr16mUiIyNNXl6eU/m///1vExwcbP70pz95sYXVp+znrqSkxPz222/m1KlTXn3dunXrnvMaAK6q5esgBlTkySefVEREhDZs2KDIyEin3+3bt883jfKCo0ePqm7dur5uhlfs27ev3LWrzPPPP6+PP/5Y9913nz755BNJp3tWVq5cqRdffFFNmjTxYks9b968ebr88ss1duxYvf7665Kk4uJi3Xvvvbrooov0+OOP+7aBLnL38xkUFCS73e7FFgFe4OskBlTk0ksvNddcc43L9ZcuXWo6d+5sateubSIjI03Xrl3NqlWrHL9/9913zQ033GBiY2NNWFiYadmypZkyZYrTv1y7detmJDn9NGvWzHz66aflylWmd+hf//qXSUtLM+Hh4aZ27drm6quvNuvXr3dqY0ZGhpFkvvnmGzNgwAATGRlpEhISKj2nxYsXG0nmH//4hxk+fLhp2LChqV+/vhk0aJA5dOiQU92KeoTy8/PNXXfdZRo3bmxsNptp3769WbJkieP3ubm5FZ7XuXqHduzYYfr162caNGhgateubZKTk82HH35Yrt1lf85l4cKFRpJZsmSJ+eWXX0xMTIzp3LmzKS4uPuexu3btMiNGjDCXXHKJsdvtpmHDhqZfv34mNzfXqV5p29avX2/Gjh1roqKiTJ06dUzfvn3Nvn37nOqWlJSYqVOnmqZNm5ratWuba665xmzZssWlHiFjjHn66aeNJLN69WpjjDEzZswwkszHH398zmONOf2Zuv76601kZKSpU6eOadeunZk5c6ZTnczMTNOlSxdTp04dExERYW688UazdevWcs+Vk5NjevXqZerXr2/q1q1revToYbKysip8b9atW2dGjBhhGjVqZCIjIx2/X7BggWnZsqWx2+2mc+fO5rPPPiv3uSv9TJ35tzFkyBBTt25d89NPP5mbbrrJ1K1b10RFRZmHHnqoXM/RM888Y1JSUkzDhg2N3W43HTt2NG+88YZTnYo+W2dej59++skMGzbMNG7c2ISFhZn4+Hjz8ssvl3tPXnzxRRMfH+/4f0ZiYqL561//Wun1QOAiCMEvXXfddaZ+/frm66+/Pmfdxx9/3EgyV155pXnmmWfMCy+8YAYOHGjGjRvnqNO3b19z2223mWeeecbMmzfP3HrrrUaSefjhhx11Vq9ebRISEkxUVJRZunSpWbp0qXnnnXdMXl6emTJlipFkhg8f7vjdjh07jDGnv4zCwsJMSkqKee6558zzzz9v2rdvb8LCwsy///1vx/OXBqH4+Hhz0003mblz55o5c+ZUel6lX0zt2rUzXbt2NS+++KIZOXKkCQ4ONldffbUpKSlx1C37hXTs2DFz2WWXmdDQUDN27Fjz4osvmq5duxpJji/TX3/91cybN89IMjfffLPjvL788stK25SXl2eio6NN/fr1zcSJE82MGTNMhw4dTHBwsHn77beNMaeD0tKlS40k07NnT8fznktJSYm56qqrTFRUlBkwYIAJCQkxOTk55zzOGGPeeOMN06FDBzNp0iSzcOFC88gjj5gGDRqYZs2amaNHj5Z7T6+44grTo0cPM2vWLPPQQw+ZkJAQc9tttzk956OPPmokmRtuuMHMnj3b3HXXXaZJkyYmKirKpSB08uRJ06FDB9OqVSvz/fffm3r16pnbb7/dpfNZvXq1CQsLM82aNTMZGRlm3rx55oEHHjCpqamOOmvWrDG1atUyl1xyiXn66afN5MmTTVRUlGnQoIFTANyyZYupW7euiY2NNVOnTjXTp083LVq0MDabzfzrX/8q997Ex8ebbt26mVmzZpnp06cbY4x56aWXHH9jL774ohkzZoyJjIw0LVu2dCkI2e12c/nll5u77rrLzJs3z/zhD38wkszcuXOdzvvCCy80999/v5k9e7aZMWOGSUpKMpKcgvbSpUuNzWYzXbt2dXy2vvjiC2PM6c/nhRdeaOLi4syUKVPMvHnzzI033mgkmeeff97xHKWhu1+/fmbBggXmhRdeMHfffbd54IEHXLo+CCwEIfil1atXm5CQEBMSEmJSUlLMn//8Z7Nq1SpTVFTkVO/77783wcHB5uabby7Xc3BmUDh27Fi517j33ntNnTp1zPHjxx1l7s4RKikpMa1btzZpaWnlXq9FixamZ8+ejrLSIDRgwACX3oPSL6bExESn8y7taXjvvfccZWWD0MyZM40k89prrznKioqKTEpKiqlXr54pLCw0xrg/R2jMmDFGkvnnP//pKDty5Ihp0aKFad68udM1kGRGjhzp0vOW2rJliwkNDTWSzJgxY1w+rqLrm5WVZSSZ//u//3OUlb6nqampTtdr7NixJiQkxBw+fNgYY8y+fftMWFiY6d27t1O9Rx55pFwPxNmUzglq2LBhhXOGKnLq1CnTokUL06xZM/PLL784/e7MtiQkJJjGjRubgwcPOsq+/PJLExwcbAYPHuwo69u3rwkLC3MEd2OM+e9//2vq169vrr76akdZ6XvTpUsXp56aoqIi07hxY5OQkGBOnDjhKC8NE64EIUlmypQpTudyxRVXmMTERKeystexqKjItG3b1vTo0cOpvLI5QnfffbeJjY01Bw4ccCq//fbbTUREhOP5b7rpJnP55ZeXOx7WxF1j8Es9e/ZUVlaWbrzxRn355Zd6+umnlZaWpqZNm+r999931Hv33XdVUlKiSZMmKTjY+eMcFBTk+O/atWs7/vvIkSM6cOCAunbtqmPHjmnbtm1VbufmzZv1/fffa+DAgTp48KAOHDigAwcO6OjRo7r22mv12WefqaSkxOmY++67z63XGD58uEJDQx2PR4wYoVq1amnFihWVHrNixQrFxMRowIABjrLQ0FA98MAD+vXXX/WPf/zDrTac+bxJSUnq0qWLo6xevXoaPny4du3apa1bt1bpeUuFh4crLCxMknTddde5fNyZ1/fkyZM6ePCgLr74YkVGRionJ6dc/eHDhzt9Prp27ari4mL9+OOPkqS1a9eqqKhIo0ePdqo3ZswYt84nKSlJ9913nw4dOqRp06YpOjr6nMds2rRJubm5GjNmTLk5VqVt2bt3rzZv3qyhQ4eqYcOGjt+3b99ePXv2dHw2iouLtXr1avXt21ctW7Z01IuNjdXAgQO1fv16FRYWOr3GPffco5CQEMfj//znP9q3b5/uu+8+x7WRpKFDhyoiIsLl96Ls575r167auXOnU9mZ1/GXX35RQUGBunbtWuE1LMsYo7feekt9+vSRMcbxt3jgwAGlpaWpoKDA8TyRkZH66aeftGHDBpfbj8BFEILf6ty5s95++2398ssvys7O1oQJE3TkyBH169fP8YW7Y8cOBQcHKz4+/qzP9c033+jmm29WRESEwsPD1ahRI915552SpIKCgiq38fvvv5ckDRkyRI0aNXL6eemll3TixIlyz9+iRQu3XqN169ZOj+vVq6fY2Fjt2rWr0mN+/PFHtW7dulw4vOyyyxy/r4off/xRl156abny833eUqNGjVJwcLCaNWumhx56SCdPnnTpuN9++02TJk1SXFycbDaboqKi1KhRIx0+fLjC63vRRRc5PW7QoIGk01++Z55H2fe+UaNGjrqu6ty5sySpU6dOLtXfsWOHJKlt27aV1iltX2XXojSM79+/X8eOHau0XklJifbs2eNUXvbzWdl7ERoa6hSuzsZut6tRo0ZOZQ0aNHC836U+/PBD/e53v5PdblfDhg3VqFEjzZs3z6W/0f379+vw4cNauHBhub/FYcOGSfrfjRbjxo1TvXr1lJSUpNatW2vkyJH6/PPPXToXBB7uGoPfCwsLU+fOndW5c2ddcsklGjZsmN544w1lZGS4dPzhw4fVrVs3hYeHa8qUKWrVqpXsdrtycnI0bty4cj027ig99plnnlFCQkKFderVq+f0+Mx/9eJ/3n77bb3//vuaOXOmWrdurd69e+uZZ57RI488cs5jR48ercWLF2vMmDFKSUlRRESEgoKCdPvtt1d4fc/s8TiTMea8z6Om88bns7L3+0z//Oc/deONN+rqq6/W3LlzFRsbq9DQUC1evNhx593ZlF7nO++8U0OGDKmwTvv27SWdDoHbt2/Xhx9+qJUrV+qtt97S3LlzNWnSpArXs0JgIwihRin9V/XevXslSa1atVJJSYm2bt1aaRBZt26dDh48qLfffltXX321ozw3N7dc3TOHQVwpb9WqlaTTQzqpqakun4c7vv/+e3Xv3t3x+Ndff9XevXt1ww03VHpMs2bN9NVXX6mkpMSpV6h0GLBZs2aSKj+vsz3v9u3by5WXfV53HTlyRA888IA6duyoUaNGKSQkRH/4wx/0xBNPaMCAAefsRXvzzTc1ZMgQPffcc46y48eP6/Dhw1VqT+l5fP/99069Hvv37y/Xi+FppZ+pLVu2VPqZKm1fZdciKipKdevWld1uV506dSqtFxwcrLi4uLO258z3okePHo7ykydPKjc3Vx06dHDtxM7hrbfekt1u16pVq2Sz2RzlixcvLle3os9to0aNVL9+fRUXF7v0t1i3bl31799f/fv3V1FRkW655RY9+eSTmjBhAksAWAxDY/BLn376aYX/Oi+d+1Da1d+3b18FBwdrypQp5f7lX3p86b9Gz3y+oqIizZ07t9zz161bt8Ju+NK1VMp+sSYmJqpVq1Z69tln9euvv5Y7bv/+/ZWeo6sWLlzoNEQ0b948nTp1Stdff32lx9xwww3Ky8vT8uXLHWWnTp3SrFmzVK9ePXXr1k2SVKdOHUnlz+tsz5udna2srCxH2dGjR7Vw4UI1b978nEOUlXn00Ue1d+9eLViwwHG9XnjhBYWEhGjUqFHnPD4kJKTc52XWrFkqLi6uUntSU1MVGhqqWbNmOT1vdWwT0rFjR7Vo0UIzZ84sd11K2xIbG6uEhAS9+uqrTnW2bNmi1atXO0JySEiIrrvuOr333ntOQ6n5+fl6/fXX1aVLF4WHh5+1PZ06dVKjRo00f/58FRUVOcqXLFlS5aBZkZCQEAUFBTlds127dlW4gnTdunXLvXZpeH7rrbe0ZcuWcsec+bd48OBBp9+FhYUpPj5exhiXh2MROOgRgl8aPXq0jh07pptvvllt2rRRUVGRvvjiCy1fvlzNmzd3jPlffPHFmjhxoqZOnaquXbvqlltukc1m04YNG9SkSRNNmzZNV155pRo0aKAhQ4bogQceUFBQkJYuXVph0EpMTNTy5cuVnp6uzp07q169eurTp49atWqlyMhIzZ8/X/Xr11fdunWVnJysFi1a6KWXXtL111+vyy+/XMOGDVPTpk31888/69NPP1V4eLg++OCD83ovioqKdO211+q2227T9u3bNXfuXHXp0kU33nhjpccMHz5cCxYs0NChQ7Vx40Y1b95cb775pj7//HPNnDlT9evXl3R6GCQ+Pl7Lly/XJZdcooYNG6pt27aVzk8ZP368/va3v+n666/XAw88oIYNG+rVV19Vbm6u3nrrrXJzklyxceNGzZkzRyNHjnSaR9O0aVNNmTJF6enpeuutt/SHP/yh0uf4/e9/r6VLlyoiIkLx8fHKysrS2rVrdcEFF7jdHul078LDDz+sadOm6fe//71uuOEGbdq0SR9//LGioqKq9JyuCg4O1rx589SnTx8lJCRo2LBhio2N1bZt2/TNN99o1apVkk4Px15//fVKSUnR3Xffrd9++02zZs1SRESE04KNTzzxhNasWaMuXbro/vvvV61atbRgwQKdOHFCTz/99DnbExoaqieeeEL33nuvevToof79+ys3N1eLFy92eY6QK3r37q0ZM2aoV69eGjhwoPbt26c5c+bo4osv1ldffeVUNzExUWvXrtWMGTPUpEkTtWjRQsnJyZo+fbo+/fRTJScn65577lF8fLwOHTqknJwcrV27VocOHZJ0eiJ+TEyMrrrqKkVHR+vbb7/V7Nmz1bt3b8ffBizER3erAWf18ccfm7vuusu0adPG1KtXz7HdxujRo01+fn65+q+88oq54oorjM1mMw0aNDDdunUza9ascfz+888/N7/73e9M7dq1TZMmTRy340syn376qaPer7/+agYOHGgiIyMdCyqWeu+990x8fLypVatWuVuEN23aZG655RZzwQUXGJvNZpo1a2Zuu+02k5mZ6ahTevv8/v37XXoPyi6o2KBBA1OvXj1zxx13ON0ybUzlCyoOGzbMREVFmbCwMNOuXbsKtwj54osvTGJiogkLC3NrQcXIyEhjt9tNUlKS0zovpeTC7fOnTp0yHTt2NE2aNDEFBQUV/j4hIcFceOGF5siRI5U+zy+//OI413r16pm0tDSzbdu2cosflr6nGzZscDq+dNHMMz8LxcXFZvLkySY2NrZKCyqe6zXPZf369aZnz56ORRDbt29vZs2a5VRn7dq15qqrrjK1a9c24eHhpk+fPpUuqJiWlmbq1atn6tSpY7p37+5Ye8fVds6dO9ex/lCnTp3cXlCxrNK/hzO9/PLLpnXr1sZms5k2bdqYxYsXV1hv27Zt5uqrrza1a9cut5xBfn6+GTlypImLizOhoaEmJibGXHvttWbhwoWOOgsWLDBXX3214++1VatW5k9/+lOFn0EEviBjmB0I+KMlS5Zo2LBh2rBhg8t3HAEA3MMcIQAAYFkEIQAAYFkEIQAAYFk+DUKfffaZ+vTpoyZNmigoKKjC2yTLWrdunTp27CibzaaLL75YS5Ys8Xo7AV8YOnSojDHMDwIAL/JpEDp69Kg6dOigOXPmuFQ/NzdXvXv3Vvfu3bV582aNGTNGf/zjHx23kwIAALjDb+4aCwoK0jvvvKO+fftWWmfcuHH66KOPnBbLuv3223X48GGtXLmyGloJAAACSY1aUDErK6vc0ulpaWln3RH6xIkTOnHihONxSUmJDh06pAsuuMDt7QUAAIBvGGN05MgRNWnSpEqLt1amRgWhvLw8RUdHO5VFR0ersLBQv/32W4WbBU6bNo1N9AAACBB79uzRhRde6LHnq1FBqComTJig9PR0x+OCggJddNFF2rNnzzn32AEAAP6hsLBQcXFxHt8GpUYFoZiYGOXn5zuV5efnKzw8vMLeIEmy2WxOOxmXCg8PJwgBAFDDeHpaS41aRyglJUWZmZlOZWvWrFFKSoqPWgQAAGoynwahX3/9VZs3b9bmzZslnb49fvPmzdq9e7ek08NagwcPdtS/7777tHPnTv35z3/Wtm3bNHfuXP3973/X2LFjfdF8AABQw/l0aOw///mPunfv7nhcOpdnyJAhWrJkifbu3esIRZLUokULffTRRxo7dqxeeOEFXXjhhXrppZeUlpZW7W23guISo+zcQ9p35Lga17crqUVDhQRzpx0AIHD4zTpC1aWwsFAREREqKChgjtBZrNyyV5M/2Kq9BccdZbERdmX0iVevtrE+bBkAwIq89f1do+YIoXqs3LJXI17LcQpBkpRXcFwjXsvRyi17fdQyAAA8iyAEJ8UlRpM/2KqKuglLyyZ/sFXFJZbqSAQABCiCEJxk5x4q1xN0JiNpb8FxZeceqr5GAQDgJQQhONl3pPIQVJV6AAD4M4IQnDSub/doPQAA/BlBCE6SWjRUbIRdld0kH6TTd48ltWhYnc0CAMArCEJwEhIcpIw+8ZJULgyVPs7oE896QgCAgEAQQjm92sZq3p0dFRPhPPwVE2HXvDs7so4QACBg1KhNV1F9erWNVc/4GFaWBgAENIIQKhUSHKSUVhf4uhkAAHgNQ2MAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyCEIAAMCyavm6AQAAAGUVlxhl5x7SviPH1bi+XW0u8E5kIQgBAAC/snLLXk3+YKv2Fhx3lDWyFXvltQhCAADAb6zcslcjXsuRKVO+r/CEV16POUIAAMAvFJcYTf5ga7kQJKnCMk8gCAEAAL+QnXvIaTisOhCEAACAX9h3pHpDkEQQAgAAfqJxfXu1vyZBCAAA+IWkFg0VG2FXUDW+JkEIAAD4hZDgIGX0iZekcmHIW+GIIAQAAPxGr7axmndnR8VEOA+TNQ63eeX1gowx3rojzS8VFhYqIiJCBQUFCg8P93VzAABABSpaWbphg0iPf3+zoCLgQWX/cJNaNFRIcHWOdgNAYAgJDlJKqwscjwsLC73yOgQhwEMqWhI+NsKujD7x6tU21octAwBUhjlCgAeULglfdiGwvILjGvFajlZu2eujlgEAzoYgBJwnV5aEn/zBVhWXWGo6HgDUCAQh4Dyda0l4I2lvwXFl5x6qvkYBAFzCHCHgPLm6JLwvlo73JSaOA6gJCELAeXJ1SXhfLB3vK0wcB1BTMDQGnKdzLQkfpNMhIKlFw+psls9UZeJ4cYlR1o6Dem/zz8racZD5VACqDT1CwHkqXRJ+xGs5CpKcJk2XhqOMPvGWGBY618TxIJ2eON4zPsbxftB7BMCX6BECPKCyJeFjIuyad2dHy3yhuztxnGUHAPgaPUKAh/RqG6ue8TEBPUH4XBOg3Zk4XpXeIwDwNIIQ4EFll4QPJK4MYbkzcdyd3qNAfU8B+B5DYwDOydUhLHcmjrPsAAB/QBACLMrVO7XcWTm7dOK4pHJhqOzEcZYdAOAPGBoDLMidO7XcHcIqnThe9vljyjx/ae9RXsHxCkNW0P8/xirLDgDwDYIQYDGlw1xlw0fpMFfZu9yqMoTlysRxlh0A4A8YGgMspCobxFZlCMvV7TVYdgCAr9EjBPg5T+7ZVZU7tdwdwnJ3gUQrLDsAwH8RhAA/5ulVl91d56c0nNze+SLNXPvdOYew3B12KxXIyw4A8G8EIcBPVTVUnI2rw1y7DhxTl7984hTAIuuESpIOHzvpKDtzAnR1LJDIjvYAPI0gBPghb4UKV4a5IuqEauba78r9vuDYSRlJY1Nbq3lU3XJBxNsLJLInGQBvYLI04Ifc3bPLVeda56c0/JwtgC3bsEe/b99EKa0uqPL2GmWda00j9iQD4C30CAF+yJurLp9tnZ/bO8fp+bXfV3rs2Xp1qrpA4rl6etiTDIA3EYQAP+TtVZcru1Prw6/+69LxFQWwqiyQ6Mo8qIjaYexJBsBrfD40NmfOHDVv3lx2u13JycnKzs4+a/2ZM2fq0ksvVe3atRUXF6exY8fq+HH2IkJgcWfPrqoqvVPrpoSmjmGu8wlg7myvIbm+plFewW8utYk9yQBUhU+D0PLly5Wenq6MjAzl5OSoQ4cOSktL0759+yqs//rrr2v8+PHKyMjQt99+q5dfflnLly/XI488Us0tB7zL3VDhKecbwNxZINHVeVCHjha51Hb2JANQFT4dGpsxY4buueceDRs2TJI0f/58ffTRR3rllVc0fvz4cvW/+OILXXXVVRo4cKAkqXnz5howYID+/e9/V2u7gerg6p5dnuSJbS9cXSDR1R6chvVs7EkGwGt8FoSKioq0ceNGTZgwwVEWHBys1NRUZWVlVXjMlVdeqddee03Z2dlKSkrSzp07tWLFCg0aNKjS1zlx4oROnDjheFxYWOi5kwC8zBerLnsigLmyQKKrPTgx4Xb2JAPgNT4LQgcOHFBxcbGio6OdyqOjo7Vt27YKjxk4cKAOHDigLl26yBijU6dO6b777jvr0Ni0adM0efJkj7YdqE6eWHXZ3YUIqyOAuTO5OiQ4qNp7xwBYQ426a2zdunV66qmnNHfuXCUnJ+uHH37Qgw8+qKlTp+qxxx6r8JgJEyYoPT3d8biwsFBxcXHV1WTA56q6EKG3t71wdxiOPckAeIPPglBUVJRCQkKUn5/vVJ6fn6+YmJgKj3nsscc0aNAg/fGPf5QktWvXTkePHtXw4cM1ceJEBQeXn/tts9lks9k8fwJADeCNbTo8yd1hOPYkA+BpPgtCYWFhSkxMVGZmpvr27StJKikpUWZmpkaNGlXhMceOHSsXdkJCQiRJxlTUuQ5YV01ZiJCeHgC+5NOhsfT0dA0ZMkSdOnVSUlKSZs6cqaNHjzruIhs8eLCaNm2qadOmSZL69OmjGTNm6IorrnAMjT322GPq06ePIxABOM2Te395e7NTenoA+IpPg1D//v21f/9+TZo0SXl5eUpISNDKlSsdE6h3797t1AP06KOPKigoSI8++qh+/vlnNWrUSH369NGTTz7pq1MA/Jantunw981O2ZEewPkIMhYbUyosLFRERIQKCgoUHh7u6+YAXpO146AGLPrXOev97Z7fVdobU9kco9KY4es5Rv4e0gB4jre+v32+xQYA7zjfVaJd3QKj7E7xrjjXbvOuYEd6AJ5Qo26fB2oaXw7bnO8q0Z6cY3QmT/Ti1JSJ4AD8H0EI8BJ/GLY5n1WiPTXH6Eyeup3fWyENgPUQhAAv8Kf1e6p6e/r57ERfEU/24ngjpAGwJuYIAR7mzbk1VVV6e/pNCU2V0uoCl4aLzneOUVnu9OKci6dDGgDrIggBHubJL3xfKp1jJKlcGKrKZqee7MXxdEgDYF0EIcDDAmnYpnSOUUyEc89KTITdreG94hKjA0dOuFTXlV4cT4c0ANbFHCHAwwJt2OZ8t8CoaNJ4Rc7cbd7VdrEjPYDzRRACPKx02Cav4HiF84Tc/cL3B1XdAqOySeNlVbUXh33KAJwvghDgYee7fk+gONuk8bLOpxeHfcoAnA/mCAFe4Km5NTXZuSaNl3qs92VaP66HJd4TAP6HHiHAS6w+bOPqZPCo+jbLvCcA/A9BCPAiKw/bBNqkcQCBiSAE+JAv9yLztkCcNA4g8BCEAB/xh73IvIlJ4wBqAiZLAz5Qelt52cnEpXuRrdyy10ct8yxvTxovLjHK2nFQ723+WVk7DlbrtiUAAgM9QkA18+TmozWBtyaNB3qPGoDqQY8QUM0CZS8yd1Rl09ezsUqPGgDvIwgB1SyQ9iLzhXP1qEmne9QYJgPgCoIQUM24rbxqSucDPb/mO8v1qAHwHuYIAefJ3Vvgua3cfa5u3HometQAuIIgBJyHqkzY5bZy97i6cWtZ9KgBcAVDY0AVnc+EXfYic407G7eWCtLpMEqPGgBX0CMEVIEnboGv6m3lgbwadVmubtxaih41AO4iCAFV4M4t8Gfba8zdvcistnaOu/N8YgL4vQDgHQQhoAp8cQt8ZXNlSofiAnFIzdV5PqO6t9JVFzeq9t4xK/XOAYGKIARUQXXfAu+t1aj9/Yvc1Tvsxva8tNqHFK3WOwcEKoIQUAXVfQu8p4bizlQTvsg9dYedp8/Vir1zQKDirjGgCkq/oKX/fSGX8saEXU8PxdWkLSrO9w47T58rK1sDgYUeIaCKSr+gy/Y0eGPCrieH4mripq/nc4edp8/VG71zqHn8fVgZriMIAefBWzurl+XJobia+kXu7h12knfOlb3iUBOGleE6hsaA8+TpndUrew1PDcVZ6YvcG+fKXnHWVpOGleEaghBQQ3hqNWorfZF741xLe+cqi5ysbB24mB8WmBgaA2oQTwzFWWnTV2+cK3vFWVdNHVbG2dEjBNQw5zsUV913vPmSt86VveKsyUrDylZCjxBgQdV5x5uveetcq2uiPPyHlYaVrSTIGGOpwczCwkJFRESooKBA4eHhvm4O4FNWugXYSucK7yguMeryl0/OOdS6flwPPlte4K3vb3qEAAuryi3pNZWVzhXewfywwMQcIQAAXMT8sMBDjxAAAG5gflhgIQgBAOAmhloDB0NjAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsghCAADAsnwehObMmaPmzZvLbrcrOTlZ2dnZZ61/+PBhjRw5UrGxsbLZbLrkkku0YsWKamotAAAIJLV8+eLLly9Xenq65s+fr+TkZM2cOVNpaWnavn27GjduXK5+UVGRevbsqcaNG+vNN99U06ZN9eOPPyoyMrL6Gw8AAGq8IGOM8dWLJycnq3Pnzpo9e7YkqaSkRHFxcRo9erTGjx9frv78+fP1zDPPaNu2bQoNDa3SaxYWFioiIkIFBQUKDw8/r/YDAIDq4a3vb58NjRUVFWnjxo1KTU39X2OCg5WamqqsrKwKj3n//feVkpKikSNHKjo6Wm3bttVTTz2l4uLiSl/nxIkTKiwsdPoBAACQfBiEDhw4oOLiYkVHRzuVR0dHKy8vr8Jj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tcrExsaasWPHVnPLA8+KFSvMxIkTzdtvv20kmXfeeees9Xfu3Gnq1Klj0tPTzdatW82sWbNMSEiIWblypVuvG3BBKCkpyYwcOdLxuLi42DRp0sRMmzatwvq33Xab6d27t1NZcnKyuffee73aTitw91qUderUKVO/fn3z6quvequJllKV63Hq1Clz5ZVXmpdeeskMGTKEIOQh7l6LefPmmZYtW5qioqLqaqJluHstRo4caXr06OFUlp6ebq666iqvttNqXAlCf/7zn83ll1/uVNa/f3+Tlpbm1msF1NBYUVGRNm7cqNTUVEdZcHCwUlNTlZWVVeExWVlZTvUlKS0trdL6cE1VrkVZx44d08mTJz2+wZ4VVfV6TJkyRY0bN9bdd99dHc20hKpci/fff18pKSkaOXKkoqOj1bZtWz311FMqLi6urmYHpKpciyuvvFIbN250DJ/t3LlTK1as0A033FAtbcb/eOr72y9WlvaUAwcOqLi42LE9R6no6Ght27atwmPy8vIqrJ+Xl+e1dlpBVa5FWePGjVOTJk3KfdDhvqpcj/Xr1+vll1/W5s2bq6GF1lGVa7Fz50598sknuuOOO7RixQr98MMPuv/++3Xy5EllZGRUR7MDUlWuxcCBA3XgwAF16dJFxhidOnVK9913nx555JHqaDLOUNn3d2FhoX777TfVrl3bpecJqB4hBI7p06dr2bJleuedd2S3233dHMs5cuSIBg0apEWLFikqKsrXzbG8kpISNW7cWAsXLlRiYqL69++viRMnav78+b5umuWsW7dOTz31lObOnaucnBy9/fbb+uijjzR16lRfNw1VFFA9QlFRUQoJCVF+fr5TeX5+vmJiYio8JiYmxq36cE1VrkWpZ599VtOnT9fatWvVvn17bzbTMty9Hjt27NCuXbvUp08fR1lJSYkkqVatWtq+fbtatWrl3UYHqKr8bcTGxio0NFQhISGOsssuu0x5eXkqKipSWFiYV9scqKpyLR577DENGjRIf/zjHyVJ7dq109GjRzV8+HBNnDjRaZNweFdl39/h4eEu9wZJAdYjFBYWpsTERGVmZjrKSkpKlJmZqZSUlAqPSUlJcaovSWvWrKm0PlxTlWshSU8//bSmTp2qlStXqlOnTtXRVEtw93q0adNGX3/9tTZv3uz4ufHGG9W9e3dt3rxZcXFx1dn8gFKVv42rrrpKP/zwgyOMStJ3332n2NhYQtB5qMq1OHbsWLmwUxpQDVt3ViuPfX+7N4/b/y1btszYbDazZMkSs3XrVjN8+HATGRlp8vLyjDHGDBo0yIwfP95R//PPPze1atUyzz77rPn2229NRkYGt897iLvXYvr06SYsLMy8+eabZu/evY6fI0eO+OoUAoq716Ms7hrzHHevxe7du039+vXNqFGjzPbt282HH35oGjdubJ544glfnULAcPdaZGRkmPr165u//e1vZufOnWb16tWmVatW5rbbbvPVKQSMI0eOmE2bNplNmzYZSWbGjBlm06ZN5scffzTGGDN+/HgzaNAgR/3S2+f/9Kc/mW+//dbMmTOH2+dLzZo1y1x00UUmLCzMJCUlmX/961+O33Xr1s0MGTLEqf7f//53c8kll5iwsDBz+eWXm48++qiaWxy43LkWzZo1M5LK/WRkZFR/wwOUu38bZyIIeZa71+KLL74wycnJxmazmZYtW5onn3zSnDp1qppbHZjcuRYnT540jz/+uGnVqpWx2+0mLi7O3H///eaXX36p/oYHmE8//bTC74DS93/IkCGmW7du5Y5JSEgwYWFhpmXLlmbx4sVuv26QMfTlAQAAawqoOUIAAADuIAgBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBAADLIggBqNGKi4t15ZVX6pZbbnEqLygoUFxcnCZOnOijlgGoCVhZGkCN99133ykhIUGLFi3SHXfcIUkaPHiwvvzyS23YsIGNSQFUiiAEICC8+OKLevzxx/XNN98oOztbt956qzZs2KAOHTr4umkA/BhBCEBAMMaoR48eCgkJ0ddff63Ro0fr0Ucf9XWzAPg5ghCAgLFt2zZddtllateunXJyclSrVi1fNwmAn2OyNICA8corr6hOnTrKzc3VTz/95OvmAKgB6BECEBC++OILdevWTatXr9YTTzwhSVq7dq2CgoJ83DIA/oweIQA13rFjxzR06FCNGDFC3bt318svv6zs7GzNnz/f100D4OfoEQJQ4z344INasWKFvvzyS9WpU0eStGDBAj388MP6+uuv1bx5c982EIDfIggBqNH+8Y9/6Nprr9W6devUpUsXp9+lpaXp1KlTDJEBqBRBCAAAWBZzhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGURhAAAgGX9P8sDe9jobEdbAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot('data/processed/spoter_train.csv')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[18 19 20 21 22 23 24 25 26 27 28 29 30]\n", " frame row_id type landmark_index x y z\n", "3801 25 25-face-0 face 0 0.498506 0.494856 -0.018860\n", "3802 25 25-face-1 face 1 0.506121 0.470006 -0.056474\n", "3803 25 25-face-2 face 2 0.505620 0.475341 -0.025482\n", "3804 25 25-face-3 face 3 0.497120 0.439673 -0.049148\n", "3805 25 25-face-4 face 4 0.506552 0.461902 -0.062083\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "customdata": [ [ "wrist_left" ], [ "thumbCMC_left" ], [ "thumbMP_left" ], [ "thumbIP_left" ], [ "thumbTip_left" ], [ "indexMCP_left" ], [ "indexPIP_left" ], [ "indexDIP_left" ], [ "indexTip_left" ], [ "middleMCP_left" ], [ "middlePIP_left" ], [ "middleDIP_left" ], [ "middleTip_left" ], [ "ringMCP_left" ], [ "ringPIP_left" ], [ "ringDIP_left" ], [ "ringTip_left" ], [ "littleMCP_left" ], [ "littlePIP_left" ], [ "littleDIP_left" ], [ "littleTip_left" ] ], "hovertemplate": "type=left_hand
x=%{x}
y=%{y}
name=%{customdata[0]}", "legendgroup": "left_hand", "marker": { "color": "#636efa", "symbol": "circle" }, "mode": "markers", "name": "left_hand", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null ], "xaxis": "x", "y": [ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null ], "yaxis": "y" }, { "customdata": [ [ "nose" ], [ "leftEye" ], [ "rightEye" ], [ "leftEar" ], [ "rightEar" ], [ "leftShoulder" ], [ "rightShoulder" ], [ "leftElbow" ], [ "rightElbow" ], [ "leftWrist" ], [ "rightWrist" ] ], "hovertemplate": "type=pose
x=%{x}
y=%{y}
name=%{customdata[0]}", "legendgroup": "pose", "marker": { "color": "#EF553B", "symbol": "circle" }, "mode": "markers", "name": "pose", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0.5037816762924194, 0.544114351272583, 0.47258099913597107, 0.6112894415855408, 0.42202046513557434, 0.790356457233429, 0.30560430884361267, 0.8586887121200562, 0.052559275180101395, 0.8901190161705017, 0.14568309485912323 ], "xaxis": "x", "y": [ 0.5385957062244415, 0.5870676934719086, 0.5835375487804413, 0.5667203366756439, 0.5620827376842499, 0.3601607084274292, 0.3561617136001587, 0.10383915901184082, 0.12815016508102417, -0.1593785285949707, 0.4648846983909607 ], "yaxis": "y" }, { "customdata": [ [ "wrist_right" ], [ "thumbCMC_right" ], [ "thumbMP_right" ], [ "thumbIP_right" ], [ "thumbTip_right" ], [ "indexMCP_right" ], [ "indexPIP_right" ], [ "indexDIP_right" ], [ "indexTip_right" ], [ "middleMCP_right" ], [ "middlePIP_right" ], [ "middleDIP_right" ], [ "middleTip_right" ], [ "ringMCP_right" ], [ "ringPIP_right" ], [ "ringDIP_right" ], [ "ringTip_right" ], [ "littleMCP_right" ], [ "littlePIP_right" ], [ "littleDIP_right" ], [ "littleTip_right" ] ], "hovertemplate": "type=right_hand
x=%{x}
y=%{y}
name=%{customdata[0]}", "legendgroup": "right_hand", "marker": { "color": "#00cc96", "symbol": "circle" }, "mode": "markers", "name": "right_hand", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ 0.1788196861743927, 0.23843127489089966, 0.25467628240585327, 0.27044928073883057, 0.2871263027191162, 0.19056828320026398, 0.2649158835411072, 0.3157113492488861, 0.3494824171066284, 0.18622460961341858, 0.2733367681503296, 0.32277774810791016, 0.3569425642490387, 0.19574135541915894, 0.2806362509727478, 0.3286181688308716, 0.36066585779190063, 0.21657982468605042, 0.2816353738307953, 0.31945061683654785, 0.34714818000793457 ], "xaxis": "x", "y": [ 0.4631972312927246, 0.49802637100219727, 0.5355206429958344, 0.5633883774280548, 0.5824070870876312, 0.5867454409599304, 0.6103077828884125, 0.6078206300735474, 0.6010101139545441, 0.5849654078483582, 0.6130928993225098, 0.6087997257709503, 0.6008164584636688, 0.5775772035121918, 0.6042222082614899, 0.6019154489040375, 0.5936585664749146, 0.564491868019104, 0.5853257775306702, 0.5884504020214081, 0.5863424837589264 ], "yaxis": "y" } ], "layout": { "legend": { "title": { "text": "type" }, "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "constrain": "domain", "domain": [ 0, 1 ], "range": [ 0, 1 ], "title": { "text": "x" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "range": [ 0, 1 ], "scaleanchor": "x", "scaleratio": 1, "title": { "text": "y" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# read parquet file at data/train_landmark_files/2044/635217.parquet\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "df = pd.read_parquet('data/train_landmark_files/37779/254554888.parquet')\n", "\n", "# print all unique frame numbers\n", "print(df['frame'].unique())\n", "\n", "# filter where type is pose\n", "df = df[df['frame'] == 25]\n", "\n", "print(df.head())\n", "\n", "mapping = {\n", " 'pose_0': 'nose',\n", " 'pose_1': 'leftEye',\n", " 'pose_4': 'rightEye',\n", " 'pose_7': 'leftEar',\n", " 'pose_8': 'rightEar',\n", " 'pose_11': 'leftShoulder',\n", " 'pose_12': 'rightShoulder',\n", " 'pose_13': 'leftElbow',\n", " 'pose_14': 'rightElbow',\n", " 'pose_15': 'leftWrist',\n", " 'pose_16': 'rightWrist',\n", "\n", " 'left_hand_0': 'wrist_left',\n", " 'left_hand_1': 'thumbCMC_left',\n", " 'left_hand_2': 'thumbMP_left',\n", " 'left_hand_3': 'thumbIP_left',\n", " 'left_hand_4': 'thumbTip_left',\n", " 'left_hand_5': 'indexMCP_left',\n", " 'left_hand_6': 'indexPIP_left',\n", " 'left_hand_7': 'indexDIP_left',\n", " 'left_hand_8': 'indexTip_left',\n", " 'left_hand_9': 'middleMCP_left',\n", " 'left_hand_10': 'middlePIP_left',\n", " 'left_hand_11': 'middleDIP_left',\n", " 'left_hand_12': 'middleTip_left',\n", " 'left_hand_13': 'ringMCP_left',\n", " 'left_hand_14': 'ringPIP_left',\n", " 'left_hand_15': 'ringDIP_left',\n", " 'left_hand_16': 'ringTip_left',\n", " 'left_hand_17': 'littleMCP_left',\n", " 'left_hand_18': 'littlePIP_left',\n", " 'left_hand_19': 'littleDIP_left',\n", " 'left_hand_20': 'littleTip_left',\n", "\n", " 'right_hand_0': 'wrist_right',\n", " 'right_hand_1': 'thumbCMC_right',\n", " 'right_hand_2': 'thumbMP_right',\n", " 'right_hand_3': 'thumbIP_right',\n", " 'right_hand_4': 'thumbTip_right',\n", " 'right_hand_5': 'indexMCP_right',\n", " 'right_hand_6': 'indexPIP_right',\n", " 'right_hand_7': 'indexDIP_right',\n", " 'right_hand_8': 'indexTip_right',\n", " 'right_hand_9': 'middleMCP_right',\n", " 'right_hand_10': 'middlePIP_right',\n", " 'right_hand_11': 'middleDIP_right',\n", " 'right_hand_12': 'middleTip_right',\n", " 'right_hand_13': 'ringMCP_right',\n", " 'right_hand_14': 'ringPIP_right',\n", " 'right_hand_15': 'ringDIP_right',\n", " 'right_hand_16': 'ringTip_right',\n", " 'right_hand_17': 'littleMCP_right',\n", " 'right_hand_18': 'littlePIP_right',\n", " 'right_hand_19': 'littleDIP_right',\n", " 'right_hand_20': 'littleTip_right',\n", " }\n", "\n", "# scatter plot and when hovering over the point, show the frame number\n", "import plotly.express as px\n", "\n", "# combine type and landmark index\n", "df['landmark_id'] = df['type'] + '_' + df['landmark_index'].astype(str)\n", "# only keep rows where landmark_id is in the mapping\n", "df = df[df['landmark_id'].isin(mapping.keys())]\n", "df['name'] = df['landmark_id'].apply(lambda x: mapping[x])\n", "\n", "# flip vertically\n", "df['y'] = 1 - df['y']\n", "\n", "# keep aspect ratio\n", "\n", "# scatter with px and set color of points based on the type\n", "fig = px.scatter(df, x='x', y='y', color='type', hover_data=['name'])\n", "\n", "fig.update_xaxes(range=[0, 1], constrain='domain')\n", "fig.update_yaxes(scaleanchor='x', scaleratio=1, range=[0, 1])\n", "\n", "# show the plot\n", "fig.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# from training dataset\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8.10" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }